Azure Data Flow键值列展平与解析异常问题求助
排查Azure Data Flow解析键值JSON丢失key列的问题
核心问题定位
原始数据格式为{"key":"rate1","value":"123"}-{"key":"rate2","value":"456"},本质是多个独立JSON对象用-分隔,Parse组件仅输出value列,大概率是拆分、展平或解析环节的配置疏漏。
分步排查与修正
1. 校验派生列的拆分逻辑
- 确认派生列使用
split()函数按-拆分原始字段,示例:split(原始字段名, '-') - 检查派生列预览:需得到包含两个完整JSON字符串的数组,如
["{\"key\":\"rate1\",\"value\":\"123\"}", "{\"key\":\"rate2\",\"value\":\"456\"}"],若拆分后元素格式异常(如多余引号、转义错误),会直接影响后续解析。
2. 检查展平(Flatten)组件配置
- 展开方式必须选择
Array,并指定拆分后的数组字段作为展开对象 - 展平后预览应显示两行独立的JSON字符串(每行对应一个键值对象),若展平后数据结构错误,后续Parse无法识别完整JSON结构。
3. 修正Parse组件的关键设置
- JSON路径:务必设置为
$(表示解析整个输入的JSON对象),若误设为$.value,只会提取value字段,丢失key - 输出列映射:手动添加
key和value列,根据数据类型设置为字符串(或对应类型),确保映射关系正确 - 若Parse预览仍仅显示value,检查输入的JSON字符串是否存在格式缺陷(如key字段引号缺失、隐性特殊字符)
4. Snowflake数据源前置校验
- 确认原始字段为字符串类型,若存在隐性空格/换行,在派生列先做清洗:
trim(原始字段名) - 在Snowflake中直接验证数据有效性,排除数据源问题:
若Snowflake能正常解析,问题出在Data Flow配置;若Snowflake也无法提取key,说明原始数据存在格式问题。SELECT PARSE_JSON(value):key::STRING AS key, PARSE_JSON(value):value::STRING AS value FROM TABLE(SPLIT_TO_TABLE(原始表.原始字段, '-'));
快速验证步骤
- 在派生列后添加调试断点,确认拆分后的数组格式正确
- 展平后添加断点,确认每行是完整的单个JSON对象
- 在Parse组件中选择
Detect schema自动识别结构,若自动识别不到key,手动指定JSON路径为$并添加key列
内容的提问来源于stack exchange,提问作者Gabriel Barleta
相关产品推荐
相关产品推荐

