Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DevIO2024_Online_dbt_yoshidanana.pdf
Search
yoshidanana
July 23, 2024
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DevIO2024_Online_dbt_yoshidanana.pdf
yoshidanana
July 23, 2024
More Decks by yoshidanana
See All by yoshidanana
DevIO2024_Online_dbt_yoshidanana.pdf
yoshidanana
0
370
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Mind Mapping
helmedeiros
PRO
1
250
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
380
How STYLIGHT went responsive
nonsquared
100
6.2k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
620
Building an army of robots
kneath
306
46k
Transcript
dbt + Snowflake を組み合わせて データ変換を実装してみた 2024.7.23 データ事業本部 機械学習チーム 吉田奈々
Xへの投稿の際は、 ハッシュタグ #cm_odyssey でお願いいたします。 2 お願い
スピーカー紹介 名前:吉田奈々 所属:クラスメソッド株式会社 データ事業本部 機械学習チーム 触っているサービス:dbt,Amazon Athena,Amazon SageMaker ブログ: https://dev.classmethod.jp/author/n
anayoshi/ 3
メインターゲット:dbt 初学者の方 • これから dbt + Snowflake を使ってデータ変換システム を構築したいと考えている初学者 •
dbt + Snowflake で構築する際の詰まるポイントを 知りたい方 • dbt のメリット・デメリットが知りたい方 本セッションの対象者 4
• dbt と Snowflake の概要 • dbt のメリット・デメリット • 過去に触ったことのある
ELT サービスと比較して、 メリットとデメリットを紹介 • dbt + Snowflake の構築手順 • 詰まったポイントと解消方法 本セッションで話すこと 5
目次 1. dbtとは 2. Snowflake とは 3. dbt のメリット・デメリット 4.
dbt + Snowflake データ変換システム構築 6
本日のゴール 7 やりたいこと 1. ローカル環境に dbt-core をインストール 2. Snowflake にリソースを作成
3. 作成したリソース情報をもとに、dbt init コマンドで dbt プロジェクトを作成 4. 接続情報が間違っていないか dbt debug で確認 ※本環境ではテストのため、ローカルから実行しています Client Database Users ① ② ③ ④
1.dbt とは 8
概要 • dbt(data build tool)とは • SQL を用いて、データを変換し、データウェアハウス、 データマートを構築していくことができるツール •
データウェアハウスに保存されているデータを変 換し、変換したデータをデータウェアハウスに書 き戻す部分で使用する • ELT の T(Transform:変換)を担う 9
概要 • ELT とは • データインテグレーションプロセスの一つ 10 Extract 抽出 Transform
加工・変換 Load 読み込み • データの抽出 • API、基幹システム、 CRM / 顧客管理シス テムなど • 抽出したデータをデ ータウェアハウスな どのストレージに読 み込む • データを必要に応じ て加工・変換を行う プロセス
概要 • dbt の領域 11 参考資料:https://classmethod.jp/partner/dbt/
概要 • dbt でのデータ処理の流れ 12
2.Snowflake とは 13
概要 • クラウド上で動作する SaaS 型データクラウド 14 特徴 • データベース・データ ウェアハウスの保存、
データ処理、分析が可能 • 従量課金制 • インフラ管理が不要 参考資料:https://www.Snowflake.com/ja/data-cloud/platform/
概要 • Snowflake の領域 15 参考資料:https://classmethod.jp/partner/dbt/
3.dbt のメリット / デメリット 16
dbt のメリット・デメリット • 他 ELT サービスとの比較 • Azure Data Factory
• Azure Synapse Analytics 17
Azure Synapse Analytics • Azure の ELT サービスの一つ • 大規模なデータウェアハウス構築とビッグデータ分析を担う
• GUI でデータパイプラインの構築が可能 18 参考URL:https://learn.microsoft.com/ja-jp/azure/synapse-analytics/overview-what-is
Azure Data Factory • Azure の ELT サービスの一つ • 異なるデータソースからのデータを収集、変換、移動させるために使用
• GUI でデータパイプラインの構築が可能 19 参考URL:https://learn.microsoft.com/ja-jp/azure/data-factory/introduction
メリット 1. SQL + α でデータ変換加工 2. テスト機能 3. ドキュメント生成機能
20
• dbt モデル実行の仕組み 1.SQL + α でデータ変換加工 21 dbt プロジェクトフォルダ
Analytics logs models ・ ・ ・ ./dbt プロジェクトフォルダ / models 配下に 格納された .sql ファイルが動作する ※dbtプロジェクトフォルダイメージ図
• {{ ref }} を使って他 dbt モデルを参照できる 1.SQL + α
でデータ変換加工 22 model_a.sql model_b.sql model_a.sql モデル を参照する
1.SQL + α でデータ変換加工 • jinja テンプレート機能:macros の使用 23 dbt
プロジェクトフォルダ Analytics macros models ・ ・ ・
2.テスト機能 • テストの重要性 • データ品質が低い→ビジネス上の悪影響 が発生する 24
2.テスト機能 • dbt test • singular test:単一テスト • generic test:汎用テスト
25
2.テスト機能 • dbt test:singular test • テスト対象のデータセット内で不要な行を選択するSQL文を作成 • 不要な行が0件ならテスト成功 •
不要な行が含まれたらテスト失敗 26 singular_test.sql
2.テスト機能 • テスト実行結果 • コンソールで dbt test コマンドを実行 27 テスト失敗
テスト成功
2.テスト機能 • dbt test:generic test • テスト内容を記述した.ymlファイルを作成する • columns:ブロックの配下でカラム名を指定 •
tests:ブロックで実行したいテスト名を指定 28 ./dbt_project/models/hoge.yml
2.テスト機能 • dbt test:generic test のデフォルトテスト • 以下4種類がデフォルトで用意されている • 自分でジェネリックテストを作成することも可能
29 テスト名 概要 not_null 指定されたカラムが null を含まないこと unique 指定されたカラムのデータがすべてユニーク値であること accepted_values 指定されたカラムには、指定された値以外を含まないこと relationships 指定されたカラムの値が、 to に指定されたモデルの field に指定されたカラムに含まれ ていること
3.ドキュメント生成機能 30
3.ドキュメント生成機能 • dbt ドキュメント 実行方法 • dbt docs generate の実行:
• dbt docs serve の実行: 31
3.ドキュメント生成機能 32
デメリット 1. GUIをサポートしていない • SQLに精通しているユーザー向けに設計されている • dbt cloud では GUI
を使用して dbt モデルが作成できるが 別途料金がかかる 2. サーバの作成が必要 • サーバの管理が発生する • フルマネージドサービスとして dbt cloud があるが、別途料金が かかる 33
メリット・デメリット まとめ 34 dbt Azure Synapse Analytics Azure Data Factory
変換言語 • SQL + jinja テンプレート ※SQL jinja テンプレートのみを サポートするため、学習が必要 • GUIがベース • GUI でサポートしていない変 換が行いたい場合 PySpark を使用する • GUIがベース • GUI でサポートしていない 変換が行いたい場合 SQL を使用する テスト機能 • SQL / yml を記述することで テストが実行可能 • データパイプラインの テストが GUI で実行可能 • 単一テストは未実装 • データパイプラインの テストが GUI で実行可能 • 単一テストは未実装 ドキュメント 生成機能 • dbt docs generate、dbt doc serve でドキュメントが生成 可能 • 未実装 • 未実装 ETL のどの 部分を担うか • Transform(データの加工・ 変換)に特化 • データウェアハウスは別途 用意する必要がある ※ post_hook などを使用で Load:読み込みが実行可能 • 全範囲をカバー • データウェアハウス構築~ データ加工・変換まで一貫し て行えるのがメリット • LとTに対応している • 様々なデータソースに対応し ている • データウェアハウスは別途 用意する必要がある
3.dbt + Snowflake で データパイプラインを構築 35
本日のゴール 1. dbt-core インストール 2. Snowflake のセットアップ 3. dbt init
の実行 4. dbt debug の実行 36
構成図 37 やりたいこと 1. ローカル環境に dbt-core をインストール 2. Snowflake にリソースを作成
3. 作成したリソース情報をもとに、dbt init コマンドで dbt プロジェクトを作成 4. 接続情報が間違っていないか dbt debug で確認 ※本環境ではテストのため、ローカルから実行しています Client Database Users ① ② ③ ④
1.dbt-core インストール • ローカル環境に以下のコマンドで dbt と Snowflake を接 続するためのアダプターをインストールする 38
2.Snowflake セットアップ • dbt 接続先の Snowflake に以下のリソースを作成する • Snowflake コンソール上で
SQL を実行 2-1.ユーザー / ロール 2-2.データベース / スキーマ 2-3.ウェアハウス 39
2-1.ユーザー / ロール 作成 • Snowflake SQL ワークシート上で以下のSQLを実行する 40
2-2.データベース / スキーマ 作成 • Snowflake SQL ワークシート上で以下のSQLを実行する 41
2-3.ウェアハウス 作成 • Snowflake SQL ワークシート上で以下のSQLを実行する 42
3.dbt init の実行 • Snowflake リソース準備が完了したら、dbt init コマンド を実行する •
コンソール上で対話形式で接続情報を入力 43
3.dbt init の実行 44 • dbt init 入力項目 項目名 入力内容
説明 プロジェクト名 任意のプロジェクト名 dbt プロジェクト名を入力する type Snowflake dbt と接続しているウェアハウスを入力する ex.Snowflake,athena,redshift account Snowflake 識別子名 Snowflake 識別子名 {locator}.ap-northeast-1.aws user ユーザー名 2.Snowflake のセットアップ で作成したユーザー名を入力 password パスワード 2.Snowflake のセットアップ で作成したユーザーの指定したパスワードを入力 role ロール名 2.Snowflake のセットアップ で作成した以下のリソース名を入力 • ロール • データベース • スキーマ • ウェアハウス database データベース名 schema スキーマ名 warehouse ウェアハウス名
3.dbt init の実行 • dbt init を実行すると、入力した接続情報が profile.yml に追加される 45
4.dbt debug の実行 • コンソールから dbt debug を実行 • dbt_project.yml
と profile.yml の接続情報を確認 46
詰まったポイント① • dbt debug 実行時に、Snowflake の 権限が足りずエラーが発生する 47
解決手順① • 必ずリソースを作成したら、ロールを付与する • ロールを作成後にユーザー、データベース、 スキーマ、ウェアハウスを作成し、作成した ロールの権限を付与 • 以下の通り、grant all
を実行する 48
詰まったポイント② 49 • dbt init 実行時に、Snowflake 識別子登録でエラーが 発生する • Snowflake
識別子が Snowflake のコンソール上で 深いところにある
解決手順② 50 • Snowflake 識別子の調べ方 コンソール→左下のアカウント名 からSnowflake 識別子が確認可能
まとめ • dbt を使用して、SQL と jinja テンプレートを使ったデータ変換の効率化 が可能 51
None