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

Great Expectations Checkpoint创建报错:缺失class_name键及类验证失败

解决Great Expectations Checkpoint的KeyError与类不存在问题

问题根源拆解

  1. KeyError: 'class_name':Great Expectations的核心组件(如DataConnector)必须指定合法的class_name,框架才能识别并实例化对应类,缺失会直接触发该错误。
  2. 类不存在错误:Asset并非官方认可的DataConnector类名;ConfiguredAssetSqlDataConnector是合法类,但你可能存在配置层级错误,或未正确关联数据源配置。

正确配置示例

1. 规范数据源与DataConnector配置

确保DataConnector配置嵌套在datasources下的对应数据源内,且使用官方合法类名:

import great_expectations as gx
from great_expectations.checkpoint import SimpleCheckpoint

# 获取上下文
context = gx.get_context()

# 配置SQL数据源及DataConnector
datasource_config = {
    "name": "my_sql_datasource",
    "class_name": "Datasource",
    "execution_engine": {
        "class_name": "SqlAlchemyExecutionEngine",
        "connection_string": "your_db_connection_string"  # 替换为你的数据库连接串
    },
    "data_connectors": {
        "my_configured_connector": {
            "class_name": "ConfiguredAssetSqlDataConnector",  # 正确的类名
            "assets": {
                "target_table_asset": {
                    "table_name": "your_target_table",
                    "schema_name": "your_schema"  # 可选,根据数据库结构调整
                }
            }
        }
    }
}

# 将数据源添加到上下文
context.add_datasource(**datasource_config)

# 构建Checkpoint配置
checkpoint_config = {
    "name": "my_validation_checkpoint",
    "config_version": 1,
    "class_name": "SimpleCheckpoint",
    "run_name_template": "%Y%m%d-%H%M%S-validation-run",
    "expectation_suite_name": "your_expectation_suite",  # 替换为你的预期套件名
    "action_list": [
        {"name": "store_validation_result", "action": {"class_name": "StoreValidationResultAction"}},
        {"name": "update_data_docs", "action": {"class_name": "UpdateDataDocsAction"}}
    ],
    "batch_request": {
        "datasource_name": "my_sql_datasource",
        "data_connector_name": "my_configured_connector",
        "data_asset_name": "target_table_asset"
    }
}

# 添加并运行Checkpoint
context.add_checkpoint(**checkpoint_config)
validation_result = context.run_checkpoint(checkpoint_name="my_validation_checkpoint")

2. 关键注意事项

  • 合法DataConnector类名参考:
    • ConfiguredAssetSqlDataConnector:用于预定义SQL表/视图的场景
    • InferredAssetSqlDataConnector:自动扫描并推断数据库中表的场景
    • ConfiguredAssetFilesystemDataConnector:针对文件系统数据源的场景
  • 配置层级必须正确:class_name需直接放在对应组件的配置字典中,比如每个data_connectors下的连接器都要单独声明class_name
  • 禁止自定义非官方类名:不要使用Asset这类无意义的命名,严格遵循官方组件命名规范

快速排查步骤

  1. 核对Great Expectations版本:运行gx --version查看版本,确保参考对应版本的官方文档
  2. 检查拼写错误:确认class_name无大小写错误、类名拼写正确(比如是否漏写Sql、多打了下划线)
  3. 验证数据源连接:确保execution_engine中的连接字符串能正常连接到目标数据库

内容的提问来源于stack exchange,提问作者Fabian Matias Vega Alcota

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:15:38