あるデータエンジニアリングチームは、AWS Glue ETLジョブで変換したデータをAmazon Redshiftにロードするパイプラインを運用しています。ロード前に以下のデータ品質チェックを自動化したいと考えています。 (1) `customer_id` カラムのNULL値率が1%以下であること (2) `order_id` カラムに重複レコードがないこと チェックに失敗した場合はパイプラインを自動停止し、Amazon SNSで担当者にアラートを送信する必要があります。最も適切なアプローチはどれですか?
AWS Glue Data Qualityは、ETLパイプライン内でデータ品質ルールを宣言的に定義できるサービスです。DQDLを使って「ColumnValues 'customer_id' with threshold > 0.99」「IsPrimaryKey 'order_id'」のようなルールを記述し、Glueワークフロー内で評価できます。ルール違反時のパイプライン自動停止とSNSアラート送信もネイティブに設定でき、品質スコアのダッシュボード可視化も提供されます。 選択肢BのAWS Glue DataBrewのプロファイルジョブを実行してデータ品質レポートをS3に出力するアプローチは、品質の可視化に有効ですが、ETLワークフローのフロー制御(チェック失敗時の自動停止)との連携が複雑で、LambdaでS3レポートを解析するアーキテクチャは追加コンポーネントの管理が必要になります。 選択肢Cのデータをお Amazon Redshiftにロードした後、マテリアライズドビューとストアドプロシージャでデータ品質を検証するアプローチは、不良データがRedshiftに入ってしまいます。後からのDELETEはRedshiftのストレージを消費し、操作も複雑です。データ品質はロード前に確認するべきです。 選択肢DのAWS Glue ETLジョブのPySparkコードにカスタムのデータ品質チェック処理を実装するアプローチは、機能しますが、Glue Data Qualityのような宣言的なルール管理・品質スコアの可視化・統合アラート機能がなく、ルール追加のたびにコード修正が必要となりメンテナンスコストが増大します。