如何在Azure数据流从ADLS年/月/日目录导入数据时添加文件元数据列
解决Azure Data Flow导入JSON时添加文件元数据列的问题
1. 开启数据源的文件元数据捕获
在你的ADLS Gen2 JSON数据源配置里,找到**"文件元数据"**选项并勾选。开启后,数据流会自动从ADLS中读取以下元数据列:
FilePath:文件的完整存储路径(例:container_name/Dataset/2024/05/20/file1.json)FileName:纯文件名(例:file1.json)LastModified:文件的最后修改日期时间
2. 派生列生成所需字段
在数据流中添加派生列转换,针对需要的字段写对应表达式:
- 文件路径:直接用
FilePath即可;如果需要去掉容器名前缀,用replace(FilePath, 'container_name/', '') - 文件名:直接引用
FileName;若要去除后缀,用split(FileName, '.')[0] - 文件摄入日期:如果取当前导入时间,用
currentTimestamp();如果需要统一批次时间,可在管道中定义IngestionDate参数(值设为utcNow()),数据流中引用@pipeline().parameters.IngestionDate - 文件修改日期:直接用
LastModified;如需格式化日期格式,用toString(LastModified, 'yyyy-MM-dd HH:mm:ss')
3. 注意事项
- 确保数据源路径设置为
container_name/Dataset/并勾选**"递归"**,这样能读取所有Year/Month/Day层级下的文件 - 派生列的字段类型要和Azure SQL DB目标表的列类型匹配(比如日期字段设为
datetime或date) - 不需要用GetMetadata逐个处理文件,数据流支持批量读取所有符合路径的文件并自动捕获元数据,效率更高
内容的提问来源于stack exchange,提问作者JKD
相关产品推荐
相关产品推荐

