数据质量和数据指标功能简介¶
数据质量使用数据指标函数 (DMFs) 监控数据的状态和完整性,其中包括 Snowflake 提供的系统 DMFs 和用户定义的 DMFs。您可以使用 DMFs 来衡量关键指标,如(但不限于)新鲜度以及衡量重复、NULLs、行和唯一值的计数。
关于数据质量和 DMFs¶
数据质量的重点是了解数据的状态和完整性,其中包括与列中的空值或空白字段相比的真实数据值的新鲜度和准确性,从而做出数据驱动的决策。您可以使用 DMFs 来衡量数据的质量。Snowflake 在 SNOWFLAKE.CORE 架构中提供内置系统 DMFs,无需定义即可测量常用指标。您还可以定义自己的自定义 DMFs,以便更精确地对数据质量测量进行微调,这些 DMFs 会存储在您选择的数据库和架构中。
无论您是使用系统 DMFs、自定义 DMFs 还是两者兼用,在将 DMF 分配给表或视图后,Snowflake 都会将调用 DMF 的结果记录在您账户的事件表中。您可以指定 DMF 的调用频率。例如,您可以计划每天对特定表运行三次 DMFs,还可以根据自己的内部数据质量要求修改计划。对表设置的所有 DMFs 都遵循相同的时间表。
在计划好 DMFs 的运行后,您可以配置警报,以便在数据质量发生变化时通知您。通过结合 DMF 和警报功能,您可以在所衡量的表格上获得一致的数据质量阈值通知。这些洞察力可通过以下方式增强数据治理态势:
数据管理员可根据特定指标了解其数据的当前状态。
数据工程师对重要表和视图立即采取行动。
平台管理员确保数据质量监控的成本、一致性和性能。
然后,定义、测量和监控数据的数据质量工作流程可应用于其他工作负载。
有关信息,请参阅:
计费和定价¶
Snowflake 创建并管理虚拟仓库对象,以支持该功能。在正常的 SQL 查询工作流程之外,您无需预置或使用任何额外的虚拟仓库资源,即可使用该功能。
调用 DMF 会使用无服务器计算资源,详情请参见 Snowflake 消耗表。表中列出了每个 云区域 和 Snowflake 版本 的 Credit 定价。
您使用的 Credit 列在每月账单的“数据质量监控”类别中。这些 Credit 包括您使用的所有系统或用户定义的数据质量指标所消耗的计算量。创建 DMF 不收取费用。
只有在计算对象的计划 DMF 时,才会计费。使用计划外的数据指标函数无需付费,如使用 SELECT 语句调用 DMF。
日志记录基础设施会将指标输出合并到事件表中。日志记录服务产生的消耗在您的月账单上显示为“日志记录”。
有关更多信息,请参阅 无服务器 Credit 使用量。
小技巧
您可以查询 DATA_QUALITY_MONITORING_USAGE_HISTORY,跟踪您账户中与使用 DMFs 相关的 Credit 消耗情况。
优势¶
使用 DMFs 可以增强数据质量,并带来以下好处:
- 促进合规:
通过了解您的数据状况,可以更轻松地展示您如何遵守合规和监管标准。这样可以降低风险,增强数据治理能力。
- 满足服务水平协议 (SLAs):
准确的数据指标(如新鲜度)有助于满足数据提供者、数据使用者和客户之间的 SLAs。
- 可信度:
DMFs 提供数据验证,这有助于做出可信的数据驱动决策。
- 一致性:
使用系统 DMFs,并反复使用适当的自定义 DMFs,可实现长期一致的数据质量评估。这样可以提高数据的可信度。
- 针对特定用例进行优化:
自定义 DMFs 使数据工程师能够设计精确的指标来衡量数据,从而更准确地优化数据的目标应用程序。
- 自动测量:
在将 DMF 分配给表或视图、指定 DMF 的运行计划并将事件表设置为账户的活动事件表以记录调用 DMF 的结果后,就可以自动调用 DMF。无需额外工作即可主动测量数据质量。
- 绩效管理:
Snowflake 会评估您如何使用 DMFs,并优化查询评估,以提供最佳查询性能。
注意事项¶
有关复制和 DMFs 的信息,请参阅 数据指标函数的复制 (DMFs)。
限制¶
使用 DMFs 时请注意以下限制:
只支持常规表。不能对动态表或外部表等其他类型的表设置 DMF。
对对象设置 DMFs:
每个账户最多只能有 1000 个 DMFs 对象关联。对表或视图设置 DMF 的每个实例都算作一个关联。
数据共享:
不能授予对 DMF 的共享权限,也不能对共享表或视图设置 DMF。
不支持对对象标签设置 DMF。
使用 CLONE 操作和 CREATE TABLE ... LIKE 操作不会在目标对象上产生 DMF 分配。
不能对 阅读者账户 中的对象设置 DMF。
不能根据事件表中的数据创建动态表或流。
美国 SnowGov 区域 内的试用账户和账户不支持该功能。
管理 DMFs¶
下面这些部分汇总了如何管理 DMFs:
DMF 权限¶
Snowflake 支持以下与 DMF 一起使用的权限。
请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。
权限 |
对象 |
用途 |
---|---|---|
CREATE FUNCTION |
架构 |
允许在架构中创建新的 DMF。 |
USAGE |
数据指标函数 |
允许调用 DMF。 |
EXECUTE DATA METRIC FUNCTION |
账户 |
允许在调用 DMF 时使用无服务器计算资源。 |
OWNERSHIP |
数据指标函数 |
转让 DMF 的所有权,其可以授予对 DMF 的完全控制权。需要改变 DMF 的大部分属性。 |
此外,如果要管理表或视图 DMF 的分配,使用具有以下权限的角色:
权限 |
对象 |
备注 |
---|---|---|
OWNERSHIP |
表或视图 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
USAGE |
数据指标函数 |
该权限适用于用户定义的 DMFs。 对于系统 DMFs,将 SNOWFLAKE.DATA_METRIC_USER 数据库角色授予表所有者角色。 |
USAGE |
数据库、架构 |
这些对象就是存储用户自定义的 DMF 的数据库和架构。 |
EXECUTE DATA METRIC FUNCTION |
账户 |
通过该权限,可以控制哪些角色可以访问无服务器计算资源。 |
DMF 命令参考¶
Snowflake 支持将以下命令与 DMFs 搭配使用:
此外,还可使用 ALTER TABLE 和 ALTER VIEW 命令执行以下操作:
对列添加或删除数据指标函数。
对表或视图本身添加或删除数据指标函数。
安排运行数据指标函数的时间。
有关代表性示例,请参阅 使用数据指标函数。
使用 GRANT <privileges> 和 REVOKE <privileges> 命令时,您可以执行以下操作:
授予账户角色或数据库角色权限。不支持其他角色类型,如应用程序角色。
指定任何受支持的 DMF 权限或
ALL PRIVILEGES
。
可以使用 GRANT OWNERSHIP 命令将所有权转移到账户角色。
GRANT 和 REVOKE 命令要求您指定所创建的用户定义 DMF 的实参。例如:
GRANT USAGE ON FUNCTION governance.dmfs.count_positive_numbers(TABLE(NUMBER, NUMBER, NUMBER)) TO data_engineer;
DMF 命令、操作和权限总结¶
下表汇总了 DMF 权限与 DDL 操作之间的关系。
请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。
除了表中的要求外,如果使用系统 DMF,请使用 ACCOUNTADMIN 角色或被授予了共享 SNOWFLAKE 数据库 IMPORTED PRIVILEGES 的角色。
操作 |
需要权限 |
---|---|
使用系统 DMF。 |
请参阅 系统数据指标函数。 |
使用 CREATE FUNCTION 命令创建 DMF 。 |
具有架构的 CREATE FUNCTION 权限的角色。 |
使用 ALTER FUNCTION 命令修改 DMF。 |
具有 DMF OWNERSHIP 权限的角色。 |
使用 ALTER TABLE 或 ALTER VIEW 命令在表或视图中添加 DMF 或删除 DMF。 |
具有以下权限的角色:
|
通过调用 DATA_METRIC_FUNCTION_REFERENCES 函数来识别指标引用。 |
以下两项兼具:
|
用 DESCRIBE FUNCTION 命令描述 DMF。 |
具有 DMF USAGE 权限的角色。 |
使用 DROP FUNCTION 命令从当前或指定架构中删除 DMF。 |
具有 DMF OWNERSHIP 权限的角色。 |
使用 SHOW DATA METRIC FUNCTIONS 或 SHOW FUNCTIONS 命令列出数据指标函数。 |
具有 DMF USAGE 权限的角色。 |
使用 SELECT 手动调用 DMF。 |
具有全局 EXECUTE DATA METRIC FUNCTION 权限的角色 或 具有 DMF 的 USAGE 权限的角色。 |