3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「dbtで始めるデータパイプライン構築〜入門から実践〜」をSnowflakeでやってみる

Last updated at Posted at 2023-08-07

dbtで始めるデータパイプライン構築~入門から実践~」というdbtの入門者向けのチュートリアル記事があります。

このチュートリアル記事はdbt CloudとBigQueryを用いたハンズオンで構成されていますが、私がBigQueryをまったく知らないので、Snowflakeに置き換えながら勉強しています。
本記事では「dbtで始めるデータパイプライン構築~入門から実践~」について、2021年12月からの差分と、BigQueryをSnowflakeに置き換えたときの差分をメモしています。

英語にはなってしまいますが、dbtの公式ドキュメントにもQuickstart for dbt Cloud and Snowflakeがあるので、そちらで勉強するのもいいかも。

Chapter 01 dbtとは?

データエンジニアの見習いとしてお仕事を始めてから読むとありがたさがよく分かる。
「dbtはデータレイクやデータウェアハウスにあるデータを変換して書き戻すんだよ!」という説明を聞いて、以前は「なんでそんな無駄なことを…?」と思っていたんですが、実際にはdbtがあってもなくても一部分を切り出したテーブルを作ったり全体を綺麗に整えたテーブルを作ったりしないといけないんですよね。
だったら、デファクトスタンダードなツールを使って、IaC(Infrastructure as Code)的にやるのがベターですよね。

「Jinjaを使った高度なモデリング処理(後ほど公開)」で詳しくご紹介します。

こちらは既にChapter 06 Jinjaを使った高度なモデリングとして公開済みになっていました。

Chapter 02 dbt Cloudのセットアップ

このチャプターではdbt CloudのセットアップとBigQueryへの接続を解説しています。
私の場合はBigQueryではなくSnowflakeに接続させたいので、ちょこちょこチュートリアル記事と異なるところがあります。

このチャプターでやっていることは以下のようなことです。

  • BigQueryのサービスアカウント(ユーザ)作成
  • BigQueryの鍵の発行
  • dbt Cloudのアカウント登録
  • dbt Cloudのプロジェクト作成とBigQueryへの接続
  • dbt CloudとGitHubの連携

dbt CloudとSnowflakeを接続する方法については、以下のドキュメントに記載があります。
参考:Connect Snowflake | dbt Developer Hub

また、Snowflakeのキーペア認証については、以下のドキュメントに記載があります。
参考:キーペア認証およびキーペアローテーション | Snowflake Documentation

上記のドキュメントをそれぞれ参照しながら設定していきましょう。

以降、後でまとめます。

Chapter 03 チュートリアル:モデル開発の基本

このチャプターでは簡単なモデルを書いて実行するまでを解説しています。

Developに移動
画面左上のハンバーガーメニューを押し、「Develop」を選択してください

UIが更新されたらしく、「Develop」はハンバーガーメニューからアクセスではなくなっています。
常に見えるところに直接置かれているので迷うことはなさそう。

image.png

以下の3ファイルをそれぞれ「data」フォルダの中に格納をしていきます。

文章と画像がちぐはぐなのですが、現在のバージョンでは「seeds」配下がデフォルトのようです。
それ以外のディレクトリからシードの取り込みを行う場合はdbt_project.ymlの中のseed-paths: ["seeds"]を変更すればいいとのことです。
参考:Can I store my seeds in a directory other than the seeds directory in my project?

ここまで進めた時点のディレクトリ構造は以下の通り。

image.png

customersテーブルで処理するデータを別のモデルから参照するようにする

の直下にあるサンプルコードはmodels/costomers.sqlを書き換える想定になっています。
解説されている通りなのですが、最初にmodels/costomers.sqlに書いた内容をref機能を使うことで複数ファイルに分割してるということですね。
ref機能を使うことで、複数ファイルに分割しただけではなく、依存関係も明確になった、と。

Chapter 04 チュートリアル:テストとドキュメント

このチャプターでは簡単なテストを行ってドキュメントを生成するまでを解説しています。

dbt testするとエラーが…

image.png

これはdbt Cloudのプロジェクト作成のときに生成されるサンプルのうち、モデルexample/my_first_dbt_model.sqlと、それに対するテストexample/schema.ymlのせいですね。

example/my_first_dbt_model.sqlでは値が1の行と値がnullの行を出力しています。

my_first_dbt_model.sql
with source_data as (

    select 1 as id
    union all
    select null as id

)

以下はSnowflakeに実際にロードされた内容。

image.png

それに対してexample/schema.ymlではnot_nullのテストを実行しているので、必ずエラーが出るようになっている…というサンプルのようです。
これ以降、「example」配下のファイルを使うことはなさそうなので、削除してもよさそう。

「example」配下のファイルを削除して無事にテストが成功。

image.png

続いての「モデルのドキュメントを作る」について、YAMLファイルは具体的に何が変わっているかというと、以下の通りです。

image.png

YAMLファイルにdescriptpionを書くことで、dbt docs generateしてモデルのドキュメントを作れるようになる、というチュートリアルでした!

画面左上に「view docs」というリンクが有効になり、そこからドキュメントが見れるようになります

2023年8月時点ではここにあるアイコンでした。

image.png

Chapter 05以降

後日追記予定。
のんびりと勉強していきます。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?