在ADF中将Log Analytics API返回的嵌套JSON转为CSV
在Azure Data Factory中将Log Analytics API生成的JSON转换为CSV
针对你提供的Log Analytics API输出JSON结构(嵌套tables数组,包含columns表头定义和rows行数据),可以通过ADF的映射数据流完成转换,以下是具体步骤:
1. 配置JSON源组件
创建映射数据流,添加源组件并关联存储目标JSON的数据集:
- 在源的
JSON设置中,将Document form设为Single document - 在
Path to array中填入$['tables'],让数据流将tables数组内的每个对象作为单独行读取
此时数据流每行包含name、columns(表头数组)、rows(二维行数据数组)三个字段。
2. 提取表头数组
添加派生列组件,用表达式提取columns中的name字段组成表头数组:
columns.name
将该派生列命名为HeaderArray,结果为["PipelineName","Status","TimeGenerated","_ResourceId","Type"]格式的数组。
3. 展开行数据数组
添加展开组件,选择rows字段:
- 设置展开模式为
Flatten entire array to rows - 将展开后的字段命名为
RowData,此时每行对应原JSON中rows的一个子数组(如["Get_Tables","Succeeded",...])
4. 生成键值对数组
添加派生列组件,用zip函数将表头与行数据配对:
zip(HeaderArray, RowData)
将该列命名为KeyValuePairs,结果为[["PipelineName","Get_Tables"],["Status","Succeeded"],...]格式的键值对数组。
5. 展开键值对并透视成列
- 先添加展开组件,选择
KeyValuePairs字段,设置展开模式为Flatten entire array to rows,展开后得到每行包含Key(列名)和Value(对应值)的结构 - 再添加透视组件:
- 透视键选择
Key字段 - 透视值选择
Value字段 - 聚合方式选择
First(确保每个列名对应唯一值)
- 透视键选择
完成后,数据流会生成以PipelineName、Status等为列名,对应行数据的标准表格结构。
6. 导出为CSV
添加**接收器(Sink)**组件,关联CSV格式的输出数据集,配置输出路径后运行数据流即可生成目标CSV文件。
额外注意事项
- 如果JSON包含多个
tables元素,可在步骤1后添加过滤组件,保留name == 'PrimaryResult'的表数据 - 若需处理日期格式(如
TimeGenerated),可在派生列中用toString(toTimestamp(字段名), 'yyyy-MM-dd HH:mm:ss')转换格式 - 确保
HeaderArray与RowData的长度一致,避免映射错误
内容的提问来源于stack exchange,提问作者user12309502
相关产品推荐
相关产品推荐

