监控模式的数据质量¶
当数据指标函数 (DMF) 与表或视图关联时,DMF 会定期运行并返回一个值,用于提供数据质量方面的洞察。
现在,您可以使用单个 SQL 语句来配置模式,使该模式中的所有对象都关联到同一个 DMF。您可以在模式级别关联以下系统 DMFs:
当您在模式级别关联这些 DMFs 之一时,您可以指定希望 Snowflake 来确定表或视图的数据量或数据新鲜度在一段时间内是否存在 异常。
以下示例展示了如何为 ROW_COUNT DMF 与 my_schema 模式中每个对象之间的关联启用异常检测:
Snowflake 会训练异常检测算法,然后自动开始识别 my_schema 模式中表和视图数据量方面的异常。
将 DMF 添加到模式¶
当您将 DMF 与模式关联时,模式内的所有对象都会与该 DMF 关联。
语法¶
使用以下语法向模式添加 DMF。
实参¶
{ SNOWFLAKE.CORE.ROW_COUNT | SNOWFLAKE.CORE.FRESHNESS } ON ()将系统 DMF 与模式中的对象关联。
ANOMALY_DETECTION = { TRUE | FALSE }如果为 TRUE,Snowflake 会使用算法来检测 DMF 返回的值中的异常。Snowflake 检测每个对象中的异常,而不是针对整个模式。
默认:FALSE
EXCLUDE_TABLE_TYPES = ( 'object_type', 'object_type' ... )排除指定类型的所有对象;Snowflake 不会在 DMF 与这些对象之间建立关联。以下是可能的值:
'DYNAMIC_TABLE''EVENT_TABLE''EXTERNAL_TABLE''ICEBERG_TABLE''MATERIALIZED_VIEW''TABLE''VIEW'
如果要排除某个特定对象而非某类型的所有对象,您可以在对象级别 覆盖 DMF 关联。
示例¶
将 FRESHNESS DMF 与模式中的所有对象关联:
将 ROW_COUNT DMF 与模式中的所有对象关联,并为这些关联启用异常检测:
将 ROW_COUNT DMF 与模式中的表关联,但不将其与视图和物化视图关联:
在对象级别覆盖设置¶
当您在模式级别添加 DMF 时,Snowflake 会在模式中的每个对象与该 DMF 之间创建对象级别的关联。如果您想更改 DMF 在对象上的运行方式,可以在对象级别替换此关联。
假设您在将 ROW_COUNT DMF 添加到 my_schema 时启用了异常检测。如果您不希望 Snowflake 检测表 my_schema.employees 中的异常,请运行以下命令:
如果您希望停止运行 DMF,也可以从特定对象中移除该关联。例如,如果您希望停止 ROW_COUNT DMF 在 my_schema.employees 表上运行,请运行以下命令:
您也可以替换模式级别的计划,以更改 DMF 针对特定对象的运行频率。有关在对象级别设置计划的信息,请参阅 调整 DMFs 的计划。
调整运行计划¶
默认情况下,模式的数据指标计划为 60 分钟;DMF 每小时对模式中的每个对象运行一次。您可以在模式级别更改此默认值,也可以在对象级别替换它。
使用以下命令来控制 DMFs 对模式中对象的运行频率:
schedule 的可能取值在模式级别与对象级别相同。要查看可能的值,请参阅 ALTER TABLE...SET DATA_METRIC_SCHEDULE。
您在模式级别设置的计划控制着 DMF 在每个对象上的运行频率,除非您为特定表或视图替换了该设置。有关在对象级别设置计划的信息,请参阅 调整 DMFs 的计划。
暂停 DMFs¶
暂停和恢复模式级别关联的 DMF 的语法与表级别关联的语法相同。例如,要暂停与模式 my_schema 关联的 ROW_COUNT DMF,请运行以下命令:
确定哪些关联是在模式级别设置的¶
您可以使用以下视图和函数来确定哪些对象与 DMF 关联:
ACCOUNT_USAGE 模式中的 DATA_QUALITY_MONITORING_RESULTS 视图。
该视图和函数的输出包含一个 level 列,该列有以下可能的值:
TABLE– 有人直接将 DMF 与对象关联。SCHEMA– 有人将 DMF 添加到了模式中,从而创建了对象与 DMF 之间的关联。
跟踪模式级别的关联¶
您可以调用 DATA_METRIC_FUNCTION_REFERENCES 函数来确定哪些 DMFs 被添加到了模式中。例如,要查看哪些 DMFs 被添加到了 db1.my_schema 模式,请运行以下命令:
访问控制要求¶
要向模式添加 DMF,您必须具有以下访问控制权限和角色:
模式的 OWNERSHIP 权限。
账户的 MANAGE DATA QUALITY 权限。
账户的 EXECUTE DATA METRIC FUNCTION 权限。
SNOWFLAKE.DATA_METRIC_USER 数据库角色。
除非模式所有者仍然拥有对账户的 MANAGE DATA QUALITY 权限,否则 Snowflake 将不会运行该 DMF。
要成功对模式中的对象运行 DMF,对象所有者必须具有将 DMF 与该对象关联所需的相同权限。有关这些权限的列表,请参阅 访问控制要求。
注意事项和限制¶
FRESHNESS DMF 需要为视图和外部表提供一个列实参。因此,如果您将 FRESHNESS DMF 添加到模式中,Snowflake 在将 DMF 与模式中的对象关联时会跳过视图和外部表。
您无法在模式级别设置基于触发的计划。