[新機能]MetricFlow統合後のdbt Semantic LayerをGoogleスプレッドシートから参照してみた

2023.10.29

さがらです。

現地時間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 seeddbt buildを含むジョブを実行しておきます。

下記の記事も参考になるはずです。

dbt Cloud上でのSemantic Layerの設定

まずdbt Cloud上の対象のdbt projectにおいて、Semantic Layerを有効化しておく必要があります。

Account settingsProjectsから対象のdbt projectを選択し、Configure Semantic Layerを押します。

続いて、このdbt projectで使用しているDWHへの認証情報を入力します。

最低でも、semantic_modelsmetricsが参照しているdbt Modelを含むスキーマ・テーブルへの読み取り権限が必要となります。

必要な情報を入力したら、右下のSaveを押します。

すると、Environment IDHostなどの情報が表示されます。

この上でTableau Desktopから接続するにはService Tokenが必要となりますので、Generate Service Tokenを押します。

任意のToken Nameを入れて、デフォルトのSemantic Layer OnlyMetadata Onlyが付与された状態で、右下のSaveを押します。

すると、Service Tokenが表示されます!この画面を離れると表示できなくなるので、忘れずにコピーしておきましょう。

Googleスプレッドシートからdbt Semantic Layerに接続

続いて、Googleスプレッドシートからdbt Semantic Layerに接続するための準備を行っていきます。

まず、下記のURLからGoogleスプレッドシートのアドオンをインストールします。

権限周りの確認を終えると、無事にインストールされ下図のように出てきます。

次はスプレッドシートでの設定となるため、任意のスプレッドシートを開きます。

拡張機能dbt Semantic Layer for SheetsOpenの順にクリックします。

少し待つと、画面の右側にアドオンの設定画面が出てきます。

ここで、事前に確認したHostEnvironment IDService 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 TotalFood 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上で定義しておけば、ユーザーは数ステップの操作だけでスプレッドシート上でビジネス用のレポートを作成できるはずです。計算式を多用している場合のリスクを回避することにも繋がりますね!