[新機能]MetricFlow統合後のdbt Semantic LayerをGoogleスプレッドシートから参照してみた
さがらです。
現地時間10月16日~10月19日で、dbt Coalesceが開催されました。
基調講演で発表された新機能については、下記のブログが参考になります。
この基調講演で、MetricFlow統合後のdbt Semantic Layerが一般提供になったと発表がありました!
連携できるパートナー製品も併せて発表され、Googleスプレッドシートも含まれています。
ということで、実際にGoogleスプレッドシートからMetricFlow統合後のdbt Semantic Layerを参照してみたので、本記事でその内容をまとめてみます。
※Googleスプレッドシートからdbt Semantic Layerへ接続する機能は2023年10月29日時点ではBeta版のため、ご注意ください。
試す内容
下記の公式Docに沿って、Googleスプレッドシートからdbt Semantic Layerで定義されたmetricsを参照してみます。
dbt Semantic Layerの設定については、下記の公式Docを参考にします。
検証環境
- dbt Cloud:Enterpriseエディション
- 各Environmentのdbtバージョン:1.6
事前準備
下記のリポジトリをforkしたdbt projectを事前にdbt Cloud上で定義し、Production Environmentを定義して、dbt seed
とdbt build
を含むジョブを実行しておきます。
下記の記事も参考になるはずです。
dbt Cloud上でのSemantic Layerの設定
まずdbt Cloud上の対象のdbt projectにおいて、Semantic Layerを有効化しておく必要があります。
Account settings
のProjects
から対象のdbt projectを選択し、Configure Semantic Layer
を押します。
続いて、このdbt projectで使用しているDWHへの認証情報を入力します。
最低でも、semantic_models
とmetrics
が参照しているdbt Modelを含むスキーマ・テーブルへの読み取り権限が必要となります。
必要な情報を入力したら、右下のSave
を押します。
すると、Environment ID
やHost
などの情報が表示されます。
この上でTableau Desktopから接続するにはService Token
が必要となりますので、Generate Service Token
を押します。
任意のToken Name
を入れて、デフォルトのSemantic Layer Only
とMetadata Only
が付与された状態で、右下のSave
を押します。
すると、Service Tokenが表示されます!この画面を離れると表示できなくなるので、忘れずにコピーしておきましょう。
Googleスプレッドシートからdbt Semantic Layerに接続
続いて、Googleスプレッドシートからdbt Semantic Layerに接続するための準備を行っていきます。
まず、下記のURLからGoogleスプレッドシートのアドオンをインストールします。
権限周りの確認を終えると、無事にインストールされ下図のように出てきます。
次はスプレッドシートでの設定となるため、任意のスプレッドシートを開きます。
拡張機能
→dbt Semantic Layer for Sheets
→Open
の順にクリックします。
少し待つと、画面の右側にアドオンの設定画面が出てきます。
ここで、事前に確認したHost
、Environment ID
、Service Token
を順番に入力し、GET ACCESS
を押します。
下図のようなQuery Builderが表示されたら、準備完了です!
実際にMetricsを取得してみた
準備ができたので、実際にdbt Semantic Layerを介してMetricsを取得してみます。
Select Metrics
から使用したいMetricsを選択します。
次に任意ではありますが、Group By
から粒度を決めるためのDimensionsを選択します。日時のDimensionsであれば、右側にカレンダーのアイコンが表示されるようです。
個人的に、選択したMetricsに応じて使えるDimensionsのみが表示されるのが素晴らしいと感じました。 ※Tableau × dbt Semantic Layerでは、仕様上避けられないのですが、共に選択出来ないMetricsとDimensionsを選択できるので…詳細はこちらのブログを。
- Metricsに
Order Total
を選択した場合
- Metricsに
Order Total
とFood Revenue
を選択した場合
条件を決めたら、一番下のRUN QUERY
を押すと、スプレッドシートでカーソルが合っているところを軸に、取得した集計結果が貼り付けられます。
各オプションについて
あとは、各オプションの設定もあるのでその内容について記します。
Where (Filter)
Where (Filter)
を有効化すると、使用できるDimensionsの特定の値で結果を絞り込むことが可能になります。
Granularity Options
Group By
で日時のDimensionsを選択していると、Granularity Options
を使うことで集計粒度を変更することができます。
Order By
Order By
では、選択しているMetricsとDimensionsを用いて集計結果の表示順を変更することができます。
下図では例として、「Order Total
の値の降順(DSC)」について載せています。
Limit
Limit
では、出力する結果を上から何行目までにするか指定することができます。
下図ではOrder By
と組み合わせて、「Order Total
の値が大きいトップ3の年月」を表示しています。
最後に
MetricFlow統合後のdbt Semantic LayerをGoogleスプレッドシートから参照してみました。
まだBeta版ではありますがかなり使い心地はよいと感じました! 複雑な計算ロジックはdbt Semantic Layer上で定義しておけば、ユーザーは数ステップの操作だけでスプレッドシート上でビジネス用のレポートを作成できるはずです。計算式を多用している場合のリスクを回避することにも繋がりますね!