Azure Data Flow:如何将数组列映射为多列?求最优实现方案
Azure Data Flow数组列转指定多列的最优实现
直接用派生列转换就能搞定,不需要额外的展开/聚合操作,性能高效且逻辑清晰,步骤如下:
添加派生列转换,针对每个目标列(title、name、surname)编写自定义表达式:
- 生成
title列的表达式:iif(length(find(你的数组列名, 'title:')) > 0, split(find(你的数组列名, 'title:'), ':')[1], '') - 生成
name列的表达式:iif(length(find(你的数组列名, 'name:')) > 0, split(find(你的数组列名, 'name:'), ':')[1], '') - 生成
surname列的表达式:iif(length(find(你的数组列名, 'surname:')) > 0, split(find(你的数组列名, 'surname:'), ':')[1], '')
- 生成
把表达式里的
你的数组列名替换成数据流中实际的数组列名称即可。
逻辑说明
find(数组列, 'key:'):从数组中找出包含指定键前缀的元素,找不到则返回空字符串split(元素, ':')[1]:将找到的键值对按冒号分割,提取冒号后面的内容作为列值iif(判断条件, 满足时返回值, 不满足时返回空):处理无对应键的情况,确保列值为空而非null
这种方法的优势是直接在单条记录维度处理,不会因为展开数组导致数据行数膨胀,处理效率远高于先展开再透视的方案。
内容的提问来源于stack exchange,提问作者DC07
相关产品推荐
相关产品推荐

