DEA / ドメイン3 データ運用とサポート
重要な内容
AWS Glue DataBrew
は、コードを書かずに、画面の操作でデータをきれいに整える (クリーニングと正規化をする) ビジュアルなデータ準備ツールです。250 を超える組み込みの変換から選んで手順を組み立て、その手順 (レシピ) をデータセット全体に繰り返し適用できます。で、クラスターの管理は不要です。
DEA では、プロジェクト・レシピ・ジョブの関係、データのプロファイルによる一貫性の調査、データ品質ルールの定義と検証、そして変換対象のデータの準備と可視化が問われます。
Point
- Brew = 醸造する の意味です。生のデータを手順 (レシピ) に沿って仕込み、使える形に仕上げるイメージです。
- Recipe = レシピ は、変換の手順を順番に並べたものです。
- Profile = プロファイル (輪郭) は、データの統計的な特徴 (欠損の割合、値の分布、重複など) をまとめたものです。
- 和訳
- Brew: 醸造する
- Weblio英和辞書「brew」
概要
は、サンプルのデータを見ながら変換を試し、決まった手順をジョブで全体に適用する、という流れで使います。
| 構成要素 | 役割 |
|---|---|
| データセット | 元データへの読み取り専用の参照です。、 Data Catalog のテーブル、、 のデータベースなどを指定します。 |
| プロジェクト | データのサンプルを表の形で表示し、変換を対話的に試す作業場所です。 |
| レシピ | 変換の手順の並びです。公開 (publish) すると版が付き、ジョブで使えます。別のデータセットにも再利用できます。 |
| レシピジョブ | レシピをデータセット全体に適用し、結果を S3 などに出力します。 |
| プロファイルジョブ | データの統計を計算し、データ品質ルールを検証します。 |
| ルールセット | データ品質ルールの集まりです。 |
試験では、「コードを書かずにデータを整えたい」「ビジネスアナリストが自分でデータを準備したい」「データの欠損やの傾向を画面で確かめたい」という要件で DataBrew を選びます。
主要技術
①プロジェクトとサンプル
プロジェクトを開くと、データセットのサンプルが表の形で表示され、列ごとの値の分布や欠損の割合を見ながら変換を試せます。大きなデータでも画面の応答を速く保つため、全体ではなくサンプルを使います。
| サンプルの取り方 | 内容 |
|---|---|
| 先頭の n 行 | データの先頭から取ります (既定は先頭の 500 行)。 |
| ランダムな n 行 | データ全体から無作為に取ります。先頭に偏りがあるデータで使います。 |
| 行数 | 500、1,000、2,500 または任意の数で、最大 5,000 行です。 |
サンプルが小さいほど操作は速くなりますが、データ全体の特徴を反映しにくくなります。先頭の行だけに特定の値が集まっているようなデータでは、ランダムなサンプルを選びます (サンプリングの考え方は #58)。
②レシピと変換 ⚠️ 頻出
レシピには、次のような組み込みの変換を手順として追加します。各手順を適用した前後の様子を、サンプルですぐに確かめられます。
| 変換の分類 | 例 |
|---|---|
| 欠損と不正な値の処理 | 空の値を既定値や平均値で埋める、欠損のある行を削除する、不正な値をフラグで示す |
| 形式の統一 | 日付の形式をそろえる、大文字と小文字をそろえる、前後の空白を除く |
| 重複の除去 | 重複した行を削除する |
| 列の操作 | 列の分割と結合、名前の変更、型の変換、関数による新しい列の作成 |
| 構造の変換 | ピボット、アンピボット、結合 (join)、集計 (group by)、ネストした列の展開 |
| カテゴリと数値の処理 | ワンホットエンコーディング、の処理、数値の正規化 |
| 機密データの処理 | の列のマスキング、ハッシュ化、暗号化 |
レシピは公開すると版が付きます。同じレシピを毎日の新しいデータに繰り返し適用でき、レシピの をエクスポートして管理することもできます。
③ジョブとスケジュール
| ジョブ | 役割 | 出力 |
|---|---|---|
| レシピジョブ | レシピをデータセット全体に適用します | (CSV、、 などの形式、圧縮、パーティションを指定)、Data Catalog のテーブル、 など |
| プロファイルジョブ | データ全体の統計を計算し、品質ルールを検証します | プロファイルと検証レポート (S3 に保存し、コンソールで確認) |
ジョブは複数のノードで並列に処理します。最大ノード数 (既定 5)、タイムアウト (既定 48 時間)、再試行の回数を設定できます。料金は、ジョブで使ったノードの時間に対してかかります。
ジョブは のスケジュール (cron 式) で定期的に実行できます。ほかの処理と組み合わせる場合は、 の DataBrew 統合 (ジョブの完了を待つ .sync に対応) や、 から呼び出します。
④データのプロファイルと一貫性の調査 ⚠️ 頻出
プロファイルジョブは、データセット全体 (またはサンプル) の統計を計算します。データの一貫性 (同じ意味の値が同じ形で入っているか) を調べる手がかりになります。
| 調べられること | データの一貫性での使い方 |
|---|---|
| 列ごとの欠損 (空) の件数と割合 | 必須の列が空になっていないか |
| 重複した行の件数 | 同じデータが2回取り込まれていないか |
| 値の分布、最小・最大・平均、 | ありえない値 (マイナスの年齢など) が入っていないか |
| 一意な値の数、よく出る値 | 「東京」「東京都」「Tokyo」のような表記ゆれがないか |
| 列の間の相関 | 関係があるはずの列の値が矛盾していないか |
| () の検出 | 機密データが含まれる列を見つける |
プロファイルの結果はコンソールでグラフとして可視化されます。 の可視化は、変換の前にデータの状態を確かめるためのもので、利用者向けのダッシュボードには を使います。
⑤データ品質ルール ⚠️ 頻出
ルールセットに、データが満たすべき条件をルールとして定義し、プロファイルジョブで検証します。
| ルールの例 | 内容 |
|---|---|
| 値の範囲 | 列 APY の値が 0 から 100 の間にある |
| 欠損の割合 | 列 group_name の欠損が 5% を超えない |
| 複数の列への適用 | 列 rate、pay、increase の最大値が 100 を超えない |
| 複数の条件の組み合わせ | ProductId が asin- で始まり、かつ長さが 32 である (すべて / いずれかを選べます) |
| 合格の割合 | 列 A の値が列 B の値より大きい行が 95% 以上ある |
ルールセットのどれか1つのルールでも条件を満たさなければ、ルールセット全体が不合格になります。最低限の条件を見るルールセットと、より厳しい条件を見るルールセットを分けて定義することもできます。
検証が終わると、 はルールセットごとに検証結果 (SUCCEEDED、FAILED、ERROR) のイベントを に送ります。これをルールで受けて、不合格なら で通知する、後続の処理を止める、といった自動化ができます。ジョブの状態の変化 (DataBrew Job State Change) のイベントは、ジョブが動き終えたかを示すもので、ルールが不合格でもジョブ自体は成功として届きます。データの合否で後続を分けるときは、検証結果 (DataBrew Ruleset Validation Result) のイベントを使います。
⑥Glue Data Quality・SageMaker との使い分け
| ツール | 主な利用者 | 向く場面 |
|---|---|---|
| ビジネスアナリスト、データアナリスト | コードを書かずに画面でデータを整え、品質を確かめる | |
| データエンジニア | でルールを書き、 のパイプラインやカタログのテーブルで品質を継続的に検査する (#57) | |
| Glue ETL () | データエンジニア | 大規模で複雑な変換をコードで書く |
| Unified Studio のノートブック、SageMaker Data Wrangler | データサイエンティスト | の前処理と探索 (#59) |
試験対策
①判断マトリクス
| 問題文のキーワード | 選ぶもの | 理由 |
|---|---|---|
| コードを書かずにデータをクリーニング・正規化 | のプロジェクトとレシピ | 組み込みの変換を画面で組み立てます。 |
| 同じ手順を毎日の新しいデータに適用 | 公開したレシピ + レシピジョブ (スケジュール) | レシピは再利用できます。 |
| 欠損・重複・表記ゆれの傾向を調べたい | プロファイルジョブ | 列ごとの統計と分布を計算します。 |
| 「欠損が 5% 以下」などの条件を検証 | データ品質ルール (ルールセット) + プロファイルジョブ | 条件の合否を検証レポートにします。 |
| 品質の検証に失敗したら通知 | のルール + | 検証結果のイベントを受けて通知します。 |
| 先頭の行に偏りがあるデータでレシピを作る | ランダムなサンプル | データ全体の特徴を反映させます。 |
| ジョブを他の処理と順に動かす | の DataBrew 統合 | ジョブの完了を待って次へ進めます。 |
| の列を隠したい | DataBrew のマスキング・ハッシュ化の変換 | 変換の手順として追加できます。 |
②よくある誤答
- 大規模で複雑な変換を、開発者がコードで管理したいのに を選ぶこと。その場合は のジョブです。
- プロジェクトのサンプルに対する変換で、データ全体が変換されると考えること。全体への適用はレシピジョブで行います。
- DataBrew の可視化を、利用者に共有するダッシュボードと考えること。共有するダッシュボードは です。