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

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

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

2025年2月4日(火) 開催のイベント「第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン」の資料です。
https://techplay.jp/event/970242

Yuki Ishikawa

February 04, 2025
Tweet

More Decks by Yuki Ishikawa

Other Decks in Programming

Transcript

  1. この資料について 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 ハンズオン」の資料です。
  2. このハンズオンコンテンツについて 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 と対応 () の数字の方は関係ないです
  3. コピペ用ページについて Quickstart for dbt Cloud and Snowflakeのコピペ部分まとめ - Zenn https://zenn.dev/holywater044/articles/f9a05cb2a2c5a3

    2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 4 このハンズオンでは SQL をはじめとして様々なテキストコンテンツを入力する手順があります。 手でタイプして入力してもいいですが、ハンズオンイベントの時間は限られているため、 時間短縮できるように コピー&ペースト するためのページを用意しました。
  4. このハンズオンで作るデータ変換 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
  5. 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
  6. 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
  7. 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 凡例:
  8. 4. dbt Cloud に接続 (1) Snowflake を dbt Cloud と接続する方法は「パートナーコネクトを使用する」「手動で設定する」の

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

    サイトに 飛ぶので、そこで dbt Cloud アカウントを作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 17
  10. 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 凡例:
  11. 6. dbt プロジェクトの初期設定 (4) 試しにひとつモデルを作成して dbt run してみましょう。 まずは models

    ディレクトリ以下に test.sql ファイルを新規作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 25
  12. 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 凡例:
  13. 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 凡例:
  14. 8. materialized を切り替える (2) dbt_project.yml を以下のように変更して dbt run すると、プロジェクト jaffle_shop

    内のモデルは view ではなく table として materialized されるように変わっていることがわかります。 変更 table が作られている 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 35
  15. 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 凡例:
  16. 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 凡例:
  17. 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 凡例:
  18. 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 凡例:
  19. 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 凡例:
  20. 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 凡例:
  21. 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 凡例:
  22. 15. モデルのデプロイ (2) Production という名前の環境を作成します。 Deployment credentials には Snowflake への接続設定を入れていきます。

    Test connection が 成功したら Save 今回のハンズオンではデプロイ時の Role は ACCOUNTADMIN を使用します ※ デフォルトの PC_DBT_ROLE だと権限が足りないため ※ 実運用の際はちゃんと権限設計しましょう 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 54
  23. 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 凡例:
  24. やったこと • Snowflake アカウントと dbt Cloud アカウントを接続する • dbt プロジェクトを作成する

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