Google Cloud Platform Advent Calendar 2021の22日目カレンダー2の記事です。
最近Cloud Data Fusionをはじめて触りました。GUIベースで結構感覚的に処理ができるので、結構いいツールだと思います。
そして今回はCloud Data Fusionで説明が必要だなあと感じた機能について説明します。
Cloud Data Fusionについての説明や、インスタンスの作成などは公式ドキュメントを参考にしてください。
今回使用するサンプルのテーブルとデータは下記を使用します。
RawDenormalizer
BigQueryのテーブルの行列をPIVOT(行と列の入れ替え)したいときはRowDenormalizer
を使います。
ただ、date
とsub_key
をPIVOTのkeyとして、name
とval
をPIVOT したいとき(下記のようなテーブルを想定)が面倒くさいです。理由はRowDenormalizerがkeyを1つしか指定できないためです。
そのため、Wranglerを使ってKeyにしたい列をmergeしてからRawDenormalizerをする必要があります。
Wranglerでの列Joinはこのように行います
そして、RowDenormalizerでこのように指定します。
RowDenormalizerをした結果はこのようなデータになります。
Join
SQLで使うJoinは下記図の上のように使います。
ただ、縦結合、UNIONでデータをJoinさせたい場合は、下記図の下のように使います。
テーブル出力
パイプラインを実行するたびにテーブルの中身を上書きしたい場合は、設定を変更する場合があります。Truncate Table
をTrueにします。
ちなみに、デフォルトではパイプラインを実行するたびにテーブルにInsertする処理が設定されています(Insert以外にUpdate, Upsertを選択できる)。