Great Expectations:Checkpoint能否为各ValidationDefinition配置不同批次参数?
在GX Core 1.0+中为Checkpoint内的ValidationDefinition配置独立批次参数
可以实现单个Checkpoint内不同gx.ValidationDefinition实例使用不同的批次参数,无需为每个验证定义单独创建Checkpoint,以下是两种可行方案:
方案一:创建ValidationDefinition时绑定专属批次参数
在定义每个ValidationDefinition时,直接通过batch_parameters参数指定其对应的DataFrame或其他批次参数,这样Checkpoint运行时会自动使用各验证定义自身绑定的参数,无需在run()方法中传入全局参数。
示例代码:
import great_expectations as gx from great_expectations.core.validation_definition import ValidationDefinition # 准备两个不同的DataFrame df_user_data = ... df_order_data = ... # 为每个DataFrame创建绑定专属批次参数的ValidationDefinition vd_user = ValidationDefinition( data_source_name="pandas_ds", data_asset_name="user_data", expectation_suite_name="user_data_suite", batch_parameters={"dataframe": df_user_data} ) vd_order = ValidationDefinition( data_source_name="pandas_ds", data_asset_name="order_data", expectation_suite_name="order_data_suite", batch_parameters={"dataframe": df_order_data} ) # 创建包含多个ValidationDefinition的Checkpoint multi_vd_checkpoint = gx.Checkpoint( name="multi_validation_checkpoint", validation_definitions=[vd_user, vd_order] ) # 直接运行,无需传入全局batch_parameters run_result = multi_vd_checkpoint.run()
方案二:运行Checkpoint时动态指定各ValidationDefinition的批次参数
如果需要在运行阶段灵活调整参数,可以使用run()方法的validation_definition_batch_parameters参数,该参数接收一个字典,键为ValidationDefinition的名称或实例,值为对应的批次参数。
示例代码:
import great_expectations as gx from great_expectations.core.validation_definition import ValidationDefinition # 创建未绑定批次参数的ValidationDefinition(需指定name以便后续识别) vd_user = ValidationDefinition( name="user_validation", data_source_name="pandas_ds", data_asset_name="user_data", expectation_suite_name="user_data_suite" ) vd_order = ValidationDefinition( name="order_validation", data_source_name="pandas_ds", data_asset_name="order_data", expectation_suite_name="order_data_suite" ) # 创建Checkpoint multi_vd_checkpoint = gx.Checkpoint( name="multi_validation_checkpoint", validation_definitions=[vd_user, vd_order] ) # 运行时为每个ValidationDefinition指定不同的DataFrame run_result = multi_vd_checkpoint.run( validation_definition_batch_parameters={ "user_validation": {"dataframe": df_user_data}, "order_validation": {"dataframe": df_order_data} } )
两种方案各有适用场景:方案一适合参数固定的长期复用场景,方案二更适合需要动态调整参数的临时运行场景。
内容的提问来源于stack exchange,提问作者Vladimir Vilimaitis
相关产品推荐
相关产品推荐

