数据质量问题的补救

数据质量度量 (DMFs) 可让您确定表中有多少记录可能包含质量问题。例如,SNOWFLAKE.CORE.NULL_COUNT 可以标识在特定列中包含 NULL 值的记录数。

为了帮助您修复这些可能的质量问题,您可以调用 SYSTEM$DATA_METRIC_SCAN 系统函数以返回由 DMF 标识为包含未通过数据质量检查的数据的各个记录。例如,如果您将 NULL_COUNT DMF 作为参数传入到 SYSTEM$DATA_METRIC_SCAN 函数中,就可以获得包含 NULL 值的实际记录,而不仅仅是包含 NULL 值的记录数。

支持的 DMFs

SYSTEM$DATA_METRIC_SCAN 函数接受 DMF 作为参数,以返回由 DMF 标识为包含问题数据的记录。以下系统 DMFs 可用作参数:

  • SNOWFLAKE.CORE.NULL_COUNT

  • SNOWFLAKE.CORE.NULL_PERCENT

  • SNOWFLAKE.CORE.BLANK_COUNT

  • SNOWFLAKE.CORE.BLANK_PERCENT

  • SNOWFLAKE.CORE.DUPLICATE_COUNT

限制和注意事项

  • 不能使用自定义 DMFs 作为 SYSTEM$DATA_METRIC_SCAN 函数的参数。

  • 如果表受策略(如掩码策略或行访问策略)保护,则 SYSTEM$DATA_METRIC_SCAN 函数可能会返回意外或不完整的数据,因为结果取决于执行函数时用户的角色。

调用 SYSTEM$DATA_METRIC_SCAN 函数

当您调用 SYSTEM$DATA_METRIC_SCAN 函数时,它会分析一个带有 DMF 的表,以识别可能的数据质量问题。您必须将以下参数传递给 SYSTEM$DATA_METRIC_SCAN 函数:表的名称、DMF 以及传递给 DMF 的任何参数,以帮助识别有问题的记录。例如,假定 SNOWFLAKE.CORE.NULL_COUNT 函数返回特定列中的 NULL 值的总数,则以下函数返回 employeesTable 表中在过去特定时间存在的表版本中的 NULL 列中具有 SSN 值的行。

SELECT *
  FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
    REF_ENTITY_NAME  => '<governance.sch.employeesTable>'
    ,METRIC_NAME  => '<snowflake.core.null_count>'
    ,ARGUMENT_NAME => '<SSN>'
    ,AT_TIMESTAMP => '<2024-08-28 02:00:00 -0700>'
  ));
Copy

要检查表或视图过去的 DMF 评估结果,可以传递 AT_TIMESTAMP 参数。AT_TIMESTAMP 参数允许您使用 Time Travel 转换时间戳字符串,以仅返回在“2024-08-28 02:00:00 -0700”时间戳时表中存在的那些记录。

使用 SYSTEM$DATA_METRIC_SCAN 修复数据

SYSTEM$DATA_METRIC_SCAN 函数是一个返回一组行的 表函数。该函数的输出可在 DML 语句中使用,以针对已被标识为包含未通过数据质量检查的数据的记录执行操作。

假设您要用 NULL 值替换 temail 列中的空白值。由于 BLANK_COUNT 数据度量函数标识空白值,因此可以运行以下语句:

UPDATE T
  SET email = null
  WHERE T.ID IN (SELECT ID FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
    REF_ENTITY_NAME => '<t>'
    ,METRIC_NAME => '<snowflake.core.blank_count>'
    ,ARGUMENT_NAME => '<email>'
  )));
Copy
语言: 中文