如何在GreatExpectations中配置S3多文件夹作为Data Asset?
解决GreatExpectations匹配S3子文件夹文件的问题
问题原因
当前配置仅能匹配s3_prefix直接下属的文件,核心原因有两点:
- 默认未开启递归扫描,GreatExpectations只会遍历
s3_prefix的直接层级,不会深入子文件夹 - 原正则仅匹配
s3_prefix之后直接跟随subfolder_a/file.parquet的路径,无法覆盖中间的子文件夹层级
解决方案
1. 开启递归扫描
在add_parquet_asset时显式设置recursive=True,让GE递归遍历s3_prefix下的所有子文件夹。
2. 调整正则表达式
修改正则,加入.*匹配任意中间路径,确保能捕获位于任意子文件夹中的目标文件。
修改后的代码示例
asset_name = "iceberg_asset" s3_prefix = "folder_a/folder_b/folder_c/" # 匹配任意子文件夹层级下的subfolder_a/file.parquet batching_regex = r".*subfolder_a/file\.parquet" data_asset = datasource.add_parquet_asset( name=asset_name, batching_regex=batching_regex, s3_prefix=s3_prefix, recursive=True )
关键说明
recursive=True:强制GE扫描s3_prefix下的所有嵌套子文件夹,而非仅直接同级文件.*:正则中的通配符,匹配任意长度的路径字符(包括多层子文件夹的路径分隔符),确保目标文件无论在哪个子层级都能被匹配到
内容的提问来源于stack exchange,提问作者Wild Tarzan
相关产品推荐
相关产品推荐

