ADF中从Azure SQL列值派生复杂类型数组输出JSON到Blob存储的实现
Azure数据工厂实现结构化JSON转换的落地方案
整条实现链路基于ADF原生功能搭建,不需要额外集成第三方服务或自定义代码,核心流程为:Azure SQL Database 源读取 → 结构化转换 → Blob Storage 输出JSON文件。
1. 源端配置
- 新建Azure SQL Database类型的数据集,绑定对应的业务库表,配置读取规则时仅固定提取
phone、mobile两列,减少冗余数据传输。 - 可在源查询中对空值字段做兜底处理,比如将NULL值替换为空字符串,避免后续结构生成时触发空值报错。
2. 结构化转换实现
方案1:映射数据流(推荐,无代码逻辑)
映射数据流的数组构造能力可以完全匹配当前固定两列的转换规则,操作步骤:
- 将源数据集接入新建的映射数据流,首先添加派生列转换,通过自定义表达式构造目标要求的
contact数组:
该构造逻辑会严格保证数组索引顺序:第0个元素对应固定contact = [ (number: phone, type: "phone"), (number: mobile, type: "mobile") ]phone类型的号码,第1个元素对应固定mobile类型的号码,完全匹配需求的结构规则。 - 添加选择转换,移除原始输入的
phone、mobile两列,仅保留生成的contact字段作为最终输出结构。 - 若电话号码需要做格式清洗(比如去除横杠、空格等特殊字符),可直接在派生列表达式中嵌套替换函数处理,例如:
// 示例:去掉号码中的横杠字符 (number: replace(phone, '-', ''), type: "phone")
方案2:Wrangling Data Flow(Power Query模式,备选)
如果更习惯使用Power Query语法,也可以通过Wrangling Data Flow实现等价效果,通过自定义列构造JSON数组结构,最终输出的层级和映射数据流一致,适合熟悉Power Query逻辑的使用者。
3. Blob Storage Sink配置
- 新建Blob Storage类型的数据集,文件格式选择JSON,根据下游消费需求选择输出格式(标准JSON数组、或NDJSON逐行JSON对象)。
- 数据流的sink环节直接绑定上述Blob数据集,映射环节无需手动调整层级,直接将输出的
contact字段映射为JSON文件的顶层结构即可。
落地校验要点
- 小样本测试时优先检查数组元素顺序,避免出现contact数组索引与类型不匹配的问题。
- 若输出的JSON存在多余的空嵌套层级,可通过sink的投影设置移除冗余包装节点。
内容的提问来源于stack exchange,提问作者Vizeet Srivastava
相关产品推荐
相关产品推荐

