BigQuery MLの前処理(Data Preprocessing)では、専用機能に頼るのではなく、SQL標準機能を駆使してデータを整えることが求められます。試験でもこの方針に沿った知識が問われます。
■ 基本的な前処理タスク
タスク | 方法 | 補足 |
---|---|---|
データ結合 | SQLのJOINでトランザクション・ユーザー・商品テーブルを結合 | 必要な情報をまとめる |
欠損値補完 | IFNULL関数を用いてNULLを特定値(例:0や空文字)で埋める | BigQuery MLにCLEAN関数は存在しない |
カテゴリ変換 | CASE文を使ってカテゴリ変数を数値化・グルーピング | 柔軟な条件分岐を実装 |
テキスト正規化 | REGEXP_REPLACE関数を使って不要な文字を除去・整形 | メール、住所などのクレンジングに有効 |
集約・移動平均 | ウィンドウ関数(例:OVER(PARTITION BY))を使う | 複雑な統計処理に対応 |
■ 最適化タスク(パフォーマンス向上)
タスク | 方法 | 補足 |
---|---|---|
大規模データ対応 | PARTITION BY句でテーブルを分割管理 | クエリ速度を大幅改善 |
中間結果整理 | WITH句で一時テーブル(Common Table Expression)を活用 | サブクエリを見やすく保守性向上 |
複雑クエリ整理 | VIEW作成で複雑な処理をカプセル化 | 可読性・メンテナンス性向上 |
■ 実務上の注意点(試験にもよく出る)
- 外部処理(EXTERNAL_QUERY)は禁止推奨
➔ BigQuery外に出すとパフォーマンスとコストが悪化する - ローカルEXPORTしてから前処理するのは非効率
➔ BigQuery内で完結する設計を心がける - JOIN時のインデックス過信は禁物
➔ インデックスではなく、パーティションやクラスター設計を優先
■ 押さえるべきポイント
✅ BigQuery MLに特別な「TRANSFORM」「CLEAN」「NORMALIZE」関数はない
✅ SQL標準機能(IFNULL、CASE、WITH、PARTITION BY、REGEXP_REPLACEなど)で前処理する
✅ 外部システム・ローカルダウンロードに依存しない
✅ パフォーマンスを意識して設計する(PARTITION・WITH句・VIEW化)
✏️ まとめ
BigQuery MLの前処理とは、
- SQLの力を最大限に活用して
- BigQuery内部で完結し
- クエリのパフォーマンスと保守性も両立させる
こうした実装力を問われる領域です。