相关限制

本文介绍使用数据质量API以及配置Spec时的相关限制。

DataQualityScan Spec 限制

Datasets

  • Datasets最多只能设置一个。

  • tables只能支持一个,暂时不支持通配符。

  • filter的配置对应按照WHERE条件指定数据范围。

    说明

    MaxCompute分区表一定要指定filter,否则执行时会失败。

{
  "datasets": [
    // 最多1个
    {
      "type": "Table",
      "tables": [
        // 最多1个
        // 不支持通配符
        "ods_d_dq_openapi_log"
      ],
      "dataSource": {
        "name": "odps_first",
        "envType": "Dev"
      },
      // 这里暂时只支持按照where条件指定的数据范围
      "filter": "dt = '$[yyyymmdd-1]'"
    }
  ],
  "rules": [
    // ...
  ]
}

Rules

  • 限制1:不使用模板创建的规则,只能支持如下几种固定的assertion参数组合。

    规则

    assertion参数配置示例

    与固定值比较

    {
      "assertion": "row_count > 0"
    }

    7天平均值波动

    {
      "assertion": "change avg last 7 days percent for avg(size)",
      "warn": "when > 0.1%",
      "fail": "when > 0.5%"
    }

    30天平均值波动

    {
      "assertion": "change avg last 1 month percent for avg(size)",
      "warn": "when > 0.1%",
      "fail": "when > 0.5%"
    }

    1天周期波动

    {
      "assertion": "change 1 day ago percent for avg(size)",
      "warn": "when > 0.1%",
      "fail": "when > 0.5%"
    }

    7天周期波动

    {
      "assertion": "change 7 days ago percent for avg(size)",
      "warn": "when > 0.1%",
      "fail": "when > 0.5%"
    }

    30天周期波动

    {
      "assertion": "change 1 month ago percent for avg(size)",
      "warn": "when > 0.1%",
      "fail": "when > 0.5%"
    }

    7天方差波动

    {
      "assertion": "change var last 7 days percent for avg(size)",
      "warn": "when > 0.1%",
      "fail": "when > 0.5%"
    }

    30天方差波动

    {
      "assertion": "change var last 1 month percent for avg(size)",
      "warn": "when > 0.1%",
      "fail": "when > 0.5%"
    }

    1,7,30天波动检测

    {
      "assertion": "change 1 day ago and 7 days ago and 1 month ago percent for avg(size)",
      "warn": "when > 0.1%",
      "fail": "when > 0.5%"
    }

    智能动态阈值

    {
      "assertion": "anomaly detection for avg(size)"
    }
  • 限制2:波动类规则的阈值,只能支持如下写法:

    规则阈值要求

    写法

    上升时告警,fail的阈值要大于warn的阈值,且都大于0

    • warn: when > 0.1%

    • fail: when > 0.5%

    下降时告警,fail的阈值要小于warn的阈值,且都小于0。

    • warn: when < -0.1%

    • fail: when < -0.5%

    上升/下降均告警,只能使用not between,而且上下界需要是一对相反数,fail的阈值的上下界绝对值要大于warn的阈值的上下界绝对值,且都不等于0。

    • warn: when not between -0.1% and 0.1%

    • fail: when not between -0.5% and 0.5%

DataQualityTemplate Spec 限制

规则模板中的assertion参数设置,遵循Rules 限制1只能支持固定的几种参数组合。

DataQualityAlertRule 限制

  • 一个DataQualityAlertRule只能监控一个DataQualityScan。

  • 监控同一个DataQualityScanAlertRuleCondition必须相同。

  • Condition只支持一种写法,使用resultsstatus属性和results对应ruleseverity属性来拼接表达式,且这两个属性要成对出现。

    results.any { r -> 
        r.status == 'Fail' && r.rule.severity == 'Normal' || 
            r.status == 'Error' && r.rule.severity == 'High' || 
            r.status == 'Warn' && r.rule.severity == 'High' 
    }