本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 规则将失败。