Share
Embed
第3回 Snowflake 中部ユーザ会 - dbt × Snowflake ハンズオン
2025年2月4日(火) 開催のイベント「第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン」の資料です。
https://techplay.jp/event/970242
Yuki Ishikawa
February 04, 2025
Transcript
63 slides
-
第3回 Snowflake 中部ユーザ会 dbt x Snowflake ハンズオン 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 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 ハンズオン」の資料です。 -
このハンズオンコンテンツについて 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 と対応 () の数字の方は関係ないです -
コピペ用ページについて Quickstart for dbt Cloud and Snowflakeのコピペ部分まとめ - Zenn https://zenn.dev/holywater044/articles/f9a05cb2a2c5a3
2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 4 このハンズオンでは SQL をはじめとして様々なテキストコンテンツを入力する手順があります。 手でタイプして入力してもいいですが、ハンズオンイベントの時間は限られているため、 時間短縮できるように コピー&ペースト するためのページを用意しました。 -
このハンズオンで作るデータ変換 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 -
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 -
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 -
1. Snowsight にサインイン 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt ×
Snowflakeハンズオン 9 Snowflake account 作成 -
2. 新規 SQL ワークシートを作成 作業用の SQL ワークシートを作成します。 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 10 -
3. RAW データの読み込み (1) ウェアハウス・データベース・スキーマを作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会 -
dbt × Snowflakeハンズオン 11 -
3. RAW データの読み込み (2) 3つのテーブルを作成し、サンプルデータをロードします。 2025.02.04 第3回 Snowflake 中部ユーザー会 -
dbt × Snowflakeハンズオン 12 -
3. RAW データの読み込み (3) サンプルデータがロードできているかを確認します。 2025.02.04 第3回 Snowflake 中部ユーザー会 -
dbt × Snowflakeハンズオン 13 -
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 凡例: -
4. dbt Cloud に接続 (1) Snowflake を dbt Cloud と接続する方法は「パートナーコネクトを使用する」「手動で設定する」の
2種類ありますが、このハンズオンではパートナーコネクトを使用します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 15 -
4. dbt Cloud に接続 (2) 「Optional Grant」にて、 ロール「PC_DBT_ROLE」にアクセスを許可する データベースを指定します。 パートナーコネクトの設定を入力します。
2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 16 -
4. dbt Cloud に接続 (3) 「avtivate」を押すと dbt Cloud の Web
サイトに 飛ぶので、そこで dbt Cloud アカウントを作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 17 -
4. dbt Cloud に接続 (4) dbt Cloud にログインできたら、Snowflake 接続設定の画面に移動します。 2025.02.04
第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 18 -
4. dbt Cloud に接続 (5) Snowflake 接続設定を編集し、使用するデータベースとウェアハウスを以下のように書き換えて保存します。 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 19 -
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 凡例: -
5. Git リポジトリの設定 dbt プロジェクトを管理するための Git リポジトリを設定する必要がありますが、パートナーコネクトを 使用している場合は既に Git リポジトリが設定されているため、今回は何もする必要はありません。
2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 21 -
6. dbt プロジェクトの初期設定 (1) Cloud IDE を起動します。 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 22 -
6. dbt プロジェクトの初期設定 (2) 「Initialize dbt project」すると、Git リポジトリに dbt プロジェクトのテンプレートが追加されます。
2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 23 -
6. dbt プロジェクトの初期設定 (3) 初期状態の dbt プロジェクトをコミットします。 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 24 -
6. dbt プロジェクトの初期設定 (4) 試しにひとつモデルを作成して dbt run してみましょう。 まずは models
ディレクトリ以下に test.sql ファイルを新規作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 25 -
6. dbt プロジェクトの初期設定 (5) models/test.sql には以下の SQL 文を書き込んで保存します。 2025.02.04 第3回
Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 26 -
6. dbt プロジェクトの初期設定 (6) 画面下部のフォームに dbt run と入力し、Enter を押して実行します。 もし「success」と表示されなかった場合は、権限設定に問題がある可能性があります。
失敗した場合の表示 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 27 -
6. dbt プロジェクトの初期設定 (7) 作成した models/test.sql はこれ以降の手順では使用しないため、削除します。 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 28 -
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 凡例: -
7. 最初のモデル作成 (1) 作業用ブランチ add-customers-model を作成します。 ブランチが切り替わっていることを確認 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 30 -
7. 最初のモデル作成 (2) 最初のモデルとして models/customers.sql を作成します。 コピペ 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 31 -
7. 最初のモデル作成 (3) dbt run してみて、成功するかどうかを確認します。 作成したモデルの run が成功している 2025.02.04
第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 32 -
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 凡例: -
8. materialized を切り替える (1) プロジェクト名を変更します。 変更 2025.02.04 第3回 Snowflake 中部ユーザー会
- dbt × Snowflakeハンズオン 34 -
8. materialized を切り替える (2) dbt_project.yml を以下のように変更して dbt run すると、プロジェクト jaffle_shop
内のモデルは view ではなく table として materialized されるように変わっていることがわかります。 変更 table が作られている 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 35 -
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 凡例: -
8. materialized を切り替える (4) さらに、モデルファイル内で設定を上書きすることができます。 追加 view が作られている 2025.02.04 第3回
Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 37 -
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 凡例: -
9. example モデルを削除 (1) 初期化時に作成された example モデルとその設定は削除してしまいましょう。 削除 2025.02.04 第3回
Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 39 -
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 凡例: -
10. モデルを分割 (1) CTE (共通テーブル式) 内のロジックを別のモデルとして切り出していきます。 2025.02.04 第3回 Snowflake 中部ユーザー会
- dbt × Snowflakeハンズオン 41 -
10. モデルを分割 (2) リネージを見ると、モデルが複数に分割されて依存関係が作られていることがわかります。 dbt run すると、3つのモデルがそれぞれ実行されていることがわかります。 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 42 -
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 凡例: -
11. データソースを明示 (2) モデル側で先ほど記述したソースを参照するように指定すると、リネージにデータソースが表示されます。 このとき、dbt run の結果は前章とは変更はありません。 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 45 -
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 凡例: -
12. モデルのテストを追加 (1) models/schema.yml を作成すると、モデルのテストを記述することができます。 dbt test でテストを実行します。 2025.02.04 第3回
Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 47 -
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 凡例: -
13. モデルのドキュメントを記述 (2) ドキュメントを記述して dbt docs generate を実行すると、ドキュメントサイトが自動生成されます。 2025.02.04 第3回
Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 50 -
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 凡例: -
14. 変更をコミット & マージ ここまで作業した内容をコミットして main ブランチにマージしましょう。 2025.02.04 第3回 Snowflake
中部ユーザー会 - dbt × Snowflakeハンズオン 52 -
15. モデルのデプロイ (1) 新しい環境を作成していきます。 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt
× Snowflakeハンズオン 53 -
15. モデルのデプロイ (2) Production という名前の環境を作成します。 Deployment credentials には Snowflake への接続設定を入れていきます。
Test connection が 成功したら Save 今回のハンズオンではデプロイ時の Role は ACCOUNTADMIN を使用します ※ デフォルトの PC_DBT_ROLE だと権限が足りないため ※ 実運用の際はちゃんと権限設計しましょう 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 54 -
15. モデルのデプロイ (3) 作成した環境にデプロイジョブを作成します。 これがあるか確認 チェックを入れる 2025.02.04 第3回 Snowflake 中部ユーザー会
- dbt × Snowflakeハンズオン 55 -
15. モデルのデプロイ (4) 作成したデプロイジョブを実行します。 ビルド成功 2025.02.04 第3回 Snowflake 中部ユーザー会 -
dbt × Snowflakeハンズオン 56 -
15. モデルのデプロイ (5) dbt build が成功した場合、モデルとして記述した内容が Snowflake 側にテーブルとして 作成されていることがわかります。 2025.02.04
第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 57 -
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 凡例: -
16. Streamlit によるデータアプリ作成 (1) Streamlit アプリを作成します。 2025.02.04 第3回 Snowflake 中部ユーザー会
- dbt × Snowflakeハンズオン 59 -
16. Streamlit によるデータアプリ作成 (2) Python コードをコピペして Run します。 2025.02.04 第3回
Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 60 -
16. Streamlit によるデータアプリ作成 (3) dbt でビルドしたデータを Streamlit アプリで可視化することができました 2025.02.04 第3回
Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 61 -
やったこと • Snowflake アカウントと dbt Cloud アカウントを接続する • dbt プロジェクトを作成する
• モデルを作成して run してみる • materialized を切り換える • モデルやデータソースを分割する • モデルをテストする • モデルのドキュメントを生成する • モデルをビルドする • 生成されたテーブルのデータを Streamlit でアプリ化する ここまですべて通せたのであれば、あなたは以下のことができるようになったということです! おめでとうございます 2025.02.04 第3回 Snowflake 中部ユーザー会 - dbt × Snowflakeハンズオン 62