Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「コードでデータ分析に関わる指標を管理できる ”Semantic Layer”、dbtとLoo...

Sagara
July 10, 2023

「コードでデータ分析に関わる指標を管理できる ”Semantic Layer”、dbtとLookerで何が違うの?」あなたのこの疑問、解消します

2023/7/7~2023/7/8に開催された「DevelopersIo 2023」で登壇した際の資料です。

Sagara

July 10, 2023
Tweet

More Decks by Sagara

Other Decks in Technology

Transcript

  1. • 組織内のデータを用いるビジネス指標の定義を統制できる ⇛ データガバナンスの向上・アウトプット時の品質向上 例:複数のフィールドを組み合わせた指標をBIツールで表現しようとしたとき Semantic Layerのメリット Semantic Layerがある場合 DWH

    Semantic Layer 【30歳以上の会員の総売上】 「年齢」列: >= 30 「売上」列:SUMで集計 必ず同じグラフに Semantic Layerがない場合 DWH 違うグラフになってしまう 【30歳以上の会員の総売上】 「年齢」列: > 30 「売上」列:SUMで集計 【30歳以上の会員の総売上】 「年齢」列: >= 30 「売上」列:SUMで集計 6
  2. • dbt Labs社が開発するDWH内のデータ変換に特化したサービス SELECT文だけで開発でき、自動テストやドキュメント化もできる • 2022年にdbt Labs社独自の「dbt Semantic Layer」をリリース ・Metricsの定義:dbt-metricsを使用

    ・Semantic Layerに必要なプロキシサーバーなど:dbt Cloud上で展開 • 2023年2月にdbt Labs社が、OSSのSemantic Layerである「MetricFlow」を開 発するTransform社を買収した。MetricFlow統合後のリリースはまだ  ・Metricsの定義:dbt-metricsが廃止となり、dbt-metricflowに置き換わる ※dbt Core v1.6~ dbtとは 11
  3. 今日のメイントピック 15 レポーティング等 社内のデータ DWH (データウェアハウス) Semantic Layer 加工 顧客ランク

    = case … 総売上 = sum(列名) dbt dbt Semantic Layer Looker Looker Modeler ・LookerのSemantic Layer ・dbtのSemantic Layer 何が違うの??
  4. • Looker ◦ 2023年7月8日時点で最新のLooker 23.10の仕様を参考にする • dbt Semantic Layer ◦

    基本は、2023年6月に公開された最新ドキュメントを参考にする ▪ 参考:The new dbt Semantic Layer spec: the DNA for our vision ▪ 参考:Build your metrics ◦ 上述の情報に無いより細かな仕様については、買収前のMetricFlow のドキュメントや、dbt Labs社のブログを参考にする ▪ 参考:The dbt Semantic Layer: what’s next ▪ 参考:Introduction to MetricFlow Concepts 前提条件:各製品の情報について 17
  5. 定義の方法:dbt Semantic Layer 20 ※参考情報:公式Doc「About MetricFlow」「Joins」 • semantic_models:dbtのModel(1つのテーブルやビュー)と1:1で紐づき、      entities,dimensions,measuresを含む基本オブジェクト •

    entities:他のsemantic_modelsと結合する際のキーを定義 • dimensions:1~複数カラムを用いて、「分析の軸」を定義 • measures:1~複数カラムを用いて、「集計指標」を定義 • metrics:エンドユーザーが参照する指標をmeasureを用いて定義 semantic_ models① 顧客ランク (dimensions) 顧客ID (entities) 総売上 (measures) semantic_ models② 顧客ID (entities) ランクAの総売上 (metrics) ランクBの総売上 (metrics)
  6. • 基本は、事前に定義済みのmetricsとdimensionsを選択する形式 • CLI、SQL、JDBC、GraphQL、様々な方法で参照できる予定 ◦ ODBC、REST APIによる参照も開発予定 • 参考:Pythonを用いて、MetricFlowで定義された指標を参照する例 指標の参照方法:dbt

    Semantic Layer 23 #Query Metrics df = mql.query(["gross_sales"], ["metric_time", "customer__billing_country"]) #Format results and print first 5 rows df.head().style.format({'gross_sales':'${0:,.0f}'}) ※参考情報:公式ブログ「The dbt Semantic Layer: what’s next」、買収前のMetricFlowのドキュメント「Querying Metrics using Python」
  7. • MetricFlow統合後の初リリース時にはWINDOW関数の機能はなし • しかし、廃止されるdbt-metricsではWINDOW関数に対応した Secondary calculationsの機能があり、再導入予定と公式ブログに 表記あり ◦ 下図は、Period over

    Period(ある指標について別の期間の値と比較する)の例 WINDOW関数:dbt Semantic Layer 32 ※参考情報:公式ブログ「The dbt Semantic Layer: what’s next」DevelopersIO:相樂がSecondary calculationsを検証したブログ select * from {{ metrics.calculate( metric('revenue'), grain='week', secondary_calculations = [ metrics.period_over_period( comparison_strategy = 'difference', interval = 1, alias = 'week_over_week' ) ] ) }} 前週との差を 出している
  8. • まず、Looker自体もBIの機能を持つ ◦ LookerのBI機能は、インスタンス上のロゴを非表示にして公開、アプリ へのグラフの埋め込みなど、社外への公開が強み • LookerをSemantic Layerとして使用した際に対応するツール ◦ GA済み:Microsoft

    Power BI、      Looker Studio、      Google Spreadsheet ◦ これから:Tableau、 ThoughtSpot 連携可能なBIツール:Looker 34 ※参考情報:公式ブログ「Looker Modeler のご紹介: BI 指標のための信頼できる唯一の情報源」
  9. • 2023年7月8日時点、MetricFlow統合後のdbt Semantic Layerと ネイティブに接続できるBIツールは未定 • 参考:2022年リリースのdbt Semantic Layerと接続できるBIツール ◦

    ネイティブに接続可能なBIツール ▪ Lightdash、Preset Mode(2023年6月にThoughtSpotが買収) ◦ Tableauからも接続は可能だが、カスタムクエリが必須 連携可能なBIツール:dbt Semantic Layer 35
  10. • Lookerとの連携に対応したデータカタログの例 ◦ Atlan、Select Star、Secoda、CastorDoc、OpenMetadata、等 • できること ◦ Lookerで定義されたDescriptionなどのメタデータの確認 ◦

    元テーブル~View~Explore~ダッシュボード、の列レベルリネージ ※右図はSelect Starの例 連携可能なデータカタログ:Looker 37
  11. • dbtで開発したモデルに対し、直接Semantic Layerを定義できる ◦ 変換処理の開発~Semantic Layerの定義まで一貫した開発が可能 • 参考:2022年リリースのdbt Semantic Layerによるデータリネージの例

    各製品独自の強み:dbt Semantic Layer 41 ※参考情報:公式ブログ「The dbt Semantic Layer: what’s next」 dbtで定義された各種データモデル (SELECT文が記述されたSQLで定義されている) dbtで定義されたmetrics
  12. 選定時の観点1つ目:既存のデータ基盤との相性 43 • 特に「データ変換ツール」と「BIツール」との相性が重要 • 参考:相性を見る際の考え方 ◦ データ変換にDataformを導入済みなのに、dbt Semantic Layerの

    導入を考えるとdbtを入れることになるため、dbtとDataformで 機能重複するところが出てくる(Gitリポジトリも別になる) ◦ 社内ですでに使用しているBIツールがあれば、 「連携手順」「クエリパフォーマンス」「開発ブランチの内容でのBIツー ルからのテスト可否」などを確認する
  13. • データカタログ ◦ Semantic Layerとの連携でデータカタログに求めることは? • データアプリケーション ◦ 既存のアプリのアーキテクチャを大きく変えることなく、 Semantic

    Layerで定義された指標を参照できるか? • Generative AIとの相性 ※最近BIツールやデータカタログで機能発表が相次いでいる ◦ Semantic Layerを連携させて、定義した指標を学習させて より的確な情報をGenerative AIが提供できるようになるか? 選定時の観点2つ目:未来のデータ基盤との相性 44
  14. • Semantic Layerは導入して終わりの製品ではないです ◦ データガバナンスを担保するためには、適切にSemantic Layerで 指標を定義して、エンドユーザーに浸透させないといけない • どちらの製品も、今後たくさんのアップデートが見込まれます! ◦

    Looker ▪ Semantic Layerに特化したLooker Modelerの詳細はまだ不明 ◦ dbt Semantic Layer ▪ MetricFlow統合後のdbt Semantic Layerについて、 連携できるパートナー製品は2023年後半に判明予定 選定時の観点3つ目:焦らないこと 45