たのしい駆動開発

たのしいアウトプットの場所

Cloud Data Fusionの機能でつまづいた部分について

Google Cloud Platform Advent Calendar 2021の22日目カレンダー2の記事です。


最近Cloud Data Fusionをはじめて触りました。GUIベースで結構感覚的に処理ができるので、結構いいツールだと思います。
そして今回はCloud Data Fusionで説明が必要だなあと感じた機能について説明します。
Cloud Data Fusionについての説明や、インスタンスの作成などは公式ドキュメントを参考にしてください。



今回使用するサンプルのテーブルとデータは下記を使用します。

f:id:ssabcire:20211222093656p:plain

RawDenormalizer

BigQueryのテーブルの行列をPIVOT(行と列の入れ替え)したいときはRowDenormalizerを使います。
ただ、datesub_keyをPIVOTのkeyとして、namevalをPIVOT したいとき(下記のようなテーブルを想定)が面倒くさいです。理由はRowDenormalizerがkeyを1つしか指定できないためです。
そのため、Wranglerを使ってKeyにしたい列をmergeしてからRawDenormalizerをする必要があります。

Wranglerでの列Joinはこのように行います
f:id:ssabcire:20211222093912p:plain f:id:ssabcire:20211222093924p:plain

そして、RowDenormalizerでこのように指定します。
f:id:ssabcire:20211222094130p:plain

RowDenormalizerをした結果はこのようなデータになります。 f:id:ssabcire:20211222095727p:plain

Join

SQLで使うJoinは下記図の上のように使います。
ただ、縦結合、UNIONでデータをJoinさせたい場合は、下記図の下のように使います。

f:id:ssabcire:20211222094743p:plain

テーブル出力

パイプラインを実行するたびにテーブルの中身を上書きしたい場合は、設定を変更する場合があります。Truncate TableをTrueにします。

f:id:ssabcire:20211222095206p:plain

ちなみに、デフォルトではパイプラインを実行するたびにテーブルにInsertする処理が設定されています(Insert以外にUpdate, Upsertを選択できる)。