目次

AWS Glue DataBrew 完全ガイド v2.0

初心者から実務者向けの包括的解説

AWS Glue DataBrew は、コードを書かずにデータの視覚的なクリーニング・変換を行うノーコード ETL サービスです。250+ のプリビルト変換を使って S3・Glue Data Catalog・Redshift・RDS・Snowflake のデータを対話的に変換できます。データアナリスト・データサイエンティストが ML モデル訓練向けのデータ前処理やデータ品質チェックを効率化します。本ドキュメントは、DataBrew の概念・アーキテクチャ・設計パターン・エコシステム・2025-2026 の最新動向を体系的に解説する包括的ガイドです。

ドキュメントの目的

本ガイドは以下を対象としています。

  • 初心者向け: DataBrew とは何か、ノーコード ETL の基本を学びたい方
  • データサイエンティスト向け: 特徴量エンジニアリング・EDA(探索的データ分析)
  • データアナリスト向け: データクリーニング・品質チェック・プロファイリング
  • データエンジニア向け: Glue ETL との使い分け・パイプライン設計
  • 意思決定者向け: Trifacta・dbt Core・Alteryx との比較・投資判断

2026 年の DataBrew エコシステム

  • AI 駆動変換推奨: LLM で変換パターンを自動提案
  • Bedrock 統合: 生成 AI でデータ品質レポート自動生成
  • マルチデータソース拡張: BigQuery・Elasticsearch 対応(検討中)
  • リアルタイムプロファイリング (プレビュー):ストリーミングデータ向けの品質監視
  • カスタム変換レシピ: ユーザー定義変換の作成・共有機能
  • 連邦学習対応(検討中):オンプレ + クラウドデータの安全な統合

定義

AWS 公式による定義:

“AWS Glue DataBrew is a visual data preparation tool that enables users to clean and normalize data without writing any code.”

特徴:

  • ノーコード GUI: ドラッグ&ドロップで変換定義
  • 250+ 変換: 欠損値補完・正規化・ピボット・マスキング等
  • データプロファイリング: 統計・欠損・PII 自動検出
  • レシピ保存: 変換ルールを再利用・チーム共有
  • マルチデータソース: S3 / Redshift / RDS / Glue Data Catalog
  • 品質チェック: データ品質ルール定義・自動検証

目次

  1. 概要
  2. DataBrew が解決する課題
  3. 主な特徴
  4. Glue DataBrew vs Glue Spark ETL
  5. アーキテクチャ
  6. Project・Recipe・Dataset・Job
  7. 250+ 変換
  8. データプロファイリング
  9. PII 検出・マスキング
  10. 主要ユースケース
  11. 設定・操作の具体例
  12. CLI 操作
  13. SDK 実装例
  14. IaC (CloudFormation/Terraform)
  15. 類似サービス比較表
  16. ベストプラクティス
  17. トラブルシューティング
  18. セキュリティ・コンプライアンス
  19. パフォーマンスチューニング
  20. コスト最適化
  21. 2025-2026 最新動向
  22. 学習リソース・参考文献
  23. 実装例・チェックリスト
  24. まとめ

概要

初心者向けメモ: DataBrew は「ノーコードのデータクリーニング・変換ツール」です。Spark・SQL を書けない分析チームが、GUI で欠損値補完・型変換・正規化・マスキングを実装できます。Glue ETL は「複雑な変換をコードで実装」するのに向いていますが、DataBrew は「データ探索・品質確認・基本的な前処理」に向いています。

DataBrew は以下を実現します:

  • ノーコード GUI - ドラッグ&ドロップで変換設計
  • 250+ 変換 - よく使う処理が組み込み
  • データプロファイリング - 統計・欠損・分布を自動計算
  • PII 検出・マスキング - 個人情報の自動検出・保護
  • レシピ保存・再利用 - 変換ルールを他データセットに適用
  • 品質チェック - 自動データ品質検証

DataBrew が解決する課題

1. データ前処理コードが複雑・時間かかる

課題: Spark / SQL でデータ前処理を書くと、欠損値・型変換・正規化のコードが膨大

DataBrew の解決:

Spark コード 500+ 行(複雑な処理)
  ↓
DataBrew: GUI で 5 分で完成
  ├── 欠損値補完(平均 / 中央値)
  ├── 型変換(文字列 → 日付)
  ├── 外れ値除去
  └── 正規化(Min-Max / Z-score)

2. データ品質問題の検出が遅い

課題: 分析途中に「NULL が多い」「値の範囲がおかしい」に気づく

DataBrew の解決: データプロファイリングで事前検出

プロファイルジョブ実行
  ↓
自動分析結果:
  ├── NULL: 15%(しきい値超過!)
  ├── 値の範囲外: 2% のレコード
  ├── 一意の値: 1,024
  └── 相関関係: ヒートマップ表示
  ↓
品質問題を早期発見・対策

3. PII(個人識別情報)の保護が不十分

課題: 分析・テスト用データセットに顧客名・住所・クレジットカード番号が含まれたまま?

DataBrew の解決: 自動 PII 検出・マスキング

PII 検出:メール・電話・CC 番号・住所を自動検出
  ↓
マスキング変換:正規表現で [EMAIL] / [PHONE] に置換
  ↓
安全なテスト・分析用データセット作成

4. データセットの再利用性が低い

課題: 毎回、同じクリーニングを手作業で実装?

DataBrew の解決: レシピで再利用

レシピ作成:
  1. 欠損値を中央値で補完
  2. age を integer に変換
  3. email をマスク
  4. created_at を UTC に統一
  
  ↓
同じレシピを複数データセットに自動適用

主な特徴

特徴 説明
ノーコード GUI ドラッグ&ドロップで変換設計
250+ 変換 欠損値・正規化・ピボット・マスキング等
データプロファイリング 統計・欠損・分布を自動分析
PII 検出 メール・電話・CC 番号・住所を自動検出
レシピ保存 変換ルールを再利用・チーム共有
品質ルール NULL チェック・範囲チェック・パターンマッチ
マルチデータソース S3 / Redshift / RDS / Glue Data Catalog
データプレビュー 変換前後の最初の 500 行を可視化
バッチジョブ スケジュール実行で自動変換
コスト効率 従量制・管理インフラ不要

Glue DataBrew vs Glue Spark ETL

観点 DataBrew Glue Spark ETL Lambda
対象ユーザー アナリスト・DS エンジニア 開発者
コーディング なし(ノーコード) Spark / PySpark Python
変換の自由度 250+ プリビルト 完全カスタム 完全カスタム
学習曲線 低(GUI) 中(Spark 習得必要) 中(コード必須)
データプロファイリング ✅ 自動統計分析
PII 検出
レシピ再利用 部分的
大規模データ ✅ GB~TB ✅ TB~PB 小~中
スケール データサイズに自動スケール 明示的なワーカー設定 一度だけ実行
推奨用途 EDA・前処理・品質確認 複雑 ETL・機械学習準備 API・イベント駆動

アーキテクチャ

graph TB
    Sources["データソース<br/>(S3 / Redshift / RDS / Glue Catalog)"]
    
    Project["DataBrew Project<br/>(GUI)"]
    
    Transforms["250+ 変換<br/>(ドラッグ&ドロップ)"]
    
    Recipe["Recipe<br/>(変換ルール保存)"]
    
    Profile["Profiling Job<br/>(統計・品質分析)"]
    
    Quality["Quality Rules<br/>(品質チェック)"]
    
    Output["Output<br/>(S3 / Redshift / Glue Catalog)"]
    
    Sources -->|接続| Project
    Project -->|操作| Transforms
    Transforms -->|保存| Recipe
    
    Project -->|実行| Profile
    Profile -->|出力| Quality
    
    Recipe -->|実行| Output
    Quality -->|検証| Output

Project・Recipe・Dataset・Job

Project(プロジェクト)

Project: SalesData_Cleaning
  ├── Dataset: sales_raw.csv (S3)
  │   └── 最初の 500 行を GUI で表示
  │
  ├── Transforms:
  │   ├── 欠損値を中央値で補完
  │   ├── amount 列を DOUBLE に変換
  │   ├── created_at を UTC に統一
  │   └── email をマスク
  │
  └── Preview: 変換前後を可視比較

Recipe(レシピ)

変換ルールを永続化・再利用

Recipe: sales_cleaning_v2
  ├── Step 1: MissingValueImputation (amount, MEDIAN)
  ├── Step 2: TypeConversion (amount, DOUBLE)
  ├── Step 3: FormatConversion (created_at, ISO8601)
  └── Step 4: MaskTransform (email, REGEX)
  
→ 異なるデータセットに自動適用

Job(ジョブ)

バッチ実行

ProfileJob: DailyQualityCheck
  Schedule: 毎日 00:00 UTC
  Input: s3://data-lake/raw/
  Output: s3://data-lake/profiled/
  
RecipeJob: DailyTransform
  Schedule: 毎日 01:00 UTC
  Recipe: sales_cleaning_v2
  Output: s3://data-warehouse/clean/

250+ 変換

データクリーニング

変換 説明
MissingValueImputation 欠損値を平均・中央値・固定値で補完
RemoveDuplicate 重複レコード削除
OutlierDetection 外れ値検出・削除
NormalizeText 大文字統一・トリム・特殊文字除去

フォーマット変換

変換 説明
TypeConversion 列の型変換(文字列 → 数値 / 日付)
FormatConversion 日付フォーマット統一(YYYY-MM-DD)
ColumnSplit 列の分割(“John Doe” → “John”, “Doe”)
ColumnMerge 列の結合(複数列を 1 列に)

ML 前処理

変換 説明
Normalization Min-Max / Z-score 正規化
OneHotEncoding カテゴリ変数を 0/1 で展開
LabelEncoding カテゴリを整数に変換
Tokenization テキストをトークン化
StopwordRemoval ストップワード除去

セキュリティ・PII

変換 説明
MaskEmail メール → [EMAIL]
MaskPhone 電話 → [PHONE]
MaskCreditCard CC 番号 → [CARD]
Hashing SHA-256 ハッシュ化

データプロファイリング

自動統計分析

プロファイルジョブ実行
  ↓
自動分析項目:
  ├── 各列の統計(min, max, 平均, 中央値)
  ├── NULL 値の割合
  ├── 一意の値数(distinct count)
  ├── 値の頻度分布
  ├── データ型の不整合
  ├── 数値の外れ値
  └── 相関関係マトリックス(ヒートマップ)

データ品質ルール

Rule 1: NullCheck
  列: age
  条件: 15% 以上の NULL は警告

Rule 2: RangeCheck
  列: age
  条件: 0 ≤ age ≤ 120

Rule 3: PatternMatch
  列: email
  条件: 正規表現 ^[\w\.-]+@[\w\.-]+\.\w+$

Rule 4: UniquenesCheck
  列: user_id
  条件: 100% ユニーク値

PII 検出・マスキング

自動 PII 検出

DataBrew は以下を自動検出:

  • 個人名 - “John Doe”, “田中太郎”
  • メールアドレス - user@example.com
  • 電話番号 - 090-1234-5678
  • クレジットカード - 4532-1234-5678-9010
  • 住所 - “東京都渋谷区”
  • 社会保障番号 - 123-45-6789
  • パスポート番号

マスキング変換

  • 元データ:
  • “Customer: John Doe, Email: john@example.com, Phone: 090-1234-5678”
  • マスキング後:
  • “Customer: [PERSON], Email: [EMAIL], Phone: [PHONE]”

ハッシング化

元: customer_id = "CUST-12345"
  ↓
SHA-256 ハッシング
  ↓
結果: "3a7bd3e2...(ハッシュ値)"
  ↓
ハッシュキーで元に復号可能(監査用)

主要ユースケース

  1. ML データ準備

    • 特徴量エンジニアリング・欠損値補完・正規化
    • SageMaker 訓練データ前処理
  2. データウェアハウス ETL

    • S3 のログデータ → Redshift へのロード前処理
    • 型変換・正規化・フィルター
  3. データ品質モニタリング

    • 毎日のデータプロファイリング
    • 異常検知(欠損率急増等)
  4. PII 保護・匿名化

    • テスト・分析用データセットの個人情報マスキング
    • GDPR / CCPA コンプライアンス
  5. EDA(探索的データ分析)

    • データの統計分析・分布確認
    • アナリストがビジネス仮説を検証
  6. データ統合・クレンジング

    • 複数ソース(DB・API・ファイル)のデータを統一フォーマット化
  7. データレイク管理

    • 生データ → Bronze (クリーン) → Silver (統合) → Gold (分析用) の各レイヤーを DataBrew で自動化
  8. コンプライアンスデータ処理

    • HIPAA / PCI-DSS 準拠のための PII 除去・監査

設定・操作の具体例

AWS Management Console での作成

  1. 新規プロジェクト

    Project name: SalesAnalytics_Clean
    Data source: s3://my-bucket/sales/
    
  2. データセット選択

    ファイル: sales_2026_04.csv
    → 最初の 500 行を GUI で表示
    
  3. 変換追加

    + Add step
    ├── Delete duplicates
    ├── Handle missing values (amount: MEDIAN)
    ├── Normalize numbers (price: MIN_MAX)
    └── Mask sensitive data (customer_name: HASH)
    
  4. プレビュー確認

    前: customer_name = "John Doe"
    後: customer_name = "3a7bd3e2..."
    
  5. レシピ保存

    Recipe name: sales_cleaning_v1
    → 他のデータセットに再利用可
    

CLI 操作

Project 作成

aws databrew create-project \
  --name SalesAnalytics \
  --dataset-name sales_raw \
  --sample SIZE \
  --role-arn arn:aws:iam::123456789012:role/DataBrewRole

Recipe 作成

aws databrew create-recipe \
  --name sales_cleaning \
  --steps '[
    {"Action": {"Operation": "DELETE_DUPLICATE_ROWS"}},
    {"Action": {"Operation": "IMPUTE_MISSING_VALUES", "Parameters": {"aggregation": "MEDIAN"}}}
  ]'

Job 実行

aws databrew create-job \
  --name DailyClean \
  --type RECIPE \
  --dataset-name sales_raw \
  --recipe-name sales_cleaning \
  --output-location s3://output-bucket/clean/ \
  --role-arn arn:aws:iam::123456789012:role/DataBrewRole

Job スケジューリング

aws databrew create-schedule \
  --name DailyRun \
  --cron-expression "cron(0 1 * * ? *)" \
  --job-names DailyClean

SDK 実装例

Python (Boto3)

import boto3
import json

databrew = boto3.client('databrew', region_name='us-east-1')

# Project 作成
def create_project():
    response = databrew.create_project(
        Name='SalesAnalytics',
        DatasetName='sales_raw',
        RoleArn='arn:aws:iam::123456789012:role/DataBrewRole',
        Sample={'Type': 'FIRST_N', 'Size': 500}
    )
    print(f"Project created: {response['Name']}")
    return response

# Recipe 作成
def create_recipe():
    response = databrew.create_recipe(
        Name='sales_cleaning',
        Steps=[
            {
                'Action': {
                    'Operation': 'DELETE_DUPLICATE_ROWS'
                }
            },
            {
                'Action': {
                    'Operation': 'HANDLE_MISSING_VALUES',
                    'Parameters': {
                        'sourceColumn': 'amount',
                        'strategy': 'IMPUTE',
                        'value': 'MEDIAN'
                    }
                }
            }
        ]
    )
    print(f"Recipe created: {response['Name']}")
    return response

# Job 実行
def run_job():
    response = databrew.start_job_run(
        Name='DailyClean'
    )
    print(f"Job started: {response['Run']}")
    return response

# プロファイル取得
def get_profile():
    response = databrew.describe_profile_job(
        Name='DailyQualityCheck'
    )
    print(f"Profile: {json.dumps(response, indent=2, default=str)}")
    return response

if __name__ == '__main__':
    create_project()
    create_recipe()
    run_job()
    get_profile()

Java

import software.amazon.awssdk.services.databrew.DataBrewClient;
import software.amazon.awssdk.services.databrew.model.*;

public class DataBrewExample {
    public static void main(String[] args) {
        DataBrewClient dataBrewClient = DataBrewClient.builder().build();
        
        // Project 作成
        CreateProjectRequest projectRequest = CreateProjectRequest.builder()
            .name("SalesAnalytics")
            .datasetName("sales_raw")
            .roleArn("arn:aws:iam::123456789012:role/DataBrewRole")
            .sample(Sample.builder()
                .type(SampleType.FIRST_N)
                .size(500)
                .build())
            .build();
        
        CreateProjectResponse projectResponse = dataBrewClient.createProject(projectRequest);
        System.out.println("Project created: " + projectResponse.name());
        
        // Recipe 作成
        CreateRecipeRequest recipeRequest = CreateRecipeRequest.builder()
            .name("sales_cleaning")
            .steps(RecipeStep.builder()
                .action(RecipeAction.builder()
                    .operation("DELETE_DUPLICATE_ROWS")
                    .build())
                .build())
            .build();
        
        CreateRecipeResponse recipeResponse = dataBrewClient.createRecipe(recipeRequest);
        System.out.println("Recipe created: " + recipeResponse.name());
        
        dataBrewClient.close();
    }
}

IaC (CloudFormation/Terraform)

CloudFormation

AWSTemplateFormatVersion: '2010-09-09'
Description: 'AWS Glue DataBrew Setup'

Resources:
  DataBrewRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: databrew.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSGlueDataBrewServiceRole

  OutputBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: databrew-output-bucket
      VersioningConfiguration:
        Status: Enabled

  DataBrewJob:
    Type: AWS::DataBrew::Job
    Properties:
      Name: DailyClean
      Type: RECIPE
      DatasetName: sales_raw
      RecipeName: sales_cleaning
      Outputs:
        - Location:
            Bucket: !Ref OutputBucket
            Key: clean/
      RoleArn: !GetAtt DataBrewRole.Arn

Terraform

resource "aws_iam_role" "databrew_role" {
  name = "databrew-role"

  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Action = "sts:AssumeRole"
      Effect = "Allow"
      Principal = {
        Service = "databrew.amazonaws.com"
      }
    }]
  })
}

resource "aws_s3_bucket" "databrew_output" {
  bucket = "databrew-output-bucket"

  versioning {
    enabled = true
  }
}

resource "aws_databrew_job" "daily_clean" {
  name                = "DailyClean"
  type                = "RECIPE"
  dataset_name        = "sales_raw"
  recipe_name         = "sales_cleaning"
  role_arn            = aws_iam_role.databrew_role.arn

  outputs {
    location {
      bucket = aws_s3_bucket.databrew_output.id
      key    = "clean/"
    }
  }
}

類似サービス比較表

比較軸 DataBrew Trifacta dbt Core Alteryx Talend
AWS 管理 SaaS OSS SaaS on-Prem / Cloud
コーディング ノーコード ノーコード SQL/Python ノーコード ノーコード
学習曲線
変換数 250+ 400+ 無制限 500+ 600+
データプロファイリング ✅ 自動 ✅ 自動 限定的 ✅ 自動 ✅ 自動
AWS 統合 ✅ ネイティブ API Glue 対応 限定的 限定的
推奨用途 AWS + EDA 汎用 DW 変換 エンタープライズ エンタープライズ
コスト 従量制 SaaS(高) 無料 SaaS(高) on-Prem(高)

ベストプラクティス

✅ 推奨パターン

  1. 段階的なパイプライン

    • Bronze(生) → Silver(クリーン) → Gold(分析用)
  2. レシピの再利用

    • 同じ処理を複数データセットに自動適用
  3. 品質ルール定義

    • 自動検証で問題を早期発見
  4. PII 保護

    • すべてのデータセットにマスキング適用

❌ アンチパターン

  1. 過度な変換

    ❌ 250+ 変換全て適用
    ✅ 必要な変換のみ(5-10 個)
    
  2. 品質ルールなし

    ❌ ジョブ実行後に問題発見
    ✅ 自動検証で事前チェック
    

トラブルシューティング

症状 原因 対策
Job タイムアウト 大規模データセット ノード数増加・バッチ分割
メモリ不足 変換が多すぎる 段階的実行・最適化
出力ファイル形式エラー Glue Catalog スキーマ不一致 スキーマ確認・変換調整

セキュリティ・コンプライアンス

項目 実装
IAM リソース単位の権限制御
KMS 保存時暗号化
TLS 転送中の暗号化
PII 検出 自動マスキング
CloudTrail API 操作の監査

パフォーマンスチューニング

  • ノードサイズ - 大規模データは G.2X
  • 変換順序 | フィルター → 複雑な変換(効率化)
  • 並列処理 - 複数ジョブの並行実行

コスト最適化

インタラクティブセッション: $1/時間
ジョブ(G.1X): $0.48/時間
プロファイリング: $1/時間

例: 月 20 時間セッション + 50 時間ジョブ
  = (20 × $1) + (50 × $0.48) = $44/月

2025-2026 最新動向

  • AI 駆動変換推奨 - LLM で最適な変換を自動提案
  • Bedrock 統合 - 生成 AI でレポート自動生成
  • リアルタイムプロファイリング - ストリーミングデータ監視
  • マルチデータソース拡張 - BigQuery・Elasticsearch 対応検討

学習リソース・参考文献

公式リソース

ベンダー・OSS リソース


実装例・チェックリスト

チェックリスト

  • [ ] データソース接続(S3 / Redshift / RDS)
  • [ ] プロジェクト・ダータセット作成
  • [ ] プロファイリングジョブ実行・統計確認
  • [ ] 必要な変換ステップ設計(5-10 個に絞る)
  • [ ] PII 検出・マスキング設定
  • [ ] レシピ保存・バージョン管理
  • [ ] 品質ルール定義
  • [ ] ジョブスケジューリング
  • [ ] IAM ロール・権限設定
  • [ ] コスト見積もり・最適化

まとめ

AWS Glue DataBrew は 「ノーコード ETL・データクリーニング・品質確認ツール」 です。250+ の組み込み変換でコードなしにデータを前処理し、自動プロファイリングで統計・品質・PII を検出します。アナリスト・データサイエンティストが EDA・特徴量エンジニアリング・PII 保護を効率化でき、Glue Spark ETL とは役割が異なる補完的なサービスです。

最終更新:2026-04-26 バージョン:v2.0