CustomSQL - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CustomSQL

此规则类型已扩展为支持两个用例:

  • 针对数据集运行自定义 SQL 语句,并根据给定表达式检查返回值。

  • 运行自定义 SQL 语句,在 SELECT 语句中指定列名,与某个条件进行比较以获得行级结果。

语法

CustomSql <SQL_STATEMENT> <EXPRESSION>
  • SQL_STATEMENT — 返回单个数值的 SQL 语句,由双引号包围。

  • EXPRESSION — 针对规则类型响应运行以生成布尔值的表达式。有关更多信息,请参阅 Expressions

示例:用于检索整体规则结果的自定义 SQL

此示例规则使用 SQL 语句检索数据集的记录数。然后,该规则检查记录数是否介于 10 到 20 之间。

CustomSql "select count(*) from primary" between 10 and 20

示例:用于检索行级结果的自定义 SQL

此示例规则使用 SQL 语句,在 SELECT 语句中指定列名,与某个条件进行比较以获得行级结果。阈值条件表达式定义了整个规则失败的记录数的阈值。请注意,规则不能同时包含条件和关键字。

CustomSql "select Name from primary where Age > 18"

或者

CustomSql "select Name from primary where Age > 18" with threshold > 3
重要

primary 别名代表要评估的数据集的名称。在控制台上处理可视化 ETL 任务时,primary 始终表示传递给 EvaluateDataQuality.apply() 转换的 DynamicFrame。当您使用 Amazon Glue 数据目录对表运行数据质量任务时,primary 表示该表。

如果您在 Amazon Glue Data Catalog 中,也可以使用实际的表名:

CustomSql "select count(*) from database.table" between 10 and 20

您也可以联接多个表来比较不同的数据元素:

CustomSql "select count(*) from database.table inner join database.table2 on id1 = id2" between 10 and 20

在 Amazon Glue ETL 中,CustomSQL 可以识别未通过数据质量检查的记录。要使此功能起作用,您需要返回作为您正在评估数据质量的主表一部分的记录。作为查询一部分返回的记录被视为成功,未返回的记录被视为失败。

以下规则将确保将年龄小于 100 的记录标识为成功记录,并将超过该年龄的记录标记为失败。

CustomSql "select id from primary where age < 100"

当 50% 的记录年龄大于 10 时,此 CustomSQL 规则将通过,并且还将标识失败的记录。此 CustomSQL 返回的记录将被视为通过,而未返回的记录将被视为失败。

CustomSQL "select ID, CustomerID from primary where age > 10" with threshold > 0.5

注意:如果您返回数据集中不可用的记录,CustomSQL 规则将失败。