BigQuery Advent Calendar 2024 の16日目の記事です。が、なんやかんやあって25日のPM15:13に書き始めています。
我ながらスケジュールの見通しの甘さが酷いですね。
皆さまは順調な仕事納めを迎え、穏やかな年末年始を過ごせていることを願っております。
あと風邪や体調不良にもお気をつけください。本当に周囲でびっくりするくらい流行っています。我が家も現在進行系で感染拡大中です。
この記事について
私は以前、Dataformを使ったデータ基盤の構築にデータエンニジアとして携わっていました。
そして現在はdbt coreを使ったデータ基盤を中心にデータマネージャーを担当しています。
dbtといえばデータ基盤におけるT処理のデファクトスタンダード的な感じになっており、その手軽さや機能の豊富さ、便利さは誰もが認めるところでしょう。
しかし、以前にDataformを触っていた経験からDataformの良さを再認識することもままあります。
この記事では、私が個人的にDataform良いな~と思う点をツラツラと書いていきたいと思います。
注意
dbt coreにはデータマネージャーとして関わっている関係で直接触る機会が多くないため、私が知らないだけでdbtでも簡単に実現できるものもあるかもです。
またdbt Cloudは全く触れたことがありません。使ってる方、正直なとこどうですか?
Dataformについては今年の2024/8頃まで触れていました。以降はリリースノートを追っているのみです。(データ基盤がGoogleCloudで完結しているならDataformで良くない?という思想も持ってます。)
もし「dbtでも簡単にその機能使えるよ!」ってものがあれば、じゃんじゃん指摘いただけますと大変ありがたいです。
良いな~と思う点
①開発中のSQLXのコンパイル結果が即座に確認できる。
もしかするとこの機能は賛否両論あるかもです。
というのもこの機能では改行1つ、スペース1つでも入れた瞬間に、隙あらばコンパイルしてその結果を表示してきます。そのため場合によっては分かりきったことをエラーとして見せつけられるからです。
私はいかに途中のコンパイルをさせずにSQLXを完成させられるかを密かに1人でチャレンジしながら仕事してました。
/* 暇を見て実際のイメージ追加する。 */
②開発中のSQLXの推定バイト数がリアルタイムで確認できる。
BigQueryのクエリエディタ上ではクエリの推定バイト数がリアルタイムで表示されますが、それと同じようにDataformでも確認できます。具体的には開発しているSQLXについての推定バイト数がコンパイル結果に基づいて表示されます。
これBigQueryに慣れていると結構便利だな~と思います。
/* 暇を見て実際のイメージ追加する。 */
③開発中のSQLXに基づくリネージ情報がリアルタイムで確認できる。
こちらも推定バイト数と同じように、SQLXのコンパイル結果に基づくリネージ情報がリアルタイムで確認可能というものです。
ただ、急な調査などでDataformのコードを確認する際に、ついついDataform側のリネージを見てしまい実際のリネージとの乖離に混乱することが特にDataform触り始めの慣れていない人でありがちでした。この点はご注意ください。
/* 暇を見て実際のイメージ追加する。 */
④独自のGit機能にてコードのバージョン管理ができる。
DataformはGit機能も標準で有しています。Dataformのリリース当初はありませんでしたがCommit前後のコード差分比較(これ未だにリリースノート出てないですよね?)などの機能も徐々に対応されています。もちろんGitHubやGitLabとの接続も可能です。
ちなみにDataformは暗黙のリリースが他よりも体感多い気がしており、リリースノートだけでは拾えない改善点も多いんだろうな~と今でも思ってます。
/* 暇を見て実際のイメージ追加する。 */
⑤独自のワークフロー機能にてSQLXの実行管理ができる。
Dataformでは任意のSQLXでワークフローを構成し、管理/実行がGUIで出来ます。実行方法も手動実行やDataform内のスケジューラーの他、API経由での実行なんかも可能です。
またDataformには独自の実行タグが付与可能になっており、SQLXごとに[CS][Mart][管理会計]など好きな管理粒度でタグを付けておくことで、ワークフローの実行対象をタグで指定することも可能だったりします。
/* 暇を見て実際のイメージ追加する。 */
⑥これらの機能は全て無料、インフラもフルマネージド。
上に挙げた機能を始め、結構なんでも出来るDataformですが、なんと全て無料で使えちゃいます。「データパイプラインのフルマネージド サーバーレス オーケストレーション」と謳っている通り実行インフラの管理も不要です。少人数になりがち、場合によっては1人データチームも珍しくない状況でインフラの管理って地味に面倒で避けたいですよね。
さいごに
個人的に好きなDataformについて、運用するなかで多くの人がすぐに便利だな~と感じそうな機能を紹介してみました。
まだまだ他にも出来ることはありますし、地道に機能追加もされています。会社によってはDataformCore を魔改造して独自機能てんこもりで運用していたりもするそうです。
BigQueryをお使いの方、特にデータ基盤がGoogleCloudで完結している企業の方は1度試してみてはいかがでしょうか?
データに関わる全ての人の安寧と幸福を願っております。あとDataform界隈がもっと盛り上がってほしいな~。