如何查看Great Expectations数据源文件位置?及同名数据源报错解决
问题1:查看Great Expectations数据源的文件位置
- 本地配置文件查看:
- 打开项目根目录下的
great_expectations.yml文件 - 找到
datasources节点,定位到目标数据源(如supermarketSales) - 展开该数据源的
assets字段,对应的数据资产条目里会显示filepath_or_buffer,即文件的路径(相对路径是相对于项目根目录,绝对路径会直接显示完整地址)
- 打开项目根目录下的
- 代码内查看:
直接通过DataContext对象获取数据源和资产,打印路径:# 获取已存在的数据源 datasource = context.datasources.get("supermarketSales") # 获取对应的数据资产 asset = datasource.assets.get("sales of supermarket") # 打印文件位置 print(asset.filepath_or_buffer)
问题2:解决DataContextError(同名数据源已存在)
错误原因:之前的训练营项目已经创建过名为supermarketSales的数据源,重复执行add_pandas方法会触发唯一性校验错误。
以下是三种解决方法:
方法1:复用已存在的数据源(推荐)
先检查数据源是否存在,存在则直接获取,避免重复创建:
datasource_name = 'supermarketSales' # 优先复用已存在的数据源 if datasource_name in context.datasources: datasource = context.datasources[datasource_name] else: datasource = context.sources.add_pandas(datasource_name) asset_name = 'sales of supermarket' # 同样检查数据资产是否存在 if asset_name in datasource.assets: asset = datasource.assets[asset_name] else: path_to_data = 'P2M3_Daffa_Darwin_data_clean.csv' asset = datasource.add_csv_asset(asset_name, filepath_or_buffer=path_to_data) batch_request = asset.build_batch_request()
方法2:删除已存在的数据源后重建
如果需要完全重置该数据源,先删除再创建:
datasource_name = 'supermarketSales' # 删除已存在的数据源 if datasource_name in context.datasources: context.datasources.pop(datasource_name) # 重新创建数据源 datasource = context.sources.add_pandas(datasource_name) # 后续添加资产和构建请求的代码不变 asset_name = 'sales of supermarket' path_to_data = 'P2M3_Daffa_Darwin_data_clean.csv' asset = datasource.add_csv_asset(asset_name, filepath_or_buffer=path_to_data) batch_request = asset.build_batch_request()
方法3:使用新的数据源名称
修改数据源名称为唯一值,比如添加版本后缀:
# 使用新的唯一名称 datasource_name = 'supermarketSales_v2' datasource = context.sources.add_pandas(datasource_name) asset_name = 'sales of supermarket' path_to_data = 'P2M3_Daffa_Darwin_data_clean.csv' asset = datasource.add_csv_asset(asset_name, filepath_or_buffer=path_to_data) batch_request = asset.build_batch_request()
内容的提问来源于stack exchange,提问作者Daffa Darwin
相关产品推荐
相关产品推荐

