You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory复制活动中混合列与JSON数据的映射问题

解决Azure Data Factory中JSON列的动态映射问题

问题根源分析

  • 从你提供的SQL查询结果能看到,data_context字段是带转义字符的字符串,且本身存在JSON语法错误(末尾有多余的,\"),这导致ADF无法将其识别为JSON对象,自然无法通过路径提取内部属性。
  • 你之前尝试的$['data_context'.'pnt_name']路径语法错误,正确的JSON路径应该用.或[]层级访问,但前提是源字段是JSON对象而非字符串。

解决方案

可从SQL数据源预处理和ADF内部转换两个层面解决,优先推荐SQL预处理,效率更高。

方案1:在SQL层修复并解析JSON,直接输出目标字段

先修复data_context的JSON语法错误,再提取所需属性或转换为正确的JSON对象:

修复JSON语法并提取单个属性(如pnt_name)

SELECT 
      [table]
      -- 截断末尾无效字符,提取pnt_name属性
      ,JSON_VALUE(LEFT(data_context, LEN(data_context)-2), '$.pnt_name') AS pntname
      ,[operation]
      ,[updated_at] 
FROM [BIS_ChangedDataOnEventStage]
WHERE [id] <= 5000

修复JSON语法并输出正确的JSON对象

SELECT 
      [table]
      -- 截断末尾无效字符,返回标准JSON对象
      ,JSON_QUERY(LEFT(data_context, LEN(data_context)-2)) AS data_context
      ,[operation]
      ,[updated_at] 
FROM [BIS_ChangedDataOnEventStage]
WHERE [id] <= 5000

注:LEFT(data_context, LEN(data_context)-2)是针对你提供的错误JSON(末尾为,\")做的截断,如果其他行错误格式不同,可改用正则替换(如SQL Server的REGEXP_REPLACE(data_context, ',"$', ''))适配更多场景。

方案2:在ADF中处理字符串转JSON并映射

如果无法修改SQL查询,可通过ADF的派生列活动先转换字符串为JSON对象,再提取属性:

  1. 添加派生列活动,新增列data_context_json,使用表达式:
    json(replace(data_context, ',"', ''))
    

    这里的replace用于修复JSON末尾的错误字符,需根据实际数据调整替换规则。

  2. 在后续映射数据集中,使用正确的JSON路径提取属性:
    {
        "type": "TabularTranslator",
        "mappings": [
            {
                "source": {
                    "path": "$['data_context_json']['pnt_name']"
                },
                "sink": {
                    "name": "pntname",
                    "type": "String"
                }
            }
        ],
        "typeConversion": true,
        "typeConversionSettings": {
            "allowDataTruncation": true,
            "treatBooleanAsNumber": false
        }
    }
    

验证结果

处理完成后,data_context会被转换为标准JSON对象,你可在ADF预览数据中确认pnt_name等属性能被正确提取,最终输出符合预期的结构。

内容的提问来源于stack exchange,提问作者K N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:38:33