Great Expectations Checkpoint创建报错:缺失class_name键及类验证失败
解决Great Expectations Checkpoint的KeyError与类不存在问题
问题根源拆解
- KeyError: 'class_name':Great Expectations的核心组件(如DataConnector)必须指定合法的
class_name,框架才能识别并实例化对应类,缺失会直接触发该错误。 - 类不存在错误:
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这类无意义的命名,严格遵循官方组件命名规范
快速排查步骤
- 核对Great Expectations版本:运行
gx --version查看版本,确保参考对应版本的官方文档 - 检查拼写错误:确认
class_name无大小写错误、类名拼写正确(比如是否漏写Sql、多打了下划线) - 验证数据源连接:确保
execution_engine中的连接字符串能正常连接到目标数据库
内容的提问来源于stack exchange,提问作者Fabian Matias Vega Alcota
相关产品推荐
相关产品推荐

