Slide 1

Slide 1 text

第3回 Snowflake 中部ユーザ会 dbt x Snowflake ハンズオン 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 1

Slide 2

Slide 2 text

この資料について Snowflakeエコシステム最強の仲間! dbtの紹介 & dbt×Snowflakeハンズオン ~ 第3回Snowflake中部ユーザー 会|IT勉強会・イベントならTECH PLAY[テックプレイ] https://techplay.jp/event/970242 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 2 この資料は 2025年2月4日(火) 開催のイベント 「第3回 Snowflake 中部ユーザ会 dbt x Snowflake ハンズオン」の資料です。

Slide 3

Slide 3 text

このハンズオンコンテンツについて 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 3 このハンズオンコンテンツは dbt 社が公開している「Quickstart for dbt Cloud and Snowflake」の 2025年1月時点のバージョンをベースに作られています。 https://docs.getdbt.com/guides/snowflake ※ 16章の Streamlit アプリのところだけはオリジナルコンテンツです。 この資料の章番号は dbt 社のコンテンツと対応しています 例: この資料の「4.」のページは dbt 社コンテンツの Step 4 と対応 () の数字の方は関係ないです

Slide 4

Slide 4 text

コピペ用ページについて Quickstart for dbt Cloud and Snowflakeのコピペ部分まとめ - Zenn https://zenn.dev/holywater044/articles/f9a05cb2a2c5a3 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 4 このハンズオンでは SQL をはじめとして様々なテキストコンテンツを入力する手順があります。 手でタイプして入力してもいいですが、ハンズオンイベントの時間は限られているため、 時間短縮できるように コピー&ペースト するためのページを用意しました。

Slide 5

Slide 5 text

はじまりはじまり 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 5

Slide 6

Slide 6 text

このハンズオンで作るデータ変換 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 6 Snowflake account DB: RAW SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS DB: ANALYTICS SCHEMA: PUBLIC CUSTMERS STG_CUSTOMERS STG_ORDERS

Slide 7

Slide 7 text

Snowflake account dbt account project: models/ examples/ 作られるオブジェクトの全体像 DB: RAW DB: PC_DBT_DB dbt_project.yml customer.sql sources.yml schema.yml stg_custmers.sql stg_orders.sql example/my_first_d bt_model.sql example/my_secon d_dbt_model.sql SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ CUSTOMERS STG_CUSTOMERS STG_ORDERS Documents my_first_dbt_model Envitonment: Production Deploy job: Production Run DB: ANALYTICS SCHEMA: PUBLIC CUSTOMERS STG_CUSTOMERS STG_ORDERS sources Projects WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING my_second_dbt_model test.sql TABLE VIEW 凡例: test

Slide 8

Slide 8 text

1. Snowsight にサインイン Snowflakeアカウントの開設方法 – Prepper Open Data Bank https://podb.truestar.co.jp/snowflake-account ご自身の Snowflake アカウントで Snowsight (Snowflake 管理画面) にサインインします。 Snowflake アカウントをお持ちでない場合は無料のトライアルアカウントを開設しましょう。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 8

Slide 9

Slide 9 text

1. Snowsight にサインイン 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 9 Snowflake account 作成

Slide 10

Slide 10 text

2. 新規 SQL ワークシートを作成 作業用の SQL ワークシートを作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 10

Slide 11

Slide 11 text

3. RAW データの読み込み (1) ウェアハウス・データベース・スキーマを作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 11

Slide 12

Slide 12 text

3. RAW データの読み込み (2) 3つのテーブルを作成し、サンプルデータをロードします。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 12

Slide 13

Slide 13 text

3. RAW データの読み込み (3) サンプルデータがロードできているかを確認します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 13

Slide 14

Slide 14 text

3. RAW データの読み込み (4) 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 14 Snowflake account DB: RAW SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: TRANSFORMING 作成 作成 作成 TABLE VIEW 凡例:

Slide 15

Slide 15 text

4. dbt Cloud に接続 (1) Snowflake を dbt Cloud と接続する方法は「パートナーコネクトを使用する」「手動で設定する」の 2種類ありますが、このハンズオンではパートナーコネクトを使用します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 15

Slide 16

Slide 16 text

4. dbt Cloud に接続 (2) 「Optional Grant」にて、 ロール「PC_DBT_ROLE」にアクセスを許可する データベースを指定します。 パートナーコネクトの設定を入力します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 16

Slide 17

Slide 17 text

4. dbt Cloud に接続 (3) 「avtivate」を押すと dbt Cloud の Web サイトに 飛ぶので、そこで dbt Cloud アカウントを作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 17

Slide 18

Slide 18 text

4. dbt Cloud に接続 (4) dbt Cloud にログインできたら、Snowflake 接続設定の画面に移動します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 18

Slide 19

Slide 19 text

4. dbt Cloud に接続 (5) Snowflake 接続設定を編集し、使用するデータベースとウェアハウスを以下のように書き換えて保存します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 19

Slide 20

Slide 20 text

Snowflake account dbt account 4. dbt Cloud に接続 (6) DB: RAW DB: PC_DBT_DB SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING 作成 作成 作成 TABLE VIEW 凡例:

Slide 21

Slide 21 text

5. Git リポジトリの設定 dbt プロジェクトを管理するための Git リポジトリを設定する必要がありますが、パートナーコネクトを 使用している場合は既に Git リポジトリが設定されているため、今回は何もする必要はありません。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 21

Slide 22

Slide 22 text

6. dbt プロジェクトの初期設定 (1) Cloud IDE を起動します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 22

Slide 23

Slide 23 text

6. dbt プロジェクトの初期設定 (2) 「Initialize dbt project」すると、Git リポジトリに dbt プロジェクトのテンプレートが追加されます。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 23

Slide 24

Slide 24 text

6. dbt プロジェクトの初期設定 (3) 初期状態の dbt プロジェクトをコミットします。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 24

Slide 25

Slide 25 text

6. dbt プロジェクトの初期設定 (4) 試しにひとつモデルを作成して dbt run してみましょう。 まずは models ディレクトリ以下に test.sql ファイルを新規作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 25

Slide 26

Slide 26 text

6. dbt プロジェクトの初期設定 (5) models/test.sql には以下の SQL 文を書き込んで保存します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 26

Slide 27

Slide 27 text

6. dbt プロジェクトの初期設定 (6) 画面下部のフォームに dbt run と入力し、Enter を押して実行します。 もし「success」と表示されなかった場合は、権限設定に問題がある可能性があります。 失敗した場合の表示 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 27

Slide 28

Slide 28 text

6. dbt プロジェクトの初期設定 (7) 作成した models/test.sql はこれ以降の手順では使用しないため、削除します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 28

Slide 29

Slide 29 text

Snowflake account dbt account project: models/ 6. dbt プロジェクトの初期設定 (8) DB: RAW DB: PC_DBT_DB dbt_project.yml SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING 作成 my_first_dbt_model examples/ example/my_first_d bt_model.sql example/my_secon d_dbt_model.sql test.sql 作成→削除 my_second_dbt_model test 作成 TABLE VIEW 凡例:

Slide 30

Slide 30 text

7. 最初のモデル作成 (1) 作業用ブランチ add-customers-model を作成します。 ブランチが切り替わっていることを確認 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 30

Slide 31

Slide 31 text

7. 最初のモデル作成 (2) 最初のモデルとして models/customers.sql を作成します。 コピペ 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 31

Slide 32

Slide 32 text

7. 最初のモデル作成 (3) dbt run してみて、成功するかどうかを確認します。 作成したモデルの run が成功している 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 32

Slide 33

Slide 33 text

Snowflake account dbt account project: models/ 7. 最初のモデル作成 (4) DB: RAW DB: PC_DBT_DB dbt_project.yml SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING customer.sql CUSTOMERS ↑viewで作られた 作成 作成 examples/ example/my_first_d bt_model.sql example/my_secon d_dbt_model.sql my_first_dbt_model my_second_dbt_model test TABLE VIEW 凡例:

Slide 34

Slide 34 text

8. materialized を切り替える (1) プロジェクト名を変更します。 変更 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 34

Slide 35

Slide 35 text

8. materialized を切り替える (2) dbt_project.yml を以下のように変更して dbt run すると、プロジェクト jaffle_shop 内のモデルは view ではなく table として materialized されるように変わっていることがわかります。 変更 table が作られている 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 35

Slide 36

Slide 36 text

Snowflake account dbt account project: models/ 8. materialized を切り替える (3) DB: RAW DB: PC_DBT_DB dbt_project.yml SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING customer.sql CUSTOMERS ↑tableに変わった ↓viewに変わった +materializedを修正 通常:table examples:view 修正 修正 my_first_dbt_model my_second_dbt_model test 修正 examples/ example/my_first_d bt_model.sql example/my_secon d_dbt_model.sql my_first_dbt_model.sql にmaterialized tableの 記述があるためtableのまま TABLE VIEW 凡例:

Slide 37

Slide 37 text

8. materialized を切り替える (4) さらに、モデルファイル内で設定を上書きすることができます。 追加 view が作られている 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 37

Slide 38

Slide 38 text

Snowflake account dbt account project: models/ 8. materialized を切り替える (5) DB: RAW DB: PC_DBT_DB dbt_project.yml SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING customer.sql CUSTOMERS ↑viewに変わった materialized viewを追加 修正 修正 my_first_dbt_model my_second_dbt_model test examples/ example/my_first_d bt_model.sql example/my_secon d_dbt_model.sql TABLE VIEW 凡例:

Slide 39

Slide 39 text

9. example モデルを削除 (1) 初期化時に作成された example モデルとその設定は削除してしまいましょう。 削除 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 39

Slide 40

Slide 40 text

Snowflake account dbt account project: models/ 9. example モデルを削除 (2) DB: RAW DB: PC_DBT_DB dbt_project.yml SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING customer.sql CUSTOMERS examplesの 記述を削除 examplesの フォルダ削除 削除 作成 my_first_dbt_model my_second_dbt_model test TABLE VIEW 凡例:

Slide 41

Slide 41 text

10. モデルを分割 (1) CTE (共通テーブル式) 内のロジックを別のモデルとして切り出していきます。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 41

Slide 42

Slide 42 text

10. モデルを分割 (2) リネージを見ると、モデルが複数に分割されて依存関係が作られていることがわかります。 dbt run すると、3つのモデルがそれぞれ実行されていることがわかります。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 42

Slide 43

Slide 43 text

Snowflake account dbt account project: models/ 10. モデルを分割 (3) DB: RAW DB: PC_DBT_DB dbt_project.yml SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING customer.sql STG_CUSTOMERS STG_ORDERS stg_custmers.sql stg_orders.sql 作成 作成 修正 CUSTOMERS ↑Tableに変わった 修正 ・materialized viewが 消えた ・from句をstg_xxxを 見るように修正 my_first_dbt_model my_second_dbt_model test TABLE VIEW 凡例:

Slide 44

Slide 44 text

11. データソースを明示 (1) models/sources.yml を作成すると、データソースの説明などを記述することができます。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 44

Slide 45

Slide 45 text

11. データソースを明示 (2) モデル側で先ほど記述したソースを参照するように指定すると、リネージにデータソースが表示されます。 このとき、dbt run の結果は前章とは変更はありません。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 45

Slide 46

Slide 46 text

Snowflake account dbt account project: models/ 11. データソースを明示 (3) DB: RAW DB: PC_DBT_DB dbt_project.yml SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING customer.sql stg_custmers.sql stg_orders.sql STG_ORDERS STG_CUSTOMERS sources.yml ・sourceを定義 ・ source の discriptionを記述 作成 CUSTOMERS my_first_dbt_model my_second_dbt_model test 修正 from句をsourceを 見るように修正 TABLE VIEW 凡例:

Slide 47

Slide 47 text

12. モデルのテストを追加 (1) models/schema.yml を作成すると、モデルのテストを記述することができます。 dbt test でテストを実行します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 47

Slide 48

Slide 48 text

Snowflake account dbt account project: models/ 12. モデルのテストを追加 (2) DB: RAW DB: PC_DBT_DB dbt_project.yml SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING customer.sql stg_custmers.sql stg_orders.sql STG_ORDERS STG_CUSTOMERS sources.yml schema.yml testsを記述 作成 CUSTOMERS my_first_dbt_model my_second_dbt_model test TABLE VIEW 凡例:

Slide 49

Slide 49 text

13. モデルのドキュメントを記述 (1) models/schema.yml にはモデルのドキュメントを記述することもできます。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 49

Slide 50

Slide 50 text

13. モデルのドキュメントを記述 (2) ドキュメントを記述して dbt docs generate を実行すると、ドキュメントサイトが自動生成されます。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 50

Slide 51

Slide 51 text

Snowflake account dbt account project: models/ 13. モデルのドキュメントを記述 (3) DB: RAW DB: PC_DBT_DB dbt_project.yml SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING customer.sql stg_custmers.sql stg_orders.sql STG_ORDERS STG_CUSTOMERS sources.yml schema.yml Documents sources Projects model の descriptionを追記 作成 修正 CUSTOMERS my_first_dbt_model my_second_dbt_model test TABLE VIEW 凡例:

Slide 52

Slide 52 text

14. 変更をコミット & マージ ここまで作業した内容をコミットして main ブランチにマージしましょう。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 52

Slide 53

Slide 53 text

15. モデルのデプロイ (1) 新しい環境を作成していきます。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 53

Slide 54

Slide 54 text

15. モデルのデプロイ (2) Production という名前の環境を作成します。 Deployment credentials には Snowflake への接続設定を入れていきます。 Test connection が 成功したら Save 今回のハンズオンではデプロイ時の Role は ACCOUNTADMIN を使用します ※ デフォルトの PC_DBT_ROLE だと権限が足りないため ※ 実運用の際はちゃんと権限設計しましょう 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 54

Slide 55

Slide 55 text

15. モデルのデプロイ (3) 作成した環境にデプロイジョブを作成します。 これがあるか確認 チェックを入れる 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 55

Slide 56

Slide 56 text

15. モデルのデプロイ (4) 作成したデプロイジョブを実行します。 ビルド成功 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 56

Slide 57

Slide 57 text

15. モデルのデプロイ (5) dbt build が成功した場合、モデルとして記述した内容が Snowflake 側にテーブルとして 作成されていることがわかります。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 57

Slide 58

Slide 58 text

Snowflake account dbt account project: models/ 15. モデルのデプロイ (6) DB: RAW DB: PC_DBT_DB dbt_project.yml SCHEMA: JAFFLE_SHOP CUSTOMERS ORDERS SCHEMA: STRIPE PAYMENTS SCHEMA: DBT_ DB: ANALYTICS SCHEMA: PUBLIC WAREHOUSE: PC_DBT_WH WAREHOUSE: TRANSFORMING customer.sql stg_custmers.sql stg_orders.sql STG_ORDERS STG_CUSTOMERS sources.yml schema.yml Documents sources Projects Envitonment: Production Deploy job: Production Run CUSTOMERS STG_CUSTOMERS STG_ORDERS 作成 作成 作成 CUSTOMERS my_first_dbt_model my_second_dbt_model test TABLE VIEW 凡例:

Slide 59

Slide 59 text

16. Streamlit によるデータアプリ作成 (1) Streamlit アプリを作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 59

Slide 60

Slide 60 text

16. Streamlit によるデータアプリ作成 (2) Python コードをコピペして Run します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 60

Slide 61

Slide 61 text

16. Streamlit によるデータアプリ作成 (3) dbt でビルドしたデータを Streamlit アプリで可視化することができました 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 61

Slide 62

Slide 62 text

やったこと • Snowflake アカウントと dbt Cloud アカウントを接続する • dbt プロジェクトを作成する • モデルを作成して run してみる • materialized を切り換える • モデルやデータソースを分割する • モデルをテストする • モデルのドキュメントを生成する • モデルをビルドする • 生成されたテーブルのデータを Streamlit でアプリ化する ここまですべて通せたのであれば、あなたは以下のことができるようになったということです! おめでとうございます 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 62

Slide 63

Slide 63 text

おしまい 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 63