Azure Data Factory处理#分隔可变列数文件获取全量列值的问询
ADF读取列数不一致的#分隔文件解决方案
- 首先在源读取阶段规避默认schema推断规则:将源组件的分隔符设置为无,把每行内容作为单个字符串字段
raw_line读取,避免ADF默认用第一行的7列固定后续行的解析结构。 - 拆分单行内容:添加派生列组件,用表达式
split(raw_line, '#')将整行按#拆分为数组类型的字段split_result。 - 动态计算最大列数:新增聚合组件,无需分组,直接用
max(size(split_result))得到所有行拆分后的最大列数,记为max_col_num。 - 统一数组长度:将原始拆分数据流和聚合得到的
max_col_num做交叉联接,给每一行补上最大列数属性,再通过派生列将每一行的split_result数组补长到max_col_num长度,空缺位置填充空值,参考表达式:slice(concat(split_result, repeat(null, max_col_num)), 1, max_col_num)。 - 展开为结构化列:添加扁平化组件,将
split_result数组展开为col_1、col_2直到col_{max_col_num}的独立字段,后续直接映射到目标表的对应列即可,空值会正常保留。
如果你能提前确定文件最大列数的上限,也可以直接在源组件的schema配置中手动添加对应数量的列,不需要动态计算,ADF会自动给不足长度的行对应位置填充空值。
内容的提问来源于stack exchange,提问作者Minura Punchihewa
相关产品推荐
相关产品推荐

