如何在Azure Data Factory中连接多表生成含嵌入数组的JSON结构?
在Azure Data Factory中实现学生-课程嵌套JSON结构的数据流配置
核心操作步骤
要生成你需要的嵌套JSON结构,关键是通过聚合转换将每个学生对应的课程信息聚合为数组,再与学生基础字段组合,具体步骤如下:
完成三张表的关联
- 先将
Students表与StudentClasses表通过StudentId字段做内连接,得到每个学生对应的所有ClassId - 再将上述连接结果与
Classes表通过ClassId字段做内连接,此时数据流中会包含每个学生的基础信息(StudentId、StudentName)以及对应的课程信息(ClassId、ClassName)
- 先将
用聚合转换生成课程数组
- 添加聚合转换,将分组键设置为学生的唯一标识字段:
StudentId、StudentName(确保每个分组对应单个学生) - 新增聚合列,命名为
classes,使用表达式:
说明:collect(struct(classID, className))struct(classID, className)会把单个课程的两个字段封装为一个键值对对象,collect()函数则将当前学生的所有课程对象收集为一个数组
- 添加聚合转换,将分组键设置为学生的唯一标识字段:
输出嵌套JSON结构
- 配置JSON输出数据集,在数据集设置里将根节点名称指定为
students - 运行数据流后,即可生成包含嵌套课程数组的目标JSON结构
- 配置JSON输出数据集,在数据集设置里将根节点名称指定为
纠正你之前的尝试
你之前用array(classID, className)生成的是仅包含字段值的数组,而需求是带键名的对象数组,因此需要用struct()代替array()构造课程对象,再通过collect()聚合到对应学生下。
内容的提问来源于stack exchange,提问作者JSWilson
相关产品推荐
相关产品推荐

