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

dbt_ベストプラクティス_完全に理解した.pdf

dach
September 26, 2023

 dbt_ベストプラクティス_完全に理解した.pdf

dbt 初学者向けに基本的な使い方やディレクトリ構成についてを説明します

dach

September 26, 2023
Tweet

More Decks by dach

Other Decks in Technology

Transcript

  1. [データ分析基盤初心者向け補足情報 ] 1. データ分析基盤の全体像 2. ELT(ETL) について 3. dbt とは

    [本編] 1. jaffle_shop で学ぶ dbt 2. 抑えておいたほうがいい用語解説 3. 実践 dbt 実装 Section Topics
  2. [データ分析基盤初心者向け補足情報 ] 1. データ分析基盤の全体像 2. ELT(ETL) について 3. dbt とは

    [本編] 1. jaffle_shop で学ぶ dbt 2. 抑えておいたほうがいい用語解説 3. 実践 dbt 実装 Section Topics
  3. DataSource データ分析基盤の全体像 DWH Source 1 Source 2 Source 3 BI

    tools アプリ 生データ 蓄積 データ加工 抽出 抽出 完全性 チェック データ 保持 分析結果 算出 分析素材
  4. データ分析では、様々な DataSource (社内アプリや SaaS など) のデータを利用する必要があります。デー タ分析ができるように、サイロ化された場所からのデータ移動や加工が必要です。 ELT(ETL) について 元のソースからデータを取得する

    ことを指します 利用される宛先に移動することを 指します 標準化や整形、など分析が可能な 形式にすることを指します Extract (抽出) Load (移動) Transform (変換)
  5. dbt は、データ分析の領域における 「Transform」 を行うためのツールです。 SQL ファーストの変換ワークフロー であるため、学習コストが低いことが特徴です。 dbt とは? 元のソースからデータを取得する

    ことを指します 利用される宛先に移動することを 指します 標準化や整形、など分析が可能な 形式にすることを指します Extract (抽出) Load (移動) Transform (変換) T における デファクト スタンダード
  6. • dbt は、モジュール性、移植性、CI/CD、ドキュメントなどのソフトウェア エンジニアリングのベスト プラ クティスに従って、チームが分析コードを迅速かつ共同で展開できるようにする SQL ファーストの変 換ワークフロー
 •

    DWH 構築の ELT/ETL 処理における 「 T (Transform)」を担当
 • Transform におけるデファクトスタンダードと言っても過言ではない 
 • ほとんどの Modern Data Stack との連携が可能 
 
 
 https://www.getdbt.com/product/what-is-dbt/ 
 dbt とは?
  7. [データ分析基盤初心者向け補足情報 ] 1. dbt とは? 2. データ分析基盤の全体像 3. ELT(ETL) について

    [本編] 1. jaffle_shop で学ぶ dbt 2. 抑えておいたほうがいい用語解説 3. 実践 dbt 実装 Section Topics
  8. Q. jaffle_shop とは? A. dbt のチュートリアルで使われる、架空の e コマースストア • Repo

    URL ◦ https://github.com/dbt-labs/jaffle_shop • こんな感じのデータが揃っている jaffle_shop で学ぶ dbt
  9. Q. サンプルユースケースを実現するために何をすれば良い? A. 動かせばユースケースを実現するテーブルが勝手に作れます [動かし方] 1. dbt を install 2.

    所定の DB に接続するための設定を行う 3. サンプルデータを入れる 4. dbt を実行する jaffle_shop で学ぶ dbt
  10. # 接続の確認 % dbt debug # サンプルデータの投入 % dbt seed

    # テーブルの構築 % dbt run # さっきの図を作る % dbt generate % dbt serve 実際のコマンドだとこんな感じ jaffle_shop で学ぶ dbt
  11. [データ分析基盤初心者向け補足情報 ] 1. dbt とは? 2. データ分析基盤の全体像 3. ELT(ETL) について

    [本編] 1. jaffle_shop で学ぶ dbt 2. 抑えておいたほうがいい用語解説 3. 実践 dbt 実装 Section Topics
  12. 今回の LT の中でも登場する dbt の用語にピックアップして説明します • モデル ◦ dbt で行うデータ変換処理を指します

    ◦ ざっくりいうと、「1 SQL ファイル = 1 モデル」です • マテリアライゼーション( materialization) ◦ dbt においてモデルを保持する方法の選択肢のことです ◦ v1.5.x 時点で選択肢は 4つあります ◦ 後で説明します 抑えておいたほうがいい用語解説
  13. [データ分析基盤初心者向け補足情報 ] 1. dbt とは? 2. データ分析基盤の全体像 3. ELT(ETL) について

    [本編] 1. jaffle_shop で学ぶ dbt 2. 抑えておいたほうがいい用語解説 3. 実践 dbt 実装 Section Topics
  14. [要素] ref • 事前定義されているマクロ • 定義済みモデルを参照する • Data Lineage 図で紐づくだけじゃなくて、

    環境差分とかもいい感じに解消してくれる • e.g. dev-dach-test -> prod-dach-test 実践 dbt 実装 データを引っ張ってくる 関心毎に分けて集計 集計結果を結合
  15. 1. view a. view テーブル b. 実行ごとに View として再構築される c.

    常に最新データが参照可能で、モデルの修正がすぐに反映される d. ただし、参照のたびにクエリコストが発生する 2. table 3. ephemeral 4. incremental materialization を理解する
  16. 1. view 2. table a. モデルを実体化して持つ b. 実行ごとにデータが再作成される c. 結果を直接参照できるため、分析ツールや

    macro からの利用が容易 d. 更新が必要な場合には手動で再実行する必要がある 3. ephemeral 4. incremental materialization を理解する
  17. 1. view 2. table 3. ephemeral a. 実行時に一時テーブルとしてモデルに組み込まれる (CTE) b.

    = WITH 句 c. クエリの複雑性を分離できる d. デバッグが困難になる可能性がある 4. incremental materialization を理解する
  18. 1. view 2. table 3. ephemeral 4. incremental a. モデルを実体化して持つ

    b. 設定した戦略にしたがって増分蓄積する c. 全量蓄積よりもストレージコストが抑えられる d. 変更に弱い materialization を理解する
  19. staging • データのクレンジング、変換、整形を行う • 各 DataSource ごとにサブディレクトリが切られる • materialization は

    view を選択する • データの結合や集計などは行わない コンサーンでディレクトリを分離する
  20. marts • 特定のエンティティ(コンセプトとも呼ばれます )を実現する • ユーザーから唯一参照可能なレイヤー • view もしくは table

    を基本的に使う • 必要に応じて incremental を選択する コンサーンでディレクトリを分離する
  21. • モデル実装時には Layer を意識する • Layer 毎に使うべき materialization が決まっている •

    詳細ルールはベストプラクティスを参照する コンサーンでディレクトリを分離する: まとめ
  22. 49
 This material is confidential and the property of Belong

    Inc. 
 Blog や Youtube も見てね blog
 Youtube