You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看Great Expectations数据源文件位置?及同名数据源报错解决

问题1:查看Great Expectations数据源的文件位置
  • 本地配置文件查看:
    1. 打开项目根目录下的great_expectations.yml文件
    2. 找到datasources节点,定位到目标数据源(如supermarketSales)
    3. 展开该数据源的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:30:04