
Steepからdbt Semantic Layerで定義されたMetricsを参照してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
さがらです。
Metricsの定義が前提のBIツール「Steep」について、先日ブログを書いてみました。
このSteepですがdbt Semantic Layerとも連携が可能のため、この連携機能を試してSteepからdbt Semantic Layerで定義されたMetricsを参照してみました。
やること
先日私がdbt Semantic Layerを試した際の、以下リポジトリで定義されているMetricsをSteepから参照してみます。
dbt Cloudでの事前準備
リポジトリの準備
jaffle-sl-templateのリポジトリを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などの情報が表示されます。
この上でSteepから接続するにはService Tokenが必要となりますので、Generate Service Tokenを押します。
任意のToken Nameを入れて、デフォルトのSemantic Layer OnlyとMetadata Onlyが付与された状態で、右下のSaveを押します。
すると、Service Tokenが表示されます!この画面を離れると表示できなくなるので、忘れずにコピーしておきましょう。
Steepでの設定
左のメニューのData sourcesから、dbt Cloudを押します。
先程dbt Cloud上で確認した情報も用いて、Host、Environment ID、Service account tokenを入力し、Continueを押します。
すると、dbt Cloudに対して定義されたMetricsを取得する連携処理が走ります。問題なく完了すれば、下図のように表示されます。
Steepからdbt Semantic Layerで定義したMetricsを参照してみる
連携が上手くいけば、SteepのMetrics catalogにdbt Semantic Layerで定義したMetricsが一覧で表示されます。
※CategoryとOwnerですが、dbt上で定義したMetricsに付随するメタデータを元に連携する機能連携は近日中に行われると公式Docの「Owners and categories」に記載がありました。
この中からMetricsを1つ開くと、下図のようにグラフを描写することが出来ました。(サンプルデータの日時が2016年9月から2017年3月のデータしかないため、少し横軸が無駄なグラフになってしまっていますが、Steepの仕様上避けられなそうです。SteepのTime grainの絞り込みのUIはとてもわかりやすくて便利なのですが、ユーザー側で見たいTime grainの設定が自由にできるとなお嬉しいですね!)
あとは、通常のSteepの操作感でReportsやDashboardsを作っていくことが出来ます!ReportsやDashboardsの操作については下記のブログも併せてご覧ください。
おまけ:Steepが発行するクエリについて
これはdbt Semantic Layerと紐づけた場合に限った場合の事象ではないのですが、Steepは各Metricsを開いた際に、使用できるDimensionsすべてに対してフィルターの候補値を得るために、以下のようなクエリが投げられていました。
※今回はSnowflakeを使用していたためコスト的な影響はなかったですが、裏側がBigQueryのオンデマンドだとひやひやしそうですね…
最後に
Steepからdbt Semantic Layerで定義されたMetricsを参照してみたので、その内容をまとめてみました。
連携自体は本当に簡単な操作で出来て簡単でしたね!あとは、CategoryとOwnerの定義もdbt上で定義してSteepにSyncできるようになると更に実用性が増すと思うので、今後のアップデートにも期待したい所です。



















