DCM Projects 中支持的对象类型

DEFINE 语句是一个特殊命令,专门用于 DCM project 定义文件。其语法类似于 CREATE OR ALTER 命令,但有以下主要区别:

  • DEFINE 语句的顺序和位置并不重要。在项目执行期间,Snowflake 会收集所有定义文件中的所有语句并对其进行排序。

  • 如果移除之前部署的 DEFINE 语句,则 Snowflake 会在您下次部署项目时删除相应的对象。这同样适用于先前部署后再移除的 GRANT 和 ATTACH 语句。

  • 仅支持 Snowflake 对象类型的子集。

  • 所有对象都必须使用完全限定名称 (database.schema.object_name)。

  • 对其他对象的引用必须具有完全限定名称。

在 DCM Projects 定义文件中,使用 DEFINE、GRANT 或 ATTACH 语句原生支持以下对象类型。

数据库

🚫 不支持的变更:

架构

🚫 不支持的变更:

🚫 不支持的变更:

  • 任意 CREATE OR ALTER 限制,包括以下操作:

    • 重命名表

    • 重命名列

    • 对列重新排序

    • 将列类型更改为不兼容的类型

    • 向表或列添加搜索优化

    • 向表或列添加标签和策略

动态表

支持的变更:

在没有完全刷新的情况下:

  • 仓库

  • 目标滞后

包含重新初始化或完全刷新:

  • 刷新模式

  • 主体的任何变化,包括:

    • 弃用列

    • 在末尾添加列

⚠️ 不可变实参:

  • INITIALIZE

🚫 不支持的变更:

视图

🚫 不支持的变更:

内部暂存区

支持的变更:

  • 目录表

  • 注释

⚠️ 不可变属性:

  • 加密类型

仓库

⚠️ 不可变属性:

  • INITIALLY_SUSPENDED

角色和数据库角色

🚫 不支持的类型:

  • 应用程序角色

授权

🚫 不支持的 GRANT 类型:

  • APPLICATION ROLE 权限

  • CALLER 权限

备注

移除之前部署的 GRANT OWNERSHIP 语句时,DCM Projects 尝试使用当前所有者角色将所有权重新授予 DCM project 所有者。如果项目所有者角色不拥有对象的所有者角色,则需要手动将所有权转移回 DCM Projects 之外。

DCM Projects 只理解通过 DCM Projects 定义和部署的授权。在 DCM Projects 之外添加的任何授权均共存,并且 DCM Projects 不会移除它们。

数据指标函数

数据指标函数 (DMFs) 允许您定义数据质量期望并将这些期望附加到表中。您可以从现有系统 DMFs 中选择或者编写您自己的用户定义数据指标函数 (UDMFs)。然后,您可以将它们附加到具有多对多关系的表、视图和动态表。有关更多信息,请参阅 使用 SQL 设置数据指标函数

要附加数据指标函数,首先需要为每个表、动态表或视图定义添加 DATA_METRIC_SCHEDULE。例如:DATA_METRIC_SCHEDULE = TRIGGER_ON_CHANGESTRIGGER_ON_CHANGES 计划不适用于视图。

每个项目和附件的用户定义的期望名称必须是唯一的。

定义期望是可选内容,但建议在将 DMFs 添加到表列时包含。运行 EXECUTE DCM PROJECT <my_project> TEST ALL 时,不考虑没有设置期望的已添加 DMFs。

支持的变更:

  • 定义 UDMFs(用户定义的数据指标函数)

  • 将系统 DMFs 和 UDMFs 添加到 DCM project 内部和外部的表、视图或动态表

  • 定义表列的数据期望

示例:

定义 UDMF 的示例:

DEFINE DATA METRIC FUNCTION DCM_DEMO.TESTS.INVENTORY_SPREAD(
  TABLE_NAME TABLE(
    COLUMN_VALUE number
  )
)
  RETURNS number
AS
$$
  SELECT
    MAX(COLUMN_VALUE) - MIN(COLUMN_VALUE)
  FROM
    TABLE_NAME
  WHERE
    COLUMN_VALUE IS NOT NULL
$$;

添加附带期望的系统 DMF 的示例:

ATTACH DATA METRIC FUNCTION SNOWFLAKE.CORE.MIN
  TO TABLE DCM_PROJECT_{{db}}.RAW.INVENTORY
  ON (IN_STOCK)
  EXPECTATION MIN_10_ITEMS_INVENTORY (value > 10);

添加附带期望的 UDMF 的示例:

ATTACH DATA METRIC FUNCTION DCM_DEMO.TESTS.INVENTORY_SPREAD
  TO TABLE DCM_PROJECT_{{db}}.RAW.INVENTORY
  ON (IN_STOCK)
  EXPECTATION EVEN_ITEM_INVENTORY (VALUE < 50);

查看所有可用系统 DMFs、查询 SHOW DATA METRIC FUNCTIONS IN DATABASE SNOWFLAKE

任务

  • 当为已启动的任务部署定义更改时,Snowflake 会自动暂时暂停该任务(或其根任务),应用更改,然后再次恢复。

  • 新部署的任务默认处于暂停状态。

🚫 不支持的变更:

CREATE OR ALTER TASK 语句中的限制。有关更多信息,请参阅 CREATE TASK

SQL 函数

🚫 不支持的变更:

CREATE OR ALTER 语句中的限制。有关更多信息,请参阅 CREATE FUNCTION

标签

🚫 不支持的属性:

  • 传播

附加标签、掩码策略和行访问策略(不支持)

无法将标签、掩码策略和行访问策略添加到 DCM Projects 表列定义。

  • 您可以在 DCM Projects 外部手动添加掩码和行访问策略。

  • 表对象的 DCM Projects 定义会忽略任何添加的掩码或行访问策略。重新部署表定义不会撤销这些策略,即使这些定义不包含策略也是如此。