あるデータエンジニアリングチームは、毎日 AWS Glue ETL ジョブを実行して販売トランザクションデータを処理し、Amazon Redshift にロードしています。以下の要件を満たすデータ品質検証の仕組みを導入したいと考えています。 ・order_id カラムにNULL値が含まれていないこと(完全性チェック) ・transaction_amount カラムが正の値のみであること(範囲検証) ・email カラムが有効な形式に一致していること(フォーマット検証) ・全体のデータ品質スコアが80%を下回った場合はETLジョブを失敗させること 最も少ない運用オーバーヘッドでこれらの要件を満たすアプローチはどれですか?
AWS Glue Data Quality は DQDL を使ってデータ品質ルールを宣言的に定義できるマネージドサービスです。EvaluateDataQuality トランスフォームをワークフローに組み込むことで、ルール評価・スコア算出・閾値判定・ジョブ制御をほぼコードなしで実現できます。Completeness(完全性)・ColumnValues(数値範囲)・ColumnValues matches(正規表現)などの標準ルールが用意されており、スコアが80%未満の場合にジョブを失敗させる設定も容易に行えます。 選択肢AのPythonアサーションは実装可能ですが、ルール管理・レポート生成・スコア計算を自前で実装する必要があり、運用負荷が大きくなります。 選択肢CのAmazon Deequ はオープンソースライブラリで機能は豊富ですが、カスタムライブラリ管理やレポートパイプラインの整備が必要で、マネージドサービスに比べ運用負荷が増大します。 選択肢DのLambdaによる事後検証は、不正データが既にRedshiftに取り込まれた後に実行されるため、ETLパイプラインを事前に止めることができず、データ修正コストが増大します。