01_基礎

セクション2 基礎:データの取り込みと処理 📘

このファイルは 📘 基礎レベル。各サブトピックの「概念」と「サービスの役割」を理解することがゴールです。 設計判断やトレードオフは 02_応用.md で扱います。 このセクションは出題比重~25%で最重要。サービスの役割と使い分けを確実に押さえましょう。


2.0 全体像:パイプラインの3工程

データパイプラインは「取り込む → 処理する → 運用する」の3工程で考えます。シラバスの2.1/2.2/2.3に対応します。

 ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐
 │ ソース    │──►│ 取り込み  │──►│ 処理/変換 │──►│ シンク    │
 │ (Source) │   │ (Ingest) │   │(Transform)│   │ (Sink)   │
 └──────────┘   └──────────┘   └──────────┘   └──────────┘
   DB/ログ      Pub/Sub        Dataflow        BigQuery
   IoT/SaaS     GCS            Dataproc        GCS
   Kafka        Storage TS     Data Fusion     Bigtable
                                                
   2.1 計画 ──────────────────────────────────────────►
   2.2 構築(クレンジング・変換・サービス選定)
   2.3 運用(オーケストレーション=Composer/Workflows、CI/CD=Cloud Build)

2.1 データパイプラインの計画

① ソース(Source)とシンク(Sink)

パイプラインの入口と出口を定義します。

【ソース=データの出どころ】          【シンク=データの行き先】
  - DB(Cloud SQL, オンプレRDB)        - BigQuery(分析)
  - イベント/ログ(アプリ, IoT)         - Cloud Storage(データレイク)
  - メッセージ(Pub/Sub, Kafka)         - Bigtable(低レイテンシ参照)
  - ファイル(GCS, S3, オンプレ)         - Pub/Sub(後段への再配信)
  - SaaS(Salesforce 等)               - Cloud SQL / Spanner(OLTP書き戻し)

② 変換(Transformation)とオーケストレーションのロジック

ロジック 意味
変換 データの形を変える処理 整形・フィルタ・集計・結合・型変換・エンリッチメント
オーケストレーション 複数ジョブの実行順序・依存・スケジュールの制御 「抽出→変換→ロード→通知」を順番に・依存を守って実行

③ ネットワーキングの基礎

パイプラインのコンポーネント間の通信経路を設計します。

概念 説明
VPC / サブネット コンポーネントを配置する仮想ネットワーク
限定公開のGoogleアクセス(Private Google Access) 外部IPなしで内部からGoogle APIへ到達
Private Service Connect / VPCピアリング サービス/VPC間をプライベートに接続
ファイアウォール ルール 通信の許可・拒否を制御

④ データ暗号化

セクション1の復習。パイプラインでも保存時・転送時とも自動で暗号化される。

方式 鍵の管理 使いどころ
デフォルト暗号化 Google 特別な要件がなければこれ(自動)
CMEK(顧客管理鍵) あなた(Cloud KMS) 鍵のローテーション/無効化を制御したい
CSEK(顧客提供鍵) あなた(持ち込み) 鍵をGCPに預けたくない厳格要件

2.2 パイプラインの構築

① データクレンジング

取り込んだ生データを分析に使える品質へ整える工程。

生データ ──► [欠損処理] ──► [重複排除] ──► [型/形式統一] ──► [外れ値処理] ──► クリーンデータ
            NULL補完     重複行削除     日付/数値の正規化   範囲外の除外

② サービスの見極め(最重要)

データ処理の中核サービスを役割で覚えます。

サービス 種別 ひとことで 主な使いどころ
Pub/Sub メッセージング データを「受け取る」グローバルなキュー ストリーミング取り込み・イベント連携・バッファ
Dataflow 処理(サーバーレス) Apache Beamで「処理する」 バッチ/ストリーミング統一・自動スケール
Apache Beam プログラミングモデル Dataflowの「中身」 統一パイプライン記述(移植可能)
Dataproc 処理(マネージドクラスタ) Spark/Hadoopを「動かす」 既存Spark/Hadoop資産の移行
Cloud Data Fusion 処理(GUI) ノーコードで「組み立てる」 GUIでETL/ELT・コードを書かない
BigQuery DWH/処理 SQLで「変換・分析する」 ELT・大規模分析・BQML
Apache Kafka メッセージング(OSS) OSS版の「受け取る」 既存Kafka資産(Managed Service for Kafka)
【役割の動詞で覚える】
  Pub/Sub    = 受け取る(緩衝・配信)
  Dataflow   = 処理する(サーバーレスで柔軟)
  Dataproc   = (Sparkを)動かす(既存資産の移行)
  Data Fusion= 組み立てる(GUIノーコード)
  BigQuery   = 変換・分析する(SQL)

Pub/Sub の役割

グローバルなメッセージング基盤。送信側(パブリッシャー)と受信側(サブスクライバー)を疎結合にする。

パブリッシャー ──► [トピック] ──► [サブスクリプション] ──► サブスクライバー
 (アプリ/IoT)                                              (Dataflow等)
                  メッセージを保持し、配信を仲介

Dataflow(Apache Beam)の役割

サーバーレスでバッチもストリーミングも同じコードで処理できる。Apache Beam という統一モデルを実行する。

【Apache Beam の基本要素】
  PCollection ── データの集合(バッチ=有界 / ストリーム=無界)
  PTransform  ── データへの変換操作(Map, Filter, GroupBy, Window…)
  Pipeline    ── PTransform をつないだ処理フロー全体
  Runner      ── 実行エンジン(Dataflow Runner で GCP上で動く)

  入力 ─► [Read] ─► [Transform] ─► [Transform] ─► [Write] ─► 出力
         PCollection を PTransform で次々と変換していく

Dataproc の役割

マネージドな Spark / Hadoop クラスタ。OSSのビッグデータエコシステムをそのまま動かす。

【Hadoop/Sparkエコシステム】
  Spark   ── 高速な分散処理エンジン(インメモリ)
  Hadoop  ── 分散処理の基盤(MapReduce, YARN)
  HDFS    ── 分散ファイルシステム(GCPではGCSに置き換え推奨)
  Hive/Pig/Presto ── SQL/スクリプトでの処理

Cloud Data Fusion の役割

GUIでドラッグ&ドロップしてパイプラインを組むノーコード/ローコードETL(CDAPベース)。

③ 変換(Transformations)

バッチ処理 vs ストリーミング処理

観点 バッチ処理 ストリーミング処理
データ 蓄積済み(有界) 到着し続ける(無界)
重視 スループット(量) レイテンシ(速さ)
日次の売上集計、月次レポート リアルタイム不正検知、ライブ ダッシュボード
代表サービス Dataflow(バッチ) / Dataproc / BigQuery Dataflow(ストリーミング) / Pub/Sub
結果のタイミング まとめて一度に データ到着ごと/ウィンドウごと
バッチ      : [====蓄積====] ──► 一括処理 ──► 結果
ストリーミング: ● ● ● ● ● ● ● ● …(途切れず流れる)──► 逐次処理 ──► 逐次結果

ストリーミングのウィンドウ処理(Windowing)

無界ストリームは「いつ集計するか」を決められないため、時間で区切る=ウィンドウを使う。これは試験頻出。

① 固定ウィンドウ(Fixed / Tumbling)── 重ならない一定幅
   |--w1--|--w2--|--w3--|     例: 1分ごとの件数
   隙間なく、重なりなく分割

② スライディングウィンドウ(Sliding / Hopping)── 重なる
   |---w1---|
       |---w2---|
           |---w3---|         例: 直近5分の平均を1分ごとに算出
   幅(window) と 間隔(period) を指定。重複あり

③ セッションウィンドウ(Session)── 活動の途切れで区切る
   ●●● ___gap___ ●●●● __gap__ ●●        例: ユーザーの操作セッション
   一定時間(gap)アクティビティが無ければ区切る。幅は可変
ウィンドウ 重なり 典型用途
固定 (Fixed/Tumbling) なし 固定 1分ごとの集計、定期的なバケット集計
スライディング (Sliding/Hopping) あり 固定 移動平均、直近N分の傾向
セッション (Session) なし 可変 ユーザーセッション、操作のまとまり

補足:グローバルウィンドウ (Global) はストリーム全体を1つの窓とみなす(カスタムトリガー必須)。

ウォーターマーク(Watermark)と遅延到着データ(Late data)

イベント時刻 ──► ネットワーク遅延・順序逆転 ──► 処理時刻
   12:00:30                                  12:00:35 に到着

トリガー(Trigger)

Exactly-once 処理

④ 処理ロジック

⑤ AI によるデータエンリッチメント

近年追加された範囲。パイプライン内で AI/ML を使ってデータを補強する。

手法 説明
BigQuery ML の生成AI関数 SQLからLLM/モデルを呼び出す ML.GENERATE_TEXT(要約・分類)、ML.GENERATE_EMBEDDING(ベクトル化)
Vertex AI 連携 パイプラインからモデル推論を呼ぶ 画像分類、感情分析、エンティティ抽出
Cloud DLP PII検出・マスキング 取り込み時に機密情報を秘匿

⑥ データの取得とインポート

方法 用途
bq load / BigQuery への直接ロード GCS/ローカルのファイルをBigQueryへ取り込み
Pub/Sub → Dataflow → BigQuery ストリーミング取り込みの定番
Storage Transfer Service 他クラウド/オンプレ → GCS の大容量転送
BigQuery Data Transfer Service SaaS/他DWHからの定期取り込み
Datastream DBの変更をCDCで継続複製
Dataflow テンプレート Googleが用意した定型パイプライン(GCS→BQ等)をパラメータ実行

⑦ 新規データソースとの統合


2.3 パイプラインのデプロイと運用化

① ジョブの自動化とオーケストレーション

複数のジョブを「順番に・依存関係を守って・定期的に」実行する。代表は2つ。

Cloud Composer(マネージド Apache Airflow)

【DAG = 有向非巡回グラフ】タスクの依存関係をコードで定義
        ┌──────────┐
        │ extract  │
        └────┬─────┘
             ▼
        ┌──────────┐
        │transform │
        └────┬─────┘
        ┌────┴─────┐
        ▼          ▼
   ┌────────┐ ┌────────┐
   │load_bq │ │load_gcs│   ← 並列に実行
   └────┬───┘ └───┬────┘
        └────┬────┘
             ▼
        ┌──────────┐
        │ notify   │
        └──────────┘

Workflows

【使い分けの第一感】
  複雑な依存・多数タスク・データパイプライン → Cloud Composer (Airflow)
  軽量なAPI/サービス連携・イベント駆動・低コスト → Workflows

② CI/CD(継続的インテグレーション・デプロイ)

パイプラインのコードを自動でテスト・ビルド・デプロイする。

コード push ──► [Cloud Build トリガー] ──► テスト ──► ビルド ──► デプロイ
(Git)            (ソースの変更を検知)       単体/結合   成果物    Dataflowテンプレート/
                                                                Composer DAG 等を配置

📌 このセクションの基礎まとめ

次は 02_応用.md で設計判断とトレードオフ、試験のひっかけを学びます。