创建基于 SQL 的数据质量规则
您可以创建基于 SQL 的数据质量规则,以评估项目中数据的质量。 使用此类规则来测量错误,而不是评估是否符合特定质量标准。
要让基于 SQL 的数据质量规则为列和包含资产的数据质量评分做出贡献,可将该列作为相关项添加到相应的规则中。 使用 验证 关系类型的数据质量。 与此关系类型相关联的所有栏目都会报告相同的分数和问题。
要创建基于 SQL 的数据质量规则:
打开一个项目,点击新资产 > 测量和监控数据质量。
定义详细信息:
- 指定数据质量规则的名称。
- 可选:提供描述。 若启用AI生成的描述功能,则在保存规则时,系统将自动生成表达式解释及其对应的描述文本。 此描述会在您每次更改SQL语句时自动更新,除非您手动编辑了该描述。
- 可选: 选择数据质量维度以描述此资产中规则逻辑的主数据质量指标。 所选维度可用作报告类别,用于过滤或可视化所选数据。
选择 SQL 查询规则逻辑。
通过选择现有连接或创建新连接来指定要检查的数据源。 该连接必须支持SQL查询。 有关受支持的数据源,请参阅 用于组织和数据质量的受支持数据源。
如果您选择现有连接,并且此连接是使用个人凭证创建的,那么您将需要解锁该连接。
创建 SQL 查询。 您可以自己创建 SQL 查询,也可以输入纯文本查询,然后使用其中一个可用模型将其转换为 SQL。
使用纯文本查询的选项是技术预览功能。 技术预览功能可用于开发和测试,但不能用于生产。
要使用纯文本查询,项目必须启用自然语言查询功能,但此操作只需执行一次。 详情请参阅数据智能工具设置。
您可以通过上传查询示例,为模型提供更多上下文,以获得更准确、更能感知上下文的 SQL 输出。 有关更多信息,请参阅 《为文本到SQL转换提供额外上下文》。
请注意: 生成的查询语句在每次运行时未必完全相同,因此您可能会看到差异。在 SQL选项卡的自由文本区域中输入文本查询,选择可用模型之一(
),然后生成SQL语句。 由于基于 SQL 的规则的工作方式,请确保输入的查询能返回异常记录。 例如,"订购日期在未来 "或 "客户年龄在 18 岁以下"。
提示: 该模型在遵循提示指令将文本meta-llama/llama-3-3-70b model转换为SQL方面表现更佳,因此相较于 Granite 其他模型,可能提供更准确的结果。输入文本查询时,您可以提供其他信息,作为模型的自定义提示。 在附加信息前加上免责声明
Note:。项目资产来自所选连接和数据库,这些资产将作为参考资产,用于将您的文本查询转换为SQL查询。 默认情况下,大型语言模型会从这些参考资产中选取最多40个最相关的资产用于翻译。 要手动选择参考资产,请单击 “参考资产 ”。 请勿选择任何本地上传的 CSV 文件。 此类文件不会被用于生成SQL查询。
将生成的 SQL 语句复制到 SQL 区域。 您仍可根据需要更新 SQL 查询。
无论是自己创建查询还是使用生成的查询,都要确保 SELECT 语句满足以下条件:
- 该语句仅返回具有唯一名称的列。 名称重复的列在运行时会导致验证错误,即使规则测试通过也是如此。
- 此语句返回不满足数据质量条件的记录数。 基于 SQL 的规则的工作方式与从数据质量定义创建的规则不同。 它们报告 SELECT 语句作为
failed或Not 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 语句。 请注意,测试仅返回由查询选择的列的名称。 未执行任何实际处理。 单击 下一步时,将完成有效性检验。 除非查询通过此检查,否则无法继续。
在启用AI生成内容的项目中,保存规则时会自动生成SQL语句的解释说明。 每次SQL语句发生变更时,说明都会随之更新。
配置输出设置和内容。
选择是否要将规则输出写入数据库。 如果没有,那么在规则的运行历史记录中仅提供一些统计信息。 有关详细信息,请参阅为数据质量规则配置输出设置。
请检查配置。 要确保正确配置规则,可以在实际将其保存到项目之前对其进行测试。 将直接显示规则测试的输出,并与您在输出设置中配置的内容相匹配。
规则测试的结果直接显示。 通常最多显示100条异常记录。 若您配置了任何输出设置,则输出将与您的配置相符。 若未配置任何输出设置,则显示SELECT语句中的列。
要更改配置,请点击磁贴上的编辑
图标并更新设置。 完成审核后,请点击创建或创建规则并定义任务。 对于两种创建选项,规则及其相关的 DataStage 流程都会被添加到项目中。 DataStage 流的默认名称为
DataStage flow of data rule <rulename>。 若选择仅创建规则,则直接运行该规则时将生成一个采用默认设置的作业。 或者,您随时可以在稍后创建一个具有自定义设置的任务。 若您选择同时定义任务,则可直接配置任务设置。 有关设置的更多信息,请参阅《 为数据质量规则创建作业 》。
如果正确配置了规则而未缺少任何信息,那么其状态为 就绪。 此状态表示可以运行规则。 规则状态 未就绪 指示由于 SQL 语法错误,修改的依赖关系或其他规则定义问题而无法运行规则。 例如,用于访问数据源的密码已更改。 使用 IBM Knowledge Catalog API:创建数据质量规则 创建的数据质量规则更有可能出现这种状态。 使用 API 创建数据质量规则时,请确保还测试并验证该规则。
要在手动运行规则之前确认该规则仍然有效,可以通过从溢出菜单中选择 验证 来检查规则状态。