「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」はハンバーガーメニューからアクセスではなくなっています。
常に見えるところに直接置かれているので迷うことはなさそう。
以下の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?
ここまで進めた時点のディレクトリ構造は以下の通り。
customersテーブルで処理するデータを別のモデルから参照するようにする
の直下にあるサンプルコードはmodels/costomers.sql
を書き換える想定になっています。
解説されている通りなのですが、最初にmodels/costomers.sql
に書いた内容をref機能を使うことで複数ファイルに分割してるということですね。
ref機能を使うことで、複数ファイルに分割しただけではなく、依存関係も明確になった、と。
Chapter 04 チュートリアル:テストとドキュメント
このチャプターでは簡単なテストを行ってドキュメントを生成するまでを解説しています。
dbt test
するとエラーが…
これはdbt Cloudのプロジェクト作成のときに生成されるサンプルのうち、モデルexample/my_first_dbt_model.sql
と、それに対するテストexample/schema.yml
のせいですね。
example/my_first_dbt_model.sql
では値が1の行と値がnullの行を出力しています。
with source_data as (
select 1 as id
union all
select null as id
)
以下はSnowflakeに実際にロードされた内容。
それに対してexample/schema.yml
ではnot_null
のテストを実行しているので、必ずエラーが出るようになっている…というサンプルのようです。
これ以降、「example」配下のファイルを使うことはなさそうなので、削除してもよさそう。
「example」配下のファイルを削除して無事にテストが成功。
続いての「モデルのドキュメントを作る」について、YAMLファイルは具体的に何が変わっているかというと、以下の通りです。
YAMLファイルにdescriptpionを書くことで、dbt docs generate
してモデルのドキュメントを作れるようになる、というチュートリアルでした!
画面左上に「view docs」というリンクが有効になり、そこからドキュメントが見れるようになります
2023年8月時点ではここにあるアイコンでした。
Chapter 05以降
後日追記予定。
のんびりと勉強していきます。