Snowflake & dbt Cloudハンズオン実践 #1: 『Snowflake環境準備』 #snowflakeDB #dbt

2024.01.30

アライアンス事業部 エンジニアグループ モダンデータスタック(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でデータ変換の処理を作り上げていく流れを学ぶことが出来る非常に参考になるコンテンツです。

当エントリ及び一連のエントリ群では、この一連の手順を実際に手を動かしながら進めた記録をまとめて行こうと思います。

第1弾の当エントリでは『Snowflake環境準備』パートについて実践内容を紹介します。

一連の内容を1本にまとめようとするとめちゃくちゃボリュームが大きくなる内容でしたので、以下の形でそれぞれ分けて紹介していこうと思います。
#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]

目次

 

Step01. 概要

QuickStartsコンテンツ全体の概要に関する情報は以下の通り。

 

実践を進めるのに必要なもの

  • ACCOUNTADMIN アクセス権を持つトライアル Snowflake アカウント
  • dbt Cloudアカウント

ドキュメントでは「トライアル」アカウントとなっていましたが、今回はSnowflake/dbtいずれも非トライアルアカウントで進めました(進めることが出来ました)。

 

学べる内容

  • dbtとSnowflakeを使用したスケーラブルなデータ変換パイプラインの構築方法
  • dbtの主要なテスト機能を組み込むことで、利害関係者とデータの信頼関係を確立する方法
  • dbtワークフローでSnowflakeの計算機能を拡張する方法
  • Snowflakeで軽量なチャートとビジュアライゼーションを構築する方法

 

構築するもの

  • dbtとSnowflakeを活用し、データ品質テストや環境間でのコード推進などのベストプラクティスを活用した小売データ分析パイプラインのセット

 

Step02. アーキテクチャとユースケースの概要

Snowflakeアカウントに同梱されている「TPC-Hデータセット」を使い、生の小売データを可視化可能な受注モデルに変換する流れを実演します。変換する部分にdbtの各種機能を使うイメージです。終了時には、テストとドキュメンテーション、専用の開発環境と本番環境、dbt git ワークフローを備えた、完全に機能するdbtプロジェクトが出来上がっている形です。

dbtを使って作成するモデルの系譜(リネージ)として、以下のようなものが出来上がる予定です。

 

Step03. 利用するSnowflakeデータの確認

元のドキュメントではSnowflakeトライアルアカウントの取得に付いて言及されていますが今回は通常アカウントを用いて行うので割愛。ACCOUNTADMINが利用出来るアカウントでSnowflake環境にログインしておきます。

ワークショップで使用するデータセットは、Snowflake環境に予め標準装備されているものを使います。[ワークシート]を選択し、画面右上からSQLワークシートを起動。

データベース一覧の中にSNOWFLAKE_SAMPLE_DATAというデータベースを確認することが出来るかと思います。dbtではここにあるテーブルを使います。

試しに対象テーブルを以下のSQLでクエリしてみます。(対象テーブル、件数的には15万件あるので件数を絞る形で...)

select *
    from snowflake_sample_data.tpch_sf1.orders
    limit 100;

結果が表示されればOK。

 

Step04. Partner Connect経由でdbt Cloudを起動・連携

今回の手順では個別にdbtプロジェクトを用意するのでは無く、Snowflake Partner Connect を使用して dbt Cloud アカウントとプロジェクトをセットアップします。Partner Connectを使用すると、Snowflake 接続、管理対象リポジトリ、環境、認証情報を含む完全な dbtアカウントを数回クリックするだけで作成出来ちゃいます。お試し環境でこういう風にサクッと進められるのは素敵ですね。

Snowflakeの画面にて[管理者]→[Partner Connect]を選択。検索窓で[dbt]と入力し、dbtのデータ統合を選択します。なおこの際にログインユーザーのロールがACCOUNTADMINであることを確認しておいてください。

Snowflakeサービス側で諸々自動設定してくれて、以下のような形で「これで良いか?」というポップアップが表示されます。ポップアップ下部の「オプション付与」で、上記の環境が対象のDBにアクセス出来るようにSNOWFLAKE_SAMPLE_DATAを追加して[接続]を押下。dbt Cloud環境専用の dbtユーザー、データベース、ウェアハウス、ロールが作成されます。

パートナーアカウントが作成された旨を示すポップアップが表示されたら、「アクティブ化」を選択。

前述の通り今回はトライアル環境での進行ではないため元ドキュメントとは若干挙動が異なりましたが、dbt Cloudの画面に遷移し以下のような形で進めることが出来ました。(※dbt Cloud環境には「Partner Connect Trial」という名前でプロジェクトが出来ていました)

これでdbt環境で作業を進める準備が整いました。

 

まとめ

という訳で、Snowflake QuickStarts『Accelerating Data Teams with Snowflake and dbt Cloud Hands On Lab』実践第1弾、Snowflake環境準備編でした。

次エントリ(第2弾)ではdbt Cloud IDEに関するパートを進めていきます。