0 / 0
Go back to the English version of the documentation
创建基于 SQL 的数据质量规则
Last updated: 2024年12月13日
创建基于 SQL 的数据质量规则

您可以创建基于 SQL 的数据质量规则,以评估项目中数据的质量。 使用此类规则来测量错误,而不是评估是否符合特定质量标准。

要让基于 SQL 的数据质量规则为资产或列的数据质量评分做出贡献,可将该资产或列作为相关项添加到相应的规则中。 使用 验证 关系类型的数据质量。 对于与此关系类型链接的所有资产和列,将报告相同的分数和问题。

要创建基于 SQL 的数据质量规则:

  1. 打开一个项目,点击新资产 > 测量和监控数据质量

  2. 定义详细信息:

    • 指定数据质量规则的名称。

    • 可选:提供描述。

    • 可选: 选择数据质量维度以描述此资产中规则逻辑的主数据质量指标。 所选维度可用作报告类别,用于过滤或可视化所选数据。

      根据数据质量定义创建规则时,可能已设置数据质量维度。 您可以保留该维度,删除维度设置或选择其他维度。

  3. 启用 使用 SQL 语句 选项。

  4. 通过选择现有连接或创建新连接来指定要检查的数据源。 有关受支持的数据源,请参阅 用于组织和数据质量的受支持数据源

    如果您选择现有连接,并且此连接是使用个人凭证创建的,那么您将需要解锁该连接。

  5. 输入 SQL 语句。

    编写查询时,请确保 SELECT 语句满足以下条件:

    • 该语句仅返回具有唯一名称的列。 具有重复名称的列将导致验证错误。
    • 此语句返回不满足数据质量条件的记录数。 基于 SQL 的规则的工作方式与从数据质量定义创建的规则不同。 它们报告 SELECT 语句作为 failedNot met返回的记录。 此外,报告的记录总数等于返回的记录数,而不是检查的记录数。

    例如,假设您有一个包含 31 行的表 db2admin.credit_card ,并且要检查表中有多少条卡类型为 AMEX 的记录,那么差异如下所示:

    数据质量定义中的数据质量规则
    检查卡类型为 AMEX 的记录。
    数据质量定义中的表达式: Col = 'AMEX'
    数据质量规则中的 Bound 表达式: credit_card.card_type = 'AMEX'
    样本结果: Total: 31 | Met: 4 (12.9%) Not met: 27 (87.1%)

    基于 SQL 的数据质量规则
    检查卡类型不是 AMEX 的记录。
    SELECT 语句: select card_type from db2admin.credit_card where card_type <> 'AMEX'
    样本结果: Total: 27 | Met: 0 (0%) Not met: 27 (100%)

    另外,请检查 用于数据质量规则的样本 SQL 语句集合。 这些样本演示了如何编写 SQL 规则以返回不符合质量条件的记录。 您可以将提供的语句复制到自己的数据质量规则中,并根据需要进行调整。

    • 在 SELECT 语句中指定列,表和模式名称时,请考虑以下约定:

      • PostgreSQL 数据源中的表和模式名称区分大小写。 您可能需要将名称括在双引号中,如以下示例中所示: "schema". "table_name"
      • 请尝试避免 SELECT * 个查询。 当列名更改时,此类查询可能会导致验证错误。 缩小列选择范围。
      • 如果列名未以字母字符开头或包含除字母字符,数字字符或下划线以外的字符,请对列名使用别名。

    您可以随时测试 SQL 语句。 请注意,测试仅返回由查询选择的列的名称。 未执行任何实际处理。 单击 下一步时,将完成有效性检验。 除非查询通过此检查,否则无法继续。

  6. 配置输出设置和内容。

    选择是否要将规则输出写入数据库。 如果没有,那么在规则的运行历史记录中仅提供一些统计信息。

    要生成数据库表:

    1. 启用 外部输出 选项并展开该部分。

      选择下列其中一个选项:

      • 写入新的数据库表

        选择连接。 根据所选连接,选择模式,或选择目录和模式。 然后,输入要创建的输出表的名称。

        运行规则时,此新输出表也会作为数据资产添加到项目中。

      • 写入现有数据库表

        选择连接。 根据所选连接,选择模式和现有表,或选择目录、模式和现有表。 输出内容部分由该表格的列填充,您可以将内容映射到这些列。

        如果项目中不存在相应的数据资产,那么将在运行规则时创建相应的数据资产。

      有关受支持的数据库类型,请参阅 用于组织和数据质量的受支持数据源。 模式和表名必须遵循以下约定:

      • 名称的第一个字符必须是字母字符。
      • 其余名称可以由字母字符,数字字符或下划线组成。
      • 名称不得包含空格。

      您可以从项目中的 " 资产 " 页面或从规则的 运行历史记录访问对应于规则输出表的数据资产。

      SQL 查询确定将哪些记录写入输出表,但您可以配置以下设置:

      • 最大异常输出记录数: 可以包含所有记录或设置最大数目。

      • 更新方法: 可以将新的输出记录追加到输出表的现有内容中。 如果要仅保留最新运行的输出结果,请选择覆盖现有记录。

        对于更新方法 追加,无法更改表模式,即,无法重命名,添加或删除列。 如果要更改数据质量规则的输出内容并写入现有输出表,请确保使用更新方法 覆盖 将输出表中的列替换为新定义的输出列。

      您可以随时更改输出类型。 根据您的新选择,将重置或覆盖任何已配置的设置。

    2. 配置输出表的内容。 缺省情况下, SQL 查询选择的所有列都包含在输出表中。 您可以除去所选列或所有这些列,并添加其他内容。 单击 添加输出内容 ,然后选择下列其中一个选项:

      • : 选择要在输出表中看到的列。 您可以从 SQL 查询返回的所有列中进行选择。

      • 统计信息和属性: 选择要包含在输出表中的任何其他属性或统计信息:

        • 记录标识: 包含用于标识输出中的记录的唯一键。
        • 规则名称: 包含数据质量规则的名称。
        • 系统日期: 显示运行规则的系统日期。 系统日期是在服务器上设置的时区中的日期。
        • 系统时间:显示运行规则时的系统日期和时间。 系统日期和时间是在服务器上设置的时区中的日期和时间。
        • 传递规则: 显示记录满足的规则条件数。
        • 失败的规则: 显示记录未满足的规则条件数。
        • 通过规则的百分比: 显示已满足的规则条件的百分比。
        • 失败规则百分比: 显示未满足的规则条件的百分比。
  7. 请检查配置。 要确保正确配置规则,可以在实际将其保存到项目之前对其进行测试。 将直接显示规则测试的输出,并与您在输出设置中配置的内容相匹配。

    要更改配置,请单击磁贴上的 Edit 图标 编辑图标 并更新设置。 审核完成后,单击 创建。 该规则及其相关的 DataStage 流程已添加到项目中。 DataStage 流程的默认名称是 DataStage flow of data rule <rulename>

如果正确配置了规则而未缺少任何信息,那么其状态为 就绪。 此状态表示可以运行规则。 规则状态 未就绪 指示由于 SQL 语法错误,修改的依赖关系或其他规则定义问题而无法运行规则。 例如,用于访问数据源的密码已更改。 使用 IBM Knowledge Catalog API:创建数据质量规则 创建的数据质量规则更有可能出现这种状态。 使用 API 创建数据质量规则时,请确保还测试并验证该规则。

要在手动运行规则之前确认该规则仍然有效,可以通过从溢出菜单中选择 验证 来检查规则状态。

了解更多信息

后续步骤

父主题: 管理数据质量规则

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more