Snowflake & dbt Cloudハンズオン実践 #2: 『dbt Cloud IDE探索』 #snowflakeDB #dbt
アライアンス事業部 エンジニアグループ モダンデータスタック(MDS)チームの しんや です。
Snowflakeが展開しているサイト『Snowflake Quickstarts』では、Snowflake単体、またSnowflakeと他サービスとの連携について実戦形式で手を動かしながら学んでいけるコンテンツが多数公開されています。
その中の1つ『Accelerating Data Teams with Snowflake and dbt Cloud Hands On Lab(Snowflake と dbt Cloud ハンズオン ラボを使用してデータ チームを加速する)』は、dbt CloudとSnowflakeを連携させる形で、Snowflakeのデータを使ってdbt Cloudでデータ変換の処理を作り上げていく流れを学ぶことが出来る非常に参考になるコンテンツです。
当エントリ及び一連のエントリ群では、この一連の手順を実際に手を動かしながら進めた記録をまとめて行こうと思います。
第2弾の当エントリでは『dbt Cloud IDE探索』パートについて実践内容を紹介します。
・#1: Snowflake環境準備編 [Snowflake QuickStarts: Step01-04]
・#2: dbt Cloud IDE探索編 [Snowflake QuickStarts: Step05]
・#3: dbt Cloud 基本構造紹介編 [Snowflake QuickStarts: Step06]
・#4: dbt Cloud 実践編1(ソース設定&ステージングモデル作成) [Snowflake QuickStarts: Step07]
・#5: dbt Cloud 実践編2(シード&マテリアライゼーション) [Snowflake QuickStarts: Step08]
・#6: dbt Cloud 実践編3(マートモデルの作成) [Snowflake QuickStarts: Step09]
・#7: dbt Cloud 実践編4(テスト&ドキュメント) [Snowflake QuickStarts: Step10]
・#8: dbt Cloud 実践編5(デプロイ) [Snowflake QuickStarts: Step11]
・#9: Snowsightダッシュボード可視化編 [Snowflake QuickStarts: Step12]
目次
Step05. dbt Cloud IDEウォークスルー
前ステップまでの作業でdbt Cloudアカウントがセットアップされ、dbt Cloud画面上で作業が出来るようになりました。dbt CloudではIDE(統合開発環境)が機能として用意されており、設定やモデルの作成編集その他必要な作業をこの画面経由で行う形になります。実際に作業を進めつつ、途中解説や説明を入れながらdbt Cloud上でdbtの各種要素がどのように配置され、作用し、連携されて行くのかを見ていきます。
IDE(統合開発環境)の画面に遷移するには、dbt Cloudの画面左上にあるメニューから[Develop]を選択。
プロジェクトの初期化
場合によっては情報をロードするのに少々時間が掛かる場合がありますが、程なくして画面遷移が完了。一番最初の最初は何も要素が無いので、まずはdbtプロジェクトとしての初期化を行う必要があります。Git管理メニューのボタン表示が『initialize dbt project』となっているはずなのでこれを押下し、プロジェクトの初期化を行います。
初期化が終わると、左側のサイドバーに新しいフォルダ構造が表示されるはずです。ワークショップを進めていく中で、プロジェクトを構築していく上で重要なファイルやフォルダについて触れていきます。
作業内容のコミットと「マネージドリポジトリ」の扱い
ここまでの作業を一旦区切りとしてコミットしておきます。Git管理メニューの[Commit and sync]を押下。
任意のコミットメッセージを記載の上[Commit]押下。
ここで作業をコミットする事で、作業内容がPartner Connectのサインアップ時に作成した管理用のgitリポジトリ(dbt Cloudで用意されている『マネージドリポジトリ』に保存されます。この最初のコミットが、メインブランチに直接コミットする唯一のコミットです。ここから先は、すべての作業を開発用ブランチで行うことになります。これにより、開発作業を本番コードから切り離すことができます。
ちなみにこのエントリ(シリーズ)で連携するGitリポジトリは流れの関係上『dbt Cloudのマネージドリポジトリ』で進めていますが、運用環境=本番環境での管理gitリポジトリはマネージドリポジトリでは無く、GitHubやGitLabなどのサードパーティのGitリポジトリを使うようにしてください。dbt Cloudのマネージドリポジトリでは、推奨されるバージョン管理のベストプラクティスの一部である「プルリクエスト」などのgit機能は使用できなくなるから、というのが理由です。
dbt Cloud IDEを構成するパーツ
本格的な作業に入る前に、dbt Cloud IDEの画面を構成するパーツそれぞれについて見ていきます。
IDEはテキストエディタ、SQLランナー、そしてgitバージョン管理機能を持つCLIを1つのパッケージに統合したものです。これにより、SQLファイルの編集、SQLランナーによる結果のプレビュー(Jinjaも動作)、コマンドラインでのモデル構築に集中することができ、異なるアプリケーション間を移動する必要がなくなります。
通常gitに関する操作はコマンド実行が主ですが、dbt Cloudのgitワークフローでは、gitの初心者もエキスパートも、2 回クリックするだけで、すべての作業を簡単にバージョン管理できます。
最初のモデル実行
dbtプロジェクトには、プロジェクト初期化の時点でmodels/examples
フォルダに2つのサンプルモデル(my_first_dbt_model.sql
, my_second_dbt_model.sql
)が含まれており、それを使ってコマンドラインでdbtのモデル実行をすることが出来ます。
画面下のコマンドラインにdbt runと入力し、キーボードのEnterを押下。実行バーが展開し実行結果が表示され、正常に実行が完了したことが確認できます。
実行結果では、dbt がコンパイルして実行のために Snowflake に送信したコードを確認できます。
この実行のログを表示するには、モデルタブのいずれかをクリックし、詳細をクリックします。少し下にスクロールすると、コンパイルされたコードと、dbtがSnowflakeとどのようにやり取りしているかを見ることができます。
モデルが実行された結果をSnowflake側の環境で確認してみます。先程参照したデータベース:PC_DBT_DB
の中身を更新してみると、以下のようにMY_FIRST_DBT_MODEL
とMY_SECOND_DBT_MODEL
がテーブルとして生成されていることが確認出来ています。
そしてこのタイミングで、今後dbtプロジェクトで使用する新しいウェアハウスを別途新規作成しておきます。Snowflakeワークシート内でそれぞれ実行。
use role accountadmin; create warehouse pc_dbt_wh_large with warehouse_size = large; grant all on warehouse pc_dbt_wh_large to role pc_dbt_role;
まとめ
という訳で、Snowflake QuickStarts『Accelerating Data Teams with Snowflake and dbt Cloud Hands On Lab』実践第2弾、dbt Cloud IDE探索編でした。
次エントリ(第3弾)ではdbtの基本構造に関するパートを進めていきます。