0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS Glue Data Qualityを試してみた

Last updated at Posted at 2022-12-13

背景・目的

先日、AWS Glue Data Quality(プレビュー版)が発表されたので、仕様の理解と簡単に試してみました。
なお、現在プレビュー版であるため、GAまでに仕様が変わる可能性があります。

まとめ

  • 2022/12/14現在、プレビューである。
  • Data Qualityは、OSSのDeequを利用している。
  • データの品質評価には、DQDLという独自の言語を書いて実装する。
  • Glueでは、Transformの一つのノードとして実装されている。

概要

AWS Glue Data Qualityとは?

  • 自動的にデータを分析、データの統計情報を収集
  • 推奨されるデータ品質ルールを設定し、それに基づき検証を開始する。推奨されたデータ品質ルールは変更することも、新しいルールを追加することも可能。
  • データ品質が低下した場合に、ユーザに警告するアクションを設定することも可能。データ品質ルールとアクションは、データパイプライン上でGlueのETLジョブに設定することも可能。
  • OSSのDeequを使用してルールを評価する。

DQDL

  • Data Quality Definition Languageの略。
  • AWS Glue Data Qualityのルールを定義するために使用するドメイン固有の言語。

DQDL Syntax

  • 大文字と小文字が区別される。
  • 個々のデータ品質ルールをグループ化するルールセットが含まれる。
  • ルールセットの作成には、Rulesという名前のリストを作成する。(以下参照)
Rules = [
   IsComplete "order-id",
   IsUnique "order-id"
]

Rule structure

  • ルールタイプにより異なるが、基本的な形式は以下の通り。
<RuleType> <Parameter> <Parameter> <Expression>
  • RuleTypeは、構成するルールタイプ名。例えば以下のようなものがある。
    • IsComplete
    • IsUnique
    • CustomSql
  • Rule Parametersは、ルールタイプごとに異なる。詳細はこちらを参照。

Rule combination

  • ルールを結合するために、以下が使用できる。
    • and
      • andで接続する各ルールは括弧で加工必要がある。
      (IsComplete "id") and (IsUnique "id")
      
    • or
      • orで接続する各ルールは括弧で加工必要がある。
      (RowCount "id" > 100) or (IsPrimaryKey "id")
      

実践

Tutorial: Getting started with Data Quality

こちらを元に試してみます。

Step 1: Add the Evaluate Data Quality node to the visual job

  1. Glue Studioを開きます。

  2. Action>Evaluate Data Qualityを選択します。
    image.png

  3. Parent nodeにData Sourceを指定し、デフォルトで設定されていたTargetとTransform(ApplyMapping)を削除します。
    image.png

Step 2: Create a rule using DQDL

DQDLを使用してルールを作成します。

  1. Evaluate DataQualityのTransformタブを選択します。

  2. DQDL rule builderでCompletenessを選択します。

    • Completenessは、指定された列に対して、列内の完全な値のパーセンテージをチェックします。(ここでいう完全はNull以外を指しています。)
      image.png
  3. Schemaタブをクリックすると、列名が表示されるので対象の列を選択します。ここでは、order_dateを選択してます。
    image.png

  4. ルールを変更します。ここでは90%を超える完全な値を期待しています。
    image.png

Step 3: Configure Data Quality actions and output

  • 以下を設定します。
    • Data quality actions
      • 以下により、CWLに結果が出力されます。また、失敗した場合ロードせずに異常終了します。
        • Publish results to Amazon CloudWatchにチェック
        • Fail job when data quality failsにチェック
          • fail job without loading target dataを選択
    • Data quality transform output
      • 以下により、データ品質評価の結果を出力します。
        • Data quality results
    • Data quality output settings
      • 指定することで、データ品質評価の結果を指定したS3バケットに出力します。
  • 設定結果は以下のとおりです。
    image.png

Step 4 : Run job

  • ジョブを実行します。
    image.png

Step 5: View data quality results

  1. ジョブが完了したらジョブのData qualityタブをクリックします。

    • Data quality resultsを見るとDQ passedとなっています。また、その下のRule_1もRule passedになっています。
      image.png
  2. Data quality output settingsでS3ファイル に出力するように設定していたので確認します。ファイルが出力されています。
    image.png

  3. S3 Selectで確認してみます。

    • 品質評価の開始と終了の時刻と、結果、メトリクスが確認できました。
      image.png

考察

以前、データマネジメントのデータ品質を調査している過程で、Deequを知りました。当時は自前でインストールやセットアップが必要だったため、試すまで至っていませんでした。この度、Glueに統合されて簡単に利用できることがわかったので、今後は使い倒していこうと思います。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?