😎

【dbt Docs】dbt Semantic Layer

2022/10/19に公開

dbt Semantic Layer

https://docs.getdbt.com/docs/use-dbt-semantic-layer/dbt-semantic-layer

(コメント)
ざっと、DeepLに食わせてみてみたけど、ちょうっとわからないことがいっぱいなので、暫定的に公開
あくまでのメモレベル・・・っていつものことやーーーーーーーー

dbt Semantic Layerは、データチームが重要なビジネス指標を dbtプロジェクト(モデリング層)で一元的に定義し、BIやビジネスカタログ(メタデータ管理ソリューション)などの下流データツール内で一貫したセルフサービスを実現することができる

その結果、データチームにとっては重複コーディングが減り、データ利用者にとって一貫性が高まります。
(田代コメント)コードの再利用ができるようにしたものを、より推進する形かな?

dbt Semantic Layerは4つの主要な部分から構成されている

  • バージョン管理されたdbtプロジェクトのコードでメトリクスを定義する
  • MetadataAPIを使用して、メトリック定義をインポートする
    • dbt Cloudがdbtプロジェクトをデプロイする際に、メタデータが生成される
    • この生成されたメタデータをサポートするGraphQL APIを提供
    • チームプラン、エンタープライズプランで、dbt v0.19.0以上で利用可能
  • dbtプロキスサーバ経由でメトリックデータを問い合わせる
  • 下流データツール内でdbtメトリクスの探索と分析

dbt Semantic Layerは何が違うのか?

dbt Semantic Layerは、ビジネスメトリクスに関するコードの重複や不整合を削減します。メトリックの定義をBIレイヤーからモデリングレイヤーに移すことにより、データチームは、異なるビジネスユニットがどのツールを選択しても、同じメトリックの定義に基づいて作業していると確信することができるようになります。dbt でメトリックの定義が変更されると、それが呼び出されるすべての場所でリフレッシュされ、すべてのアプリケーションに一貫性が生まれます。

前提条件

dbt Semantic Layerを利用するためには、以下の条件があります
 - 北米でホストされている dbt Cloudを利用している方
 - 本番環境と開発環境でdbtバージョン1.2(最新)が動作していること
- →最新は、version 1.3だが・・・

  • 「Snowflake」のみ対応
  • dbt metricsパッケージを導入済み( 0.3.0以上0.4.0以下)
  • IDEでのMetadataAPIを設定し、メトリクス定義をインポートpする

公開

dbt Semantic Layerは、現在パブリックプレビュー

  • TeamおよびEnterpriseアカウントで使える
  • 一般公開までに変更があるので、そこだけ注意(GAリリースは未定)
  • GA後は、dbt Cloud Team と Enterpriseプランでのみ利用可能

製品

4つの主要コンポーネントがある

dbt metrics

  • dbt CoreでMetrics定義ができる
  • Licence:オープンソース、コア

dbt Server

  • dbtプロジェクトのコードを用いて環境毎にメトリクスクエリを高速にコンパイルできる
  • Licence:BSL

SQL Proxy

  • dbt-SQL(SQL+Jinjaのようなクエリモデルとメトリック、マクロを使用)を受け入れ、クエリを純粋なSQLにコンパイルし、データプラットフォームに対してクエリを実行するリバースプロキシです。
  • パブリックプレビューのときのみ利用可能
  • Licence:プロプライエタリ、クラウド(Team&Enterprise)

Metadata API

  • dbtプロジェクトで定義されたオブジェクト(モデル、マクロ、ソース、メトリクスなど)の真実の源となります。Metadata APIは、dbt Cloudの実行が終わるたびに更新されます。
  • Licence:プロプライエタリ、クラウド(Team&Enterprise)

dbtセマンティックレイヤーの統合が行われます。

  • Metadata APIを利用して、オブジェクトとその属性のリストを取得します。
  • dbt-SQLステートメントを生成する
  • 次に、この文の結果を評価するためにSQLプロキシに問い合わせます。

メトリクスの管理

dbtでメトリックを定義するかどうか迷ったら、次のように自問自答してみてください。

これは、私たちのチームが一貫して報告しなければならないことなのでしょうか?

重要なビジネス指標となるはずです。

定義が明確である(組織全体で合意されている)
タイムバインド(時間軸で比較可能なもの)
この好例が収益です。収益は複数のレベル(週、月など)で集計することができ、より広い範囲のビジネスが理解するための鍵となるものです。

月間経常収益、週間アクティブユーザー数、平均注文金額
❌1-off実験メトリックス

メトリクスの設計と定義

デザインメトリクス

メトリクスの構造化と組織化に関するベストプラクティスについては、「dbt メトリクスの設計と構造化方法」をご覧ください。まずは、このブログの記事をご覧ください。
https://docs.getdbt.com/blog/how-to-design-and-structure-metrics

メトリクスの定義

メトリクスキーの下にネストされた.ymlファイルでメトリクスを定義できます。dbtプロジェクトで独自のメトリクスを設計または定義するには、以下のドキュメントを確認してください。

以下のビデオでは、測定基準とは何か、なぜ測定基準が重要なのか、どのように始めればよいのかについて説明しています。

https://www.loom.com/share/b120ca9d042d46abad1d873a676bf20a

Discussion