如何使用 ADF Dataflow 聚合 JSON?

问题描述 投票:0回答:1

我第一次使用 ADF 从 CSV 中获取数据并在 JSON 中详细说明它们

我的结构如下:

|father |date |record1 |record2 |...|recordn |
|father |date2|record1A|record2A|...|recordnA|
|father |date3|record1B|record2B|...|recordnA|
|father2|date |record1 |record2 |...|recordn |
|father2|date2|record1A|record2B|...|recordnA|

我想要的json结构是这样的:

{
    "father": "father"
    "Report": {
        "Date": "2021-11-25",
        "Values": {
            "record1": "record1",
            "record2": "record2",
            "record3": "record3",
            "recordn": "recordn"
        }
    },
    "Report": {
        "Date": "2021-11-26",
        "Values": {
            "record1": "record1A",
            "record2": "record2A",
            "record3": "record3A",
            "recordn": "recordnA"
        }
    },
    "Report": {
        "Date": "2021-11-27",
        "Values": {
            "record1": "record1B",
            "record2": "record2B",
            "record3": "record3B",
            "recordn": "recordnB"
        }
    }
}
{
    "father": "father2"
    "Report": {
        "Date": "2021-11-25",
        "Values": {
            "record1": "record1",
            "record2": "record2",
            "record3": "record3",
            "recordn": "recordn"
        }
    },
    "Report": {
        "Date": "2021-11-26",
        "Values": {
            "record1": "record1A",
            "record2": "record2A",
            "record3": "record3A",
            "recordn": "recordnA"
        }
    }
}

地点:

  • 每个子组的记录数量是固定的,并且 csv 的每一列都有一个记录
  • csv 的每一行都是父亲+日期的唯一组合,因此同一父亲和日期的记录列中不能存在具有不同值的两行

我正在使用数据流派生列(请注意下面的屏幕截图以查看数据流过程)来尝试到达某个地方。我能够用这个结构生成一个 json

{
    "STRUCTURE": {
        "FATHER": "FATHER"
        "Report": {
            "Date": "2021-11-03 00:00:00.0000000",
            "Values": {
                "record1": "record1A",
                "record2": "record2A",
                "record3": "record3A",
                "recordn": "recordnA"
            }
        }
    }
}

对于 csv 的每一行。 我不清楚如何创建一个结构来在我的父亲列上进行某种“分组依据”。我不知道是否需要在 adf 的导入源步骤或派生列中更改某些内容。问题是,显然派生的 clumns 会生成一个具有我编写的结构的列。所以每行都有一个 json 。不知道有没有办法聚合。 我愿意完全改变我的前景,并且根本不使用数据流。我知道如何使用参数,但我不知道如何在那里实现它

请给我一些建议

azure azure-data-factory
1个回答
0
投票

要将管道分隔的文本文件转换为嵌套 Json,请按照以下方法操作。

  • 进行源转换并获取其中的源数据集。

  • 进行派生列转换并添加一个名为 Values 的新列。

    Values
    列的表达式为:
    @(each(match(startsWith(name,'record')), $$ = $$))

  • 进行另一个派生列转换并添加一个名为

    Report
    的列。该列的表达式为
    @(date=date,   Values=Values)

  • 然后进行聚合转换并按

    father
    列对数据进行分组。

这样,您就可以聚合成嵌套 JSON。

© www.soinside.com 2019 - 2024. All rights reserved.