ADF中解析JSON动态Dates对象生成结构化数据的问题
在ADF数据流中解析动态Dates对象的解决方案
需求回顾
需要将给定的JSON数据转换为结构化表,保留id、name、日期(Dates的键)、对应值这几列,其中Dates是动态键值对对象,无法用固定逆透视处理。
具体实现步骤
加载JSON源数据
在数据流中添加源数据集,指向你的JSON文件,确保源的格式设置正确(JSON格式,数组作为根)。添加派生列转换,将Dates对象转为标准数组
添加派生列组件,创建新列(比如命名为date_entries),使用以下表达式:mapEntries(dates)这个函数会把
dates对象直接转换为包含key和value属性的对象数组,示例输出:[{"key":"2024-12-23","value":"8"},{"key":"2024-12-24","value":"8"},...]扁平化数组生成多行数据
添加Flatten(扁平化)转换,在设置中选择date_entries作为要扁平化的数组,此时每一个数组元素会拆分为单独一行,同时保留id、name等原始列。调整列名与数据类型(可选)
- 添加选择转换,将
key列重命名为Dates,只保留id、name、Dates、value这几列。 - 如果需要将
value转为数值类型,添加派生列,使用表达式toInteger(value)或toDouble(value)替换原value列。
- 添加选择转换,将
写入目标结构化表
添加Sink转换,指向你的目标表,配置好映射关系后运行数据流即可。
示例最终输出结构
| id | name | Dates | value |
|---|---|---|---|
| 29 | Glenn | 2024-12-23 | 8 |
| 29 | Glenn | 2024-12-24 | 8 |
| ... | ... | ... | ... |
| 89 | Jeff | 2024-12-27 | 8 |
| ... | ... | ... | ... |
内容的提问来源于stack exchange,提问作者Manju Basavantapura
相关产品推荐
相关产品推荐

