如何在Azure Data Factory中基于TSV路径读取JSON并合并数据?
解决方案:用Azure Data Factory数据流实现TSV与关联JSON的合并
1. 数据源配置
- 创建TSV文件数据源:选择对应版本的Azure Data Lake Storage,指定TSV所在容器与路径,格式设为TSV,确保
Id、ResponsePath列被正确识别导入。 - 创建JSON文件数据源:同样选择ADLS存储,不指定具体文件路径(后续动态赋值),格式设为JSON,文档模式选「单文档」(每个
ResponsePath对应单个JSON文件)。
2. 数据流核心步骤配置
步骤1:引入TSV数据源
拖入「源数据集」节点,选择已创建的TSV数据源,命名为Source_TSV作为数据流起始节点。
步骤2:处理JSON文件路径
在Source_TSV后添加「派生列」转换,命名为Derive_FilePath:
- 派生新列
Full_JSON_Path,若ResponsePath是相对路径,用表达式拼接完整ABFSS路径,示例:
若'abfss://<容器名>@<存储账户名>.dfs.core.windows.net/' + ResponsePathResponsePath已是完整路径,直接引用该列即可。
步骤3:动态查找并读取JSON
在Derive_FilePath后添加「查找」转换,命名为Lookup_JSON:
- 查找类型选「查找数据集」,选择已创建的JSON数据源。
- 勾选「动态路径」,选择
Full_JSON_Path列作为文件路径(数据流会自动将列值传递给JSON数据源的路径参数)。 - 在列映射中,提取JSON里的
trace id属性(嵌套结构用点语法,如$.traceId),重命名为TraceId避免冲突。
步骤4:合并数据并输出
在Lookup_JSON后添加「选择」转换,命名为Select_Final,保留原TSV的Id、ResponsePath列,加上提取的TraceId列,剔除多余字段。
- 拖入「接收器」转换,选择目标数据存储(如ADLS、SQL数据库),配置对应数据集与写入规则(追加/覆盖等)。
3. 调试与运行
- 点击「数据预览」,验证每一步输出:确认每条TSV记录都正确关联对应JSON,
TraceId提取无误。 - 发布数据流后,在管道中添加「执行数据流」活动,触发运行即可。
注意事项
- 若JSON是数组格式,需将JSON数据源的「文档形式」改为「数组」,并在查找后添加「展开」转换提取单个对象的
trace id。 - 确保数据流的服务主体/托管标识拥有TSV与JSON文件的读取权限。
内容的提问来源于stack exchange,提问作者LancerHak
相关产品推荐
相关产品推荐

