使用天蓝色数据工厂中的映射数据流将具有相应值的两个数组展平

Flatten two arrays having corresponding values using mapping data flow in azure data factory

我不熟悉 adf 中的数据流。我在一个文件夹中有一组 json 文件,我想解析并将两个数组展平为一个 csv。 json结构如下:

我想展平时间戳和值数组。 Timestamps 数组中的每个时间戳在 Values 数组中都有相应的值。即,Timestamps[i] 处的值是 Values[i]。输出应该有一行对应每个时间戳和对应的特定标签值。

谁能帮我实现这个目标

谢谢!

在您的数据流中,添加 2 个 Flatten 转换并指向每个转换中展开 属性 中的时间戳和值数组。

要在 2 个数组之间建立关联,请使用 mapIndex 函数并将数组合并在一起。然后,您将使用展平将其转化为关系形式。

mapIndex(时间戳,@( 时间戳 = #item,值 = 值[#index]))

我知道现在回答已经太晚了,但我在努力使示例正常工作时遇到了这个问题。借鉴 Kiran 写的内容并对其进行扩展,我将其写成一个完整的 end-to-end 博客 post 在这里;将来可能会节省其他人的时间

https://medium.com/kinandcartacreated/consuming-informatica-api-data-with-data-factory-and-data-flows-a3220f6190d3

您也可以使用 Azure Synapse Analytics,支持 OPENJSON 的无服务器 SQL 池来执行此操作:

SELECT
    JSON_VALUE( m.value, '$.Id' ) Id,
    JSON_VALUE( m.value, '$.Label' ) Label,
    t.value AS ts,
    v.value AS v
FROM
    OPENROWSET(
        BULK 'https://somestorage.dfs.core.windows.net/datalake/raw/json/metrics.json',
        FORMAT = 'CSV',
        FIELDQUOTE = '0x0b',
        FIELDTERMINATOR ='0x0b',
        ROWTERMINATOR = '0x0b'
    )
    WITH (
        jsonContent varchar(MAX)
    ) AS [result]
    CROSS APPLY OPENJSON( jsonContent, '$.MetricDataResults' ) m
        CROSS APPLY OPENJSON( m.value, '$.Timestamps' ) t
        CROSS APPLY OPENJSON( m.value, '$.Values' ) v
WHERE t.[key] = v.[key];

我的结果:

这是一种有效的替代方法,即付即用服务。