如何在Azure Data Factory中用associate函数保留数据类型创建键值映射?
解决ADF数据流中XML转混合类型JSON的问题
可行方案1:使用对象构造器转换
这是最直观的方式,能精准保留各字段的数据类型:
- 添加「对象构造器」转换,选择「创建复杂列」,将新列名设为
load - 在
load列下创建子对象cargo - 为
cargo添加两个字段:netWeightLoad:直接映射到原扁平化列load_cargo_netWeightLoad(自动保留整数类型)unit:直接映射到原扁平化列load_cargo_unit(自动保留字符串类型)
- 后续输出环节直接使用这个构造好的复杂列即可生成符合要求的JSON结构
可行方案2:派生列中使用JSON字面量语法
跳过associate函数,直接用JSON字面量构造混合类型对象,在派生列的表达式中写入:
{ "load": { "cargo": { "netWeightLoad": load_cargo_netWeightLoad, "unit": load_cargo_unit } } }
将该表达式赋值给新的派生列(比如命名为targetJson),生成的对象会完整保留原字段的整数、字符串类型,不会触发类型不匹配报错。
为什么之前的associate函数会报错
associate函数的设计逻辑要求所有传入的值必须是相同数据类型,因为它是基于同类型键值对集合构建对象。而你的场景中netWeightLoad是整数、unit是字符串,值类型不统一,因此触发报错。上述两种方案都避开了这个限制,支持混合类型的对象构造。
内容的提问来源于stack exchange,提问作者Jose Angel Martinez Soler
相关产品推荐
相关产品推荐

