Azure Data Factory如何使用字符串作为行分隔符解析.dat文件?
在Azure Data Factory中使用字符串作为行分隔符解析.dat文件
Azure Data Factory的常规数据集配置里,行分隔符仅支持单个字符,这就是你遇到每遇到'T'就拆分行的原因——系统会把你输入的字符串'TASK'的第一个字符'T'当成行分隔符。要实现按字符串'TASK'拆分并得到3条以'TASK'开头的行,推荐用以下方案:
方案一:使用数据流(Data Flow)处理(推荐)
这是最灵活且无需额外预处理的方式:
- 源数据集配置:将.dat文件作为源,不指定行分隔符(或设置为文件中不存在的单个字符),让ADF把整个文件读成单一行数据。
- 添加派生列转换:创建一个新列,用
split()函数将整行内容按'TASK'拆分:
示例内容拆分后会生成数组:split($$,'TASK')["TRY 1<em>2</em>3 ~ 9<em>4</em>6 ", " 34T<em>89YT</em>56 ", " 36<em>890</em>5T67 ", " 365<em>890PT6</em>5678"] - 添加展开(Flatten)转换:选择上一步生成的数组列,将其展开为多行数据。
- 添加过滤转换:过滤掉空行或仅包含空白字符的行,同时排除原文件开头的非'TASK'前缀行。过滤条件可设为:
trim(<展开后的列名>) != '' - 添加派生列转换:为每个过滤后的行添加'TASK'前缀,得到最终目标行内容:
'TASK' + trim(<展开后的列名>) - 后续处理:可继续添加转换清洗数据,或直接输出到目标存储/数据库。
方案二:预处理文件(备选)
如果无法使用数据流,可通过Azure Function、逻辑应用或本地脚本先预处理.dat文件:
- 将文件中所有'TASK'字符串替换为唯一的、文件中不存在的单个特殊字符(比如ASCII控制字符
\u0001)。 - 在ADF数据集的行分隔符设置中指定这个特殊字符,即可正确拆分出目标行。
处理后你将得到预期的3条数据:
TASK 34T89YT56
TASK 368905T67
TASK 365890PT65678
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

