用于数据管道的 DCM Projects

DCM Projects 提供全生命周期的开发者体验,其中包括为管理数据管道量身定制的功能。

管道特定的命令并不适用于所有对象类型。它们为以下管道用例扩展了核心命令:

用于动态表的 REFRESH 命令

部署管道定义变更后,您可以在测试数据质量预期之前刷新管道项目内的动态表,以便端到端应用任何新的转换逻辑。

您可以通过一条命令刷新由 DCM project 管理的所有动态表格及其所需的上游动态表格。此命令仅适用于由引用的项目部署和管理的动态表,与任何定义文件无关。其他对象类型(如任务)不受影响。

请参阅 用于数据质量预期的 TEST 命令,了解有关结合使用 REFRESH 和 TEST 的用法示例。

该命令将一直运行,直到所有动态表刷新完成,并返回每个动态表的行更改或错误的摘要。

如需运行 REFRESH 命令,请执行以下操作:

EXECUTE DCM PROJECT DCM_DEMO.PROJECTS.DCM_PROJECT_STG
  REFRESH ALL;

JSON 输出包含动态表刷新操作的结果,格式如下:

属性

描述

dts_refresh_result

包含动态表刷新操作的结果。

refreshed_tables[]

一个条目数组,每个条目对应一个刷新的动态表。

table_name

刷新的动态表的完全限定名称。

statistics

刷新表的统计信息。

inserted_rows

刷新期间插入的行数。

deleted_rows

刷新期间删除的行数。

data_timestamp

ISO 8601 时间戳,表示刷新后数据的时间点新鲜度。

动态表刷新的 JSON 输出的示例:

{
  "dts_refresh_result": {
    "refreshed_tables": [
      {
        "table_name": "db.schema.my_dynamic_table",
        "statistics": {
          "inserted_rows": 150,
          "deleted_rows": 30
        },
        "data_timestamp": "2026-03-16T12:00:00.000Z"
      }
    ]
  }
}

用于数据质量预期的 TEST 命令

您可以将数据质量预期设置为数据转换所有暂存区的质量关卡:

  • 将期望值附加到 Bronze 层登录表中的原始数据,以确保原始输入符合期望值,并且不会在转换过程中导致错误。

  • 将期望作为质量门附加到 Silver 层,以便通过在不同转换暂存区设置检查点来更轻松地调试数据问题。

  • 将期望附加到 Gold 层,以确保数据产品的输出质量。

  • 将数据产品下游使用者的期望附加到 Gold 层,以便在部署重大变更之前验证这些期望。

请参阅 数据指标函数,了解如何在 DCM 项目中附加期望。

您可以通过一条命令测试由 DCM project 管理的表、动态表格或视图上附加的所有数据质量期望。

不会检查无预期附加的数据指标函数。

您可以使用 CLI 命令将自动化测试设置为 CI/CD 工作流程的一部分。例如,如果您在 QA、测试或暂存环境中拥有类似生产的数据,您可以按照以下步骤操作:

  1. 在 QA 中执行 PLAN,以验证预期的项目定义变更。

  2. DEPLOY 到 QA。

  3. 在 QA 中 REFRESH ALL 动态表,根据任何新的转换逻辑和更新的定义更新数据,从而确保不会基于过期数据进行期望验证。

  4. 在 QA 环境中,对附加到表对象的 TEST ALL 数据质量期望进行验证,以验证新部署的逻辑是否按预期运行,并且不会对数据输出的预期结构产生负面影响。

  5. 如果在 QA 中所有期望都满足,则继续在生产环境中执行 PLAN 和 DEPLOY。

如需运行 TEST 命令,请执行以下操作:

EXECUTE DCM PROJECT DCM_DEMO.PROJECTS.DCM_PROJECT_STG
  TEST ALL;

TEST 输出包含总体状态和期望及其值,格式如下:

重要

在预览阶段,确切的输出格式可能会发生变化。

{
  "status": <status>,
  "expectations": [
    {
      "table_name": <table_name>,
      "metric_database": <metric_database>,
      "metric_schema": <metric_schema>,
      "metric_name": <metric_name>,
      "expectation_name": <expectation_name>,
      "expectation_expression": <expectation_expression>,
      "value": <value>,
      "expectation_violated": <expectation_violated>,
      "column_names": <column_names>
    }
  ]
}

属性

描述

status

测试运行的总体结果。可能的值:``SUCCESSFUL``(满足所有期望),``FAILED``(违反了一个或多个期望)。

expectations[]

预期结果数组,每个评估的数据质量预期对应一个结果。

table_name

评估该期望所对应的表或视图的完整限定名称。

metric_database

包含数据指标函数的数据库。

metric_schema

包含数据指标函数的架构。

metric_name

数据指标函数的名称(例如,NULL_COUNTMINUNIQUE_COUNT)。

expectation_name

项目中定义的期望的名称。

expectation_expression

用于评估指标值的布尔表达式(例如,value = 0value >= 0)。

value

数据指标函数评估的结果。仅在 expectation_violatedfalse 时显示。

expectation_violated

是否违反了预期。如果指标值不满足期望表达式,为 true;否则为 false

column_names

用于评估数据指标函数的列名数组。

数据质量测试的 JSON 输出示例:

{
  "status": "FAILED",
  "expectations": [
    {
      "table_name": "db.schema.my_table",
      "metric_database": "SNOWFLAKE",
      "metric_schema": "CORE",
      "metric_name": "NULL_COUNT",
      "expectation_name": "no_nulls_in_id",
      "expectation_expression": "value = 0",
      "value": 0,
      "expectation_violated": false,
      "column_names": ["ID"]
    },
    {
      "table_name": "db.schema.my_table",
      "metric_database": "SNOWFLAKE",
      "metric_schema": "CORE",
      "metric_name": "UNIQUE_COUNT",
      "expectation_name": "unique_id_check",
      "expectation_expression": "value >= 100",
      "value": null,
      "expectation_violated": true,
      "column_names": ["ID"]
    }
  ]
}

PREVIEW 命令

当您编写或修改动态表或视图的 SELECT 语句时,示例输出有助于验证数据的形状。对于包含多个转换步骤的复杂数据沿袭图,在对上游进行更改时,您可以检查下游视图或动态表的输出结果。

要在部署之前验证代码中的转换是否会产生预期的数据输出,请运行 PREVIEW 命令。

运行 PLAN 的 PREVIEW 命令编译当前定义,与任何部署状态无关,然后返回指定动态表、视图或常规表的数据样本。

请记住以下要求和注意事项:

  • PREVIEW 命令必须始终引用表对象的完全限定名称,不得使用 Jinja 变量。

  • 要在输出中查看示例数据,必须确保数据已在源表中可用。

  • PREVIEW 查询全部引用的动态表和视图的 SELECT 语句,但它不运行任务或 CREATE TABLE AS SELECT 语句。

如需运行 PREVIEW 命令,请执行以下操作:

EXECUTE DCM PROJECT DCM_DEMO.PROJECTS.DCM_PROJECT_DEV
  PREVIEW
    DCM_PROJECT_DEV.SERVE.V_DASHBOARD_KPI_SUMMARY
  USING CONFIGURATION DEV
FROM
  'snow://workspace/USER$.PUBLIC.DEFAULT$/versions/live/DCM_Project_Quickstart_1'
  LIMIT 100;