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

Great Expectations v3 API自定义期望_pandas收到意外参数_metrics

报错原因

你出现该报错是因为自定义的期望类和指标类遗漏了Great Expectations v3 API要求的必填配置项,同时指标实现方法的参数接收规则没有对齐框架要求,框架自动传入的_metrics参数没有被正常接收。

修复步骤
  1. 完善ColumnMapMetricProvider子类的必填配置,显式接收框架传入的内置参数
  2. 完善ColumnMapExpectation子类的必填元信息配置
  3. 补充空值/非数值场景的兼容处理逻辑,避免后续运行报错
修复后的完整代码
from great_expectations.execution_engine import PandasExecutionEngine
from great_expectations.expectations.metrics import (
    ColumnMapMetricProvider,
    column_condition_partial
)
from great_expectations.expectations.expectation import ColumnMapExpectation
import pandas as pd


def check_positive(value):
    # 空值、非数值类型默认视为通过校验,可根据需求调整规则
    if pd.isna(value) or not isinstance(value, (int, float)):
        return True
    return value > 0


class ColumnValueIsPositive(ColumnMapMetricProvider):
    condition_metric_name = "column_values.to_be_positive"
    # 新增必填:指定指标对应的域关键字段
    condition_domain_keys = ("batch_id", "table", "column")
    # 新增必填:指定指标可接收的自定义值关键字段,无特殊参数则留空
    condition_value_keys = ()

    @column_condition_partial(engine=PandasExecutionEngine)
    def _pandas(cls, column, _metrics=None, **kwargs):
        # 显式接收框架自动传入的_metrics参数即可解决参数不匹配报错
        return column.apply(check_positive)


class ExpectColumnValuesToBePositive(ColumnMapExpectation):
    display_name = "期望列值为正数"
    # 绑定对应计算指标
    map_metric = "column_values.to_be_positive"
    # 新增必填:指定期望的成功判断关键字段,列映射类期望默认支持mostly参数
    success_keys = ("mostly",)
    # 可选:配置默认参数值
    default_kwarg_values = {
        "mostly": 1.0
    }
验证方法

修复后重启Jupyter Notebook内核,重新导入自定义期望执行即可:

from my_custom_expectation import ExpectColumnValuesToBePositive

validator.expect_column_values_to_be_positive(column="duration")

内容的提问来源于stack exchange,提问作者antsarand1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:27:03