♻️
Dataformを使ってAdhocクエリを整理・再利用する
データ分析の現場では、日々「Adhoc(アドホック)クエリ」が大量に生み出されます。しかし、それらの多くが一時的に実行されて終わり、チーム内にナレッジが残らないことに課題を感じていませんか?
本記事では、Google Cloudが提供するDataformを活用して、Adhocクエリを整理・再利用可能な「資産」にする方法をご紹介します。
💬 Adhocクエリってそもそも何?
Adhocクエリとは、以下のような一時的な目的でその場で書かれるSQLのことです:
昨日のキャンペーンの成果を確認したい
特定ユーザーの行動ログを調べたい
週次レポートに必要な集計を今だけ出したい
これ自体は必要不可欠な作業ですが、課題も山積みです。
😢 Adhocクエリのよくある課題
課題 | 内容 |
---|---|
属人化 | クエリがローカルに眠っていて他の人が使えない |
再発明 | 似たようなクエリをみんなが毎回一から書いている |
スパゲッティ化 | フィルターやJOINがコピペでぐちゃぐちゃに |
再現性のなさ | 「なぜこうしたのか」が未来に伝わらない |
私自身、何度も「このクエリ、前にも書いた気がする...」という経験があります😇
🧰 Dataformとは?
Dataformは、Google Cloudが提供するデータ変換に特化したSQL開発フレームワークです。以下のような特徴があります。
SQLベースでモデルを構築できる
ref()
で依存関係を明示できるincludes/
やmacros/
で共通処理を再利用できるGitとの統合でレビュー・CI/CDも可能
これを聞いて「本番用のパイプライン構築用でしょ?」と思った方も多いかもしれませんが、Adhocクエリの管理にもかなり使えます。
✅ AdhocクエリをDataformで再利用する
具体的には、Dataformでクエリとメタ情報をgit管理しておいて、日付の指定やカテゴリーなどを変数として定義しておいて、変更したい時はDataformにpull requestを投げて変更する運用にします。この時Dataformの設定をうまくすると特定のデータセット配下にviewとして出力するように設定できるので、定期実行したいクエリをDataformに保存しておき、viewとして出力、それをスプレッドシートのデータコネクタ機能で定期実行し、簡易的なモニタリングを作ることも可能です。
Dataformを使うメリット
GCPを使っている場合はクエリ料金以外は完全無料である
SQLをgitで管理できる
カラム詳細などのメタ情報もSQLと一緒にgit管理でき、viewとしてBQに出力できる
git管理がGUIで完結できるようになっており、git初心者に装着するのもハードルが低い
Dataformをadhocクエリ管理ツールとして導入する前に考慮すべきこと
dbtを標準ツールとして使っている場合や対象者がSQLネイティブなエンジニアのみの場合はdbtを使うのがツールの乱立を防げていいケースもあります
Dataformで管理されるsqlはSQLXファイルという形式で保存する必要があり、書き方にややクセがあります。なので初めて使う方が迷わないようにテンプレートなどを用意することが必要になるかもしれません。
pull requestを作ってマージするという運用にはレビューなどの一定の人手がかかるので、本当にgit管理する必要がある組織状況なのかなどは慎重に検討する必要があります。
最後に
Dataformを使うことでこれまで資産として残ることも使い回すこともなかったSQLを資産として貯めて活用することができるかもしれません。この記事内では紹介しませんでしたが、さらにどんなSQLが貯まっているのかを検索できるツールも併せて提供することでSQLネイティブではないビジネスユーザーがより手軽に欲しいクエリにたどり着ける状態も作ることが可能です。もちろん万能ではなく、適切なデータマネジメントと合わさって初めて効果のある手法ですが、無料で使える割にはなかなかできることが多いのでおすすめです!
Read next
Loading recommendations...