CustomSQL - AWS Glue

CustomSQL

このルールタイプは、次の 2 つのユースケースをサポートするように拡張されました。

  • データセットに対してカスタム SQL ステートメントを実行し、その戻り値を指定された式と対応させて確認します。

  • SELECT ステートメントで列名を指定するカスタム SQL ステートメントを実行し、それを何らかの条件と比較して行レベルの結果を取得します。

[Syntax] (構文)

CustomSql <SQL_STATEMENT> <EXPRESSION>
  • SQL_STATEMENT – 二重引用符で囲まれた単一の数値を返す SQL ステートメント。

  • EXPRESSION – ルールタイプの応答に対して実行し、論地値を生成するための式。詳細については、「表現」を参照してください。

例: ルール全体の結果を取得するカスタム SQL

このルール例では、データセットのレコード数を取得するための、SQL ステートメントを使用します。その後、このルールは、レコード数が 10 から 20 の間であることを確認します。

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

例: 行レベルの結果を取得するカスタム SQL

このサンプルルールでは、SELECT ステートメントで列名を指定し、それを何らかの条件と比較して行レベルの結果を取得する SQL ステートメントを使用しています。しきい値条件式は、ルール全体が失敗するまでに失敗するレコード数のしきい値を定義します。ルールには条件とキーワードの両方を一緒に含めることはできないことに注意してください。

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 を表します。AWS Glue データカタログを使用して、テーブルに対して 品質評価タスクを実行する場合、primary はテーブルを表します。

AWS Glue データカタログを使用している場合は、実際のテーブル名を使用することもできます。

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

AWS Glue ETL では、CustomSQL はデータ品質チェックに失敗したレコードを特定できます。これを機能させるには、データ品質を評価する主テーブルの一部であるレコードを返す必要があります。クエリの一部として返されたレコードは成功と見なされ、返されなかったレコードは不合格と見なされます。

次のルールにより、経過日数が 100 未満のレコードは成功と見なされ、それ以上のレコードは不合格とマークされます。

CustomSql "select id from primary where age < 100"

次の CustomSQL ルールは、レコードの 50% の経過日数が 10 を超えた場合は合格とし、失敗したレコードも特定します。この CustomSQL によって返されたレコードは合格と見なされ、返されなかったレコードは不合格と見なされます。

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

メモ: データセットにないレコードを返すと、CustomSQL ルールは失敗します。