如何在Azure Data Factory中正确展开分号数组并拆分制表符分隔字段
Azure Data Factory 单列拆分与数组展开操作方案
1. 制表符分隔字符串拆分为独立列
针对SQL DB抽取得到的制表符分隔单列数据,按以下步骤处理:
- 第一步:在数据流中添加派生列转换,调用
split()函数对原始单列做拆分,制表符转义符为\t,示例表达式如下(将raw_data替换为你的实际原始列名):
将该派生列命名为split(trim(raw_data), '\t')split_result,格式为数组类型。 - 第二步:继续在派生列转换中新增独立列,按索引从
split_result数组中提取对应字段值,ADF数组索引从0开始计数,示例表达式:
你可以根据实际业务需要给每个提取的字段设置对应的列名,全部提取完成后可通过选择转换删除不需要的原始列和中间拆分数组列。// 提取第一列值 split_result[0] // 提取第二列值 split_result[1] // 后续列依次按索引递增提取即可
若拆分的列数不固定,可在拆分后添加透视转换,结合列索引实现动态列生成。
2. 分号格式数组展开
分展开为独立行、展开为独立列两种场景处理:
展开为独立行
- 第一步:添加派生列转换,用
split()函数将分号分隔的字符串转换为数组,示例表达式(将arr_str替换为你的实际数组字符串列名):
将该派生列命名为split(trim(arr_str), ';')arr_result。 - 第二步:添加扁平化转换,选择
arr_result作为待展开的数组字段,执行转换后数组内的每个元素会生成独立行,其余字段值保持原值不变。
展开为独立列
处理逻辑和制表符分隔字符串拆分完全一致,直接按索引从arr_result数组中提取对应值,生成独立派生列即可。
常见优化提示
- 拆分前调用
trim()清洗原始字符串首尾的空格、换行符,可避免生成无效空元素 - 若需要处理空值,可搭配
iif()和isNull()函数设置缺省值,示例:iif(isNull(split_result[2]), '未知', split_result[2]) - 扁平化展开后如需过滤空元素,可添加筛选转换,过滤掉展开字段为空的行
内容的提问来源于stack exchange,提问作者Xkid
相关产品推荐
相关产品推荐

