如何在Azure Data Factory的Dataflow中格式化负值?
Azure Data Factory Dataflow 列格式转换实现方案
需求分析
原数据表采用扁平化命名(如Address_Line1、Contact_Phone),需要转换为嵌套对象结构(如Address对象包含Line1/Line2,Contact对象包含Phone/Email)。以下提供两种可行实现方法:
方法一:手动创建复合列(适合字段数量少的场景)
- 添加派生列活动到数据流画布
- 新建名为
Address的列,类型选择复合:- 在复合列内添加子字段
Line1,取值直接引用原字段Address_Line1 - 添加子字段
Line2,取值引用原字段Address_Line2
- 在复合列内添加子字段
- 重复上述步骤创建
Contact复合列:- 子字段
Phone引用原字段Contact_Phone - 子字段
Email引用原字段Contact_Email
- 子字段
- 添加选择活动,移除所有原扁平化字段,仅保留
Address和Contact列
方法二:批量生成嵌套对象(适合字段数量多的场景)
利用Dataflow内置函数批量筛选、转换字段,无需手动逐个配置:
- 添加派生列活动,创建
Address列,使用以下表达式:
逻辑说明:筛选所有以map( filter(columns(), startsWith(name(col), 'Address_')), (currentCol) => { key: split(name(currentCol), '_')[1], value: currentCol } )Address_开头的字段,拆分字段名获取后缀(如Line1),将其作为嵌套对象的键,字段值作为对应值,最终组合为复合对象。 - 同理创建
Contact列,替换前缀即可:map( filter(columns(), startsWith(name(col), 'Contact_')), (currentCol) => { key: split(name(currentCol), '_')[1], value: currentCol } ) - 添加选择活动清理原扁平化字段,保留转换后的复合列
内容的提问来源于stack exchange,提问作者sdh2000
相关产品推荐
相关产品推荐

