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

Azure Data Factory动态架构映射问题:字符串化JSON转JSON对象

Azure Data Factory 动态架构映射:将转义JSON字符串转为JSON对象的解决方案

方案1:修改源SQL语句,确保返回JSON对象

如果源表的data_context字段是字符串类型存储的JSON内容,直接使用JSON_QUERY无法自动解析转义字符,需要先将字符串转换为JSON类型再提取:

SELECT 
    [table],
    -- 先将字符串转成JSON类型,再用JSON_QUERY返回JSON对象
    JSON_QUERY(TRY_CAST(data_context AS JSON)) AS data_context,
    [operation],
    [updated_at] 
FROM [BIS_ChangedDataOnEventStage]
WHERE [id] <= 5000
  • 说明:TRY_CAST尝试将字符串格式的JSON转为SQL Server的JSON类型,JSON_QUERY确保返回完整的JSON对象而非字符串,ADF读取时会识别为复杂对象类型。

方案2:在ADF数据流动中解析字符串为JSON对象

若无法修改源SQL,可通过数据流动的派生列转换处理:

    1. 在数据流动中添加源数据集,连接到目标SQL表。
    1. 添加派生列转换,设置派生列名为data_context,输入表达式:
    json(data_context)
    
    1. 将处理后的数据流连接到sink数据集,此时data_context已转为JSON对象,sink会按正常JSON结构输出。

方案3:调整复制活动的TabularTranslator配置

如果使用复制活动,需修改Translator配置以保留复杂类型,避免将JSON对象转为转义字符串:

{
    "type": "TabularTranslator",
    "typeConversion": true,
    "typeConversionSettings": {
        "allowDataTruncation": true,
        "treatBooleanAsNumber": false
    },
    "mapComplexValuesToString": false
}
  • 关键配置:mapComplexValuesToString设为false,禁止ADF将JSON对象转为字符串;同时确保源数据集的schema中data_context字段类型设为Object(可手动调整自动检测的schema)。

验证结果

应用上述任一方案后,sink输出的JSON结构将符合预期:

[{
    "table": "pnt",
    "data_context": {
        "pnt_name": "P000_KLAUS22",
        "pnt_no": 136
    },
    "operation": "DEL",
    "updated_at": "2023-08-17T07:51:42.447"
}]

内容的提问来源于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 03:29:49