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

データカタログの最初の一歩 〜データ組織向けに dbt docs を整備している話〜 / Ma...

yamamoto-yuta
May 27, 2024
1.3k

データカタログの最初の一歩 〜データ組織向けに dbt docs を整備している話〜 / Maintaining dbt docs for data organizations

2024.05.24 #TROCCOUG 登壇資料

yamamoto-yuta

May 27, 2024
Tweet

Transcript

  1. ヤプリの製品|Yappli 導⼊顧客向けにアナリティクスサービスを提供 CMS ダッシュボード Yappli 管理画⾯のトップに 表⽰されるダッシュボード Yappli Data Hub

    アプリ内の⾏動データや属性データを ユーザ単位で分析を可能にする データ連携サービス Yappli Analytics アプリログを網羅した分析や、 機能別に特化した分析が可能な ダッシュボード
  2. 2023 2024 … 1⽉ 2⽉ 3⽉ 4⽉ 5⽉ 6⽉ 7⽉

    8⽉ 9⽉ 10⽉ 11⽉ 12⽉ 1⽉ 2⽉ 3⽉ … 開発フロー 構築 2023年から分析⽤データ基盤の   移⾏を開始 CMS ダッシュボードの参照元切り替え 共通データマートの dbt リプレイス dbt test 導⼊ Yappli Analytics の 参照元切り替え (DSメンバーが dbt 導⼊に集中できるよう)問い合わせ対応など
  3. 2023 2024 … 1⽉ 2⽉ 3⽉ 4⽉ 5⽉ 6⽉ 7⽉

    8⽉ 9⽉ 10⽉ 11⽉ 12⽉ 1⽉ 2⽉ 3⽉ … 2023 2024 … 1⽉ 2⽉ 3⽉ 4⽉ 5⽉ 6⽉ 7⽉ 8⽉ 9⽉ 10⽉ 11⽉ 12⽉ 1⽉ 2⽉ 3⽉ … 開発フロー 構築 2023年から分析⽤データ基盤の   移⾏を開始 共通データマートの dbt リプレイス dbt test 導⼊ Yappli Analytics の 参照元切り替え CMS ダッシュボードの参照元切り替え https://tech.yappli.io/entry/update-dbt-infra-dev-flow https://speakerdeck.com/yamamotoyuta/ci-no10nian -wozhan-erufen-xi-yong-detaji-pan-gou-zhu-nodi-bu- dbtniyoruji-pan-shua-xin-tokuerifei-yong-90-percent- xue-jian-henoqu-rizu-mi (DSメンバーが dbt 導⼊に集中できるよう)問い合わせ対応など https://tech.yappli.io/entry/replace-ya-mart-to-dbt
  4. • データ関係の仕様書があちこちに分散 ◦ 社内ドキュメント、スプレッドシート、LookML、顧客向けサポートページ etc… から頑張っ て探す • クエリを直接読まないと分からない ◦

    TROCCO のワークフローに組み込まれているデータマート定義のクエリを解読 • 作った本⼈に直接訊かないと分からない ◦ Slack メンション等で作った本⼈を頻繁に召喚 → コミュニケーションコスト、召喚=作業中断によって作業効率 DOWN 何が深刻だったか?
  5. 同じく2023年、データ基盤の   移⾏がスタート エンドユーザ 営業 エンジニア 営業データ サービスDB アプリログ DSグループ BigQuery CMS

    ダッシュボード Yappli Analytics 社内外ダッシュボード‧ データ提供 エンドユーザ‧ CS 営業‧ エンジニア trocco dbt
  6. • データの加⼯処理を管理してくれるツール ◦ SQL による加⼯処理の Git 管理を可能に ◦ データカタログの⾃動⽣成 ◦

    データのテスト ◦ etc… • 無償CLI版の「dbt Core」と 有償SaaS版の「dbt Cloud」がある ◦ ヤプリでは dbt Core を採⽤      とは
  7. • データの加⼯処理を管理してくれるツール ◦ SQL による加⼯処理の Git 管理を可能に ◦ データカタログの⾃動⽣成 ◦

    データのテスト ◦ etc… • 無償CLI版の「dbt Core」と 有償SaaS版の「dbt Cloud」がある ◦ ヤプリでは dbt Core を採⽤      とは
  8. dbt のデータカタログ⾃動⽣成 SELECT id AS order_id, user_id as customer_id, order_date,

    status FROM dbt_src_test.raw_orders SELECT id AS customer_id, first_name, last_name FROM dbt_src_test.raw_customers raw_orders.sql raw_customers.sql dbt では SELECT~FROM 句が書かれた SQL ファイルでテーブルを定義
  9. dbt のデータカタログ⾃動⽣成 SELECT id AS order_id, user_id as customer_id, order_date,

    status FROM dbt_src_test.raw_orders SELECT id AS customer_id, first_name, last_name FROM dbt_src_test.raw_customers raw_orders.sql raw_customers.sql テーブル定義ファイルからデータカタログ( dbt docs )を⾃動作成 dbt docs generate コマンド
  10. dbt のデータカタログ⾃動⽣成 YAML ファイルでテーブルやカラムの説明などを補⾜可能 version: 2 models: - name: stg_customers

    description: | 顧客テーブルを参照するためのステージング View columns: - name: customer_id description: "顧客ID" data_type: INT64 - name: first_name description: "名前" data_type: STRING - name: last_name description: "名字" data_type: STRING stg_customers.yml
  11. • データ関係の仕様書があちこちに分散 ◦ 社内ドキュメント、スプレッドシート、LookML、顧客向けサポートページ etc… • クエリを直接読まないと分からない ◦ TROCCO のデータマート定義にあるクエリを解読

    • 作った本⼈に直接訊かないと分からない ◦ Slack メンション等で頻繁に本⼈召喚が発⽣ → コミュニケーションコスト、作業効率 DOWN ➡ dbt 移⾏時にデータカタログも dbt docs で作っていこう 何が深刻だったか? dbt docs でこれらを解消しよう💪
  12. • GitHub Actions で dbt docs を GitHub Pages へ⾃動でデプロイ&更新

    • 社内ドキュメントにあった DB 仕様書を dbt docs へ転記 やったこと
  13. • GitHub Actions のワークフローの流れ ◦ 1. main ブランチへの push が⾏われたらワークフローを実⾏

    ◦ 2. ワークフロー内にて dbt の実⾏環境を作成 ◦ 3. dbt docs generate コマンドを実⾏して dbt docs ⽤のファイル(HTML, JSON)を⽣成 ◦ 4. ⽣成されたファイルを GItHub Pages へデプロイ • GitHub Pages の Private 公開が可能なプランを契約している必要がある ◦ ヤプリは Private 公開が可能な契約プランだった GitHub Actions で dbt docs を GitHub Pages へ⾃動でデプロイ&更新
  14. GitHub Actions で dbt docs を GitHub Pages へ⾃動でデプロイ&更新 2023

    2024 … 1⽉ 2⽉ 3⽉ 4⽉ 5⽉ 6⽉ 7⽉ 8⽉ 9⽉ 10⽉ 11⽉ 12⽉ 1⽉ 2⽉ 3⽉ … 開発フロー 構築 CMS ダッシュボードの参照元切り替え 共通データマートの dbt リプレイス dbt test 導⼊ Yappli Analytics の データソース切り替え (DSメンバーが dbt 導⼊に集中できるよう)問い合わせ対応など チームでの dbt 開発が始まったタイミングで 早期に⾃動更新の仕組みを導⼊💪
  15. GitHub Actions で dbt docs を GitHub Pages へ⾃動でデプロイ&更新 2023

    2024 … 1⽉ 2⽉ 3⽉ 4⽉ 5⽉ 6⽉ 7⽉ 8⽉ 9⽉ 10⽉ 11⽉ 12⽉ 1⽉ 2⽉ 3⽉ … 開発フロー 構築 CMS ダッシュボードの参照元切り替え 共通データマートの dbt リプレイス dbt test 導⼊ Yappli Analytics の データソース切り替え (DSメンバーが dbt 導⼊に集中できるよう)問い合わせ対応など 後段のタスクを通して、 dbt docs が⾃然と浸透🙌
  16. GitHub Actions で dbt docs を GitHub Pages へ⾃動でデプロイ&更新 •

    当時、dbt docs のテーブルやカラムの説明はまだほぼ空欄だった   ⬇ • テーブル、クエリ、リネージグラフがサクッと確認できるだけでも⼗分役 ⽴った • 早めにデータカタログとしての場所だけ作って運⽤を始めたおかげで、「こ こに情報を集約しよう」というモチベが発⽣ → ネクストアクションへ
  17. 社内ドキュメントにあった DB 仕様書を dbt docs へ転記 エンドユーザ 営業 エンジニア 営業データ

    サービスDB アプリログ DSグループ BigQuery CMS ダッシュボード Yappli Analytics 社内外ダッシュボード‧ データ提供 エンドユーザ‧ CS 営業‧ エンジニア trocco dbt 社内ドキュメントを探索していたら… サービスDBの仕様書が まとまっているのを発⾒
  18. 社内ドキュメントにあった DB 仕様書を dbt docs へ転記 エンドユーザ 営業 エンジニア 営業データ

    サービスDB アプリログ DSグループ BigQuery CMS ダッシュボード Yappli Analytics 社内外ダッシュボード‧ データ提供 エンドユーザ‧ CS 営業‧ エンジニア trocco dbt サービスDBのデータはほとんどの データ活⽤先で参照されている ↓ ここの仕様が dbt docs に載れば 有⽤性が⼀気に上がる!
  19. 社内ドキュメントにあった DB 仕様書を dbt docs へ転記 • ヤプリでは毎⽉「YappdateDay」という改善に注⼒する⽇が設定されている ◦ この⽇に取り組り組むことで通常業務との兼ね合いを考えずに作業可能に

    ➡ 素早く&無理なく dbt docs の有⽤性を⼤幅に向上させることができた • ⽇頃から関連他部署の社内ドキュメントも覗いていた ◦ そのおかげで DB 仕様書という有益情報が得られた ➡ 関連他部署の情報も越境して取りに⾏ってみると良いことがあるかも
  20. • さらなる dbt docs 拡充 • dbt docs 更新⼿順の改善 •

    DSグループ外向けデータカタログの整備 今後やっていきたいこと
  21. さらなる dbt docs 拡充 営業データ サービスDB アプリログ CMS ダッシュボード Yappli

    Analytics 社内外ダッシュボード‧ データ提供 dbt Source Mart (Table) Staging (View) Compo- nent (Table) dbtモデルのレイヤー分け
  22. さらなる dbt docs 拡充 営業データ サービスDB アプリログ CMS ダッシュボード Yappli

    Analytics 社内外ダッシュボード‧ データ提供 dbt Source Mart (Table) Staging (View) Compo- nent (Table) dbtモデルのレイヤー分け 拡充済
  23. さらなる dbt docs 拡充 営業データ サービスDB アプリログ CMS ダッシュボード Yappli

    Analytics 社内外ダッシュボード‧ データ提供 dbt Source Mart (Table) Staging (View) Compo- nent (Table) dbtモデルのレイヤー分け 拡充済 拡充 拡充 拡充 dbt-osmosisを使って、 上流テーブルのdescriptionを 下流テーブルへ流す
  24. • 現状、通常のリリースと同じ⼿順で更新する運⽤ dbt docs 更新⼿順の改善 メリット: • しっかりレビューできる ◦ PRレビューを通した知⾒共有もできる

    デメリット: • ⼩回りが効かない ◦ 更新のモチベが削がれやすい • dbt docs の⼿元確認が⾯倒 ◦ 常時、開発エディタを⽴ち上げているわけでは ないので… より良い運⽤ができないか模索中…