使用Great Expectations的InferredAssetAzureDataConnector时Batch Request返回空列表
Great Expectations Azure Blob数据源Batch请求返回空列表问题
配置与测试情况
已配置Azure Blob存储数据源,YAML配置如下:
name: {datasource_name} class_name: Datasource execution_engine: class_name: PandasExecutionEngine azure_options: account_url: MYURL credential: MYKEY data_connectors: default_runtime_data_connector_name: class_name: RuntimeDataConnector batch_identifiers: - default_identifier_name default_inferred_data_connector_name: class_name: InferredAssetAzureDataConnector azure_options: account_url: MYURL credential: MYKEY container: machinelearning name_starts_with: waermeprognose/output_neuralnet/FVS/FERNWAERME.1 default_regex: pattern: (.*)\_FVS_FERNWAERME.1_waermeprognose.parquet group_names: - date
执行Context.test_yaml_config(yaml_config=example_yaml)后,显示成功实例化数据源,且default_inferred_data_connector_name能识别到DEFAULT_ASSET_NAME下的3条数据。
问题现象
使用sanitize_yaml_and_save_datasource保存数据源到上下文后,执行以下Batch请求代码返回空列表:
context = DataContext( context_root_dir=r'C:\Users\Philip\Documents\Projekte\X\Python\tests\great_expectations' ) batch_request_parameters = { "datasource_name": "dlsbeoptdev_machinelearning_waermeprognose_output_neuralnet", "data_connector_name": "default_inferred_data_connector_name", "data_asset_name": "DEFAULT_ASSET_NAME", } batch_request = BatchRequest(**batch_request_parameters) print(context.get_batch_list(batch_request=batch_request))
可能的解决方向
1. 修复正则表达式的转义问题
YAML配置中的default_regex.pattern存在正则语法错误:.在正则中代表任意字符,需要转义为\.才能匹配文件名中的实际点号。修改后的pattern应为:
pattern: (.*)_FVS_FERNWAERME\.1_waermeprognose\.parquet
(注:YAML中不需要额外转义反斜杠,直接写\.即可)
2. 给Batch Request添加筛选参数
默认情况下,InferredAssetAzureDataConnector可能需要明确的筛选条件才能返回批次。可以在请求中添加batch_filter_parameters或limit参数:
batch_request_parameters = { "datasource_name": "dlsbeoptdev_machinelearning_waermeprognose_output_neuralnet", "data_connector_name": "default_inferred_data_connector_name", "data_asset_name": "DEFAULT_ASSET_NAME", "limit": 3, # 指定返回的批次数量 # 或者按date筛选 # "batch_filter_parameters": {"date": "2021-12-01"} }
3. 检查保存后的数据源配置
sanitize_yaml_and_save_datasource可能会修改配置内容,建议前往great_expectations/datasources/目录下查看保存后的YAML文件,确认以下配置项与原配置一致:
azure_options中的账号URL和凭证container名称name_starts_with路径default_regex的pattern和group_names
4. 确认路径大小写匹配
Azure Blob存储的路径是大小写敏感的,检查name_starts_with的路径与Blob中实际文件路径的大小写是否完全一致。
内容的提问来源于stack exchange,提问作者DoubleSteakHouse
相关产品推荐
相关产品推荐

