ダッシュボード用データマートをdbtで作成してみた

今回はdbtを用いてBigqueryからダッシュボード作成用のデータマートの作成してみました。
dbtについては下記記事でチュートリアルを解説しているためdbtってなんだろうという方はぜひお読みいただければと思います。
https://techstudyoutgoing.com/dbtdata-build-toolを使ってみた

※このブログの内容は個人の意見・見解となります。また、記事の内容の正確性については保証いたしません。本ブログの目的は分析結果をアウトプットしていくことによる自身のデータ分析力向上を主としています。誤りや違うアプローチの方が良いという事も多分にあると思います。後学のため、「もっとこうしたらいい」や誤りを見つけた場合はコメント欄などでお知らせいただけると有難いです。

○手順
 ダッシュボード作成までの作業として大まかに下記の4つが必要となります。今回は1~2までを実施します。
1.ダッシュボードを作成する目的、モニタリングしていく指標、必要なカラム定義
2.1で定めたカラムを持つデータマートを作成
3.データマートからダッシュボードを作成
4.定期的にデータが更新されるようパイプライン作成

○1.ダッシュボードを作成する目的、モニタリングしていく指標、必要なカラム定義
 今回はGoogleスプレッドシートに記載する形で作成しました。今回はブログの閲覧状況を把握し改善できるようにすることを目的とします。詳細は下記画像をご参照ください。

○1で定めたカラムを持つデータマートを作成
 ここから実際にクエリを書いていきます。今回はdbtを使ってみたい&簡単にtestを実行できることからBigqueryのデータをdbtへ連携しdbtで変換処理を行いデータマートを作成していきます。Bigqueryの連携方法はドキュメントに詳細載っているためそちらをご参照ください。1箇所つまづいた部分として、下記画像のDatasetで指定するnameはBigqueryで利用したらデータセットが格納されているフォルダ名にする必要があります。こちらを適当な名前にしてしまうとデータセットが見つかりませんとエラーが出てしまいます。

○2.1で定めたカラムを持つデータマートを作成
 1でモニタリングする指標を決めているので、必要なデータを作成していきます。GA4から連携したbigqueryのデータは通常のデータセットと違い入れ子構造になっています。入れ子構造を解除するには「UNNEST関数」というものを使用します。
今回はセッション数軸とページごとの表示回数軸の2つのデータマートを作成していきます。

dbtのmodelsフォルダ内にsql及びschema.ymlを作成していきます。
schema.ymlでは指定したカラムにnullが無いか重複がないかをテストすることができるため、データを担保することができます。書き方も簡単でテストしたいmodelとカラムを指定してテスト内容を設定します。
nameでmodel名を指定し、columnsでテストしたいカラムを指定します。testsにテスト内容を記載します。今回はevemt_dateにnullがないかを確認することにしました。
modelsは上記クエリのようにSQLを記載していきます。

dbt testと入力し実行するとschema.ymlに記載したテストを実施できます。
成功すると下記画像のように緑のチェックマークがつきます。
クエリを実行する際はdbt runと入力し実行することで実行できます。

実際にdbt runを実行するとBigquery上にpage_pvとpv_countのテーブルが作成されます。

○まとめ
 今回はダッシュボードを作成するための前段階としてモニタリングしていく指標の選定とデータマート作成を行いました。次回は作成したデータマートからダッシュボードを作成してい来ます。最終的には定期的にダッシュボードのデータが更新されるよう整えていきたいと思います。

○最後に
 このような形で分析した結果や試してみたことを週に1回(目標)ペースで掲載しています。データ分析のキャリアを歩み始めたのですが、データの解釈、分析力が低いと感じ今回、このような形でアウトプットをしていくことにしたため、ぜひ、アドバイスやご指摘をいただけると幸いです。