「dbt + Snowflake を組み合わせてデータ変換を実装してみた」というタイトルで Classmethod Odyssey ONLINE テック企業編に登壇しました #cm_odyssey #devio2024
こんにちは!
データ事業本部 インテグレーション部 機械学習チームのよしななです。
Classmethod Odyssey ONLINE テック企業編 にて登壇いたしましたのでその資料を共有いたします。ご参加いただいた皆様、ありがとうございました!
登壇資料
スライドの概要
全体
dbt と Snowflake の概要、dbt と他の ELT サービスを比較してメリット・デメリットに感じたこと、dbt と Snowflake を接続した手順と詰まったポイントについて、本セッションでお話しました。
メリット・デメリットについて
dbt と、私が過去にプロジェクトで使用したことのある Azure Synapse Analytics / Azure Data Factory を比較し、メリットとデメリットについてお話しました。
それぞれのサービスについて、以下の通り特徴があります。
dbt
- ELT プロセスの T を担うことが多いサービス
- データウェアハウスに対する処理を定義し、制御する
メリット1:jinja テンプレートの ref や macros が使用可能
jinja テンプレートの ref を使用し、他の dbt モデルを参照することが可能
macros を使用し、マクロとして登録した SQL の処理を使いまわすことが可能
dbt プロジェクトフォルダ内のmacros
フォルダにマクロ処理を記述した .sql ファイルを配置し、dbt モデル内でマクロ処理を呼び出す jinja テンプレートを記述すると、マクロ処理が実行される
メリット2:SQL と .yml ファイルでテストを定義し、実行することが可能
dbt モデルが生成するデータに対して、id カラムに null が含まれないでほしいという要件がある場合、以下のようにwhere id is null
で null があるか条件をつける SQL を書くことにより、null が0件ならテスト成功、null が含まれる場合はテストが失敗し、エラーを返すといった処理が可能
.yml ファイルにテストを定義することが可能
実行したいテスト名を記述した.ymlファイルを作成し、columns:ブロックの配下でカラム名を指定
tests:ブロックで実行したいテスト名を指定し、dbt test
を実行することでテストが可能
メリット3:ドキュメント生成機能の実行
dbt docs generate
でjson ファイルを出力し、dbt docs serve
を実行してドキュメント表示用サーバを立ち上げることによって、ブラウザが起動しドキュメントが表示される
Azure Synapse Analytics
- ELT プロセスの全範囲をカバーしているサービス
- データウェアハウスの作成~データの移動、ビックデータの分析までを担う
- データウェアハウス構築~データ加工・変換まで一貫して行えるのがメリット
Azure Data Factory
- ELT プロセスの LとTに対応している
- L 部分に関して、様々なデータソースに対応している
- Azure のデータストレージ以外にも、Amazon RDS,Amazon Redshift などの AWS サービスや Google BigQuery などに対応
- L 部分に関して、様々なデータソースに対応している
メリット・デメリットのまとめ
メリットとデメリットをまとめた表は以下です。
総じて、dbt は SQL に慣れている方なら使いやすいサービスだと思います。
SQL に対して抵抗がない方に向けて、今回は dbt と Snowflake を使用してデータ変換システムを構築していきます。
dbt + Snowflake データ変換システム構築
最後に、dbt と Snowflake を実際に構築してみた手順と、詰まったポイントについてお話しました。
以下の構成図をもとに、実際に手を動かして構築しました。
詰まったポイントについては、以下の2点についてお話しました。
作成したリソースにはgrant all to ~
を実行し、ロールの権限を付与する必要があることについて説明しました。
dbt init 時に入力する項目のひとつである、Snowflake 識別子がどこにあるのか、コンソール上からの取得方法について説明しました。
コンソール画面左下のアカウント名部分 → Account → 現在開いているワークスペース名を選択 にカーソルを合わせると小ウィンドウが表示されます。
その中のlocator
が Snowflake 識別子になります。
スライドの中で紹介したリンク
スライド内で紹介したリンクは以下となります。
dbt 概要:
https://classmethod.jp/partner/dbt/
Snowflake 概要:
https://www.Snowflake.com/ja/data-cloud/platform/
Azure Synapse Analytics 概要:
https://learn.microsoft.com/ja-jp/azure/synapse-analytics/overview-what-is
Azure Data Factory 概要:
https://learn.microsoft.com/ja-jp/azure/data-factory/introduction
終わりに
今回は、dbt の概要、メリットデメリットについて、dbt と Snowflake の接続手順など dbt を使用する上で基礎的な内容についてセッション内で発表させていただきました。
今後も dbt について本ブログで発信できればと思います。
改めて、Classmethod Odyssey ONLINE テック企業編 に参加してくださった皆様、本ブログを読んでくださった皆様、ありがとうございました!