Azure Data Flow 提取JSON嵌套date_sk字段值输出为空如何解决
问题原因
你遇到的空值问题核心来自Azure Data Flow对JSON嵌套结构的默认投影规则:
- 你示例中
date_sk字段是带类型标记的嵌套结构(这类结构通常是Parquet/Avro格式转JSON时的序列化遗留产物),ADF创建Source流时会默认将其识别为单个复杂类型(Complex Type)字段,不会自动解析展开下一层的string子字段,所以自动生成的投影里看不到该子字段 date_sk.{}是ADF的字段通配符语法,仅当投影中已经注册了对应子字段时才能匹配到值,未注册子字段的情况下执行就会返回空值
解决方案
提供两种可直接落地的处理方式,按需选择即可:
方式1:修正Source投影后直接提取(推荐,性能最优)
- 进入Source节点的「Projection」标签页,找到
date_sk字段,点击字段右侧的「+」按钮手动添加子字段 - 子字段名称设置为
string,数据类型选择String,保存后查看Source的数据预览,确认date_sk.string可以正常显示值 - 后续在Derived Column组件中直接写如下表达式即可完成转换:
dateToGroupBy = date_sk.string
方式2:直接用JSON解析函数提取(无需修改Source配置)
如果不想调整Source投影配置,可以直接在Derived Column中通过类型转换+JSON解析的方式直接提取值,表达式如下:dateToGroupBy = parseJSON(toString(date_sk)).string
该方法会先将复杂类型的date_sk字段转为JSON字符串,再重新解析为JSON结构后提取string属性的值,无需调整前置节点配置即可直接生效。
内容的提问来源于stack exchange,提问作者YMC
相关产品推荐
相关产品推荐

