0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【dbt入門】基本的なコマンドを理解する_何ができる?(1/4)

Last updated at Posted at 2025-01-20

こんにちは、まつきです。
dbtは、データアナリストがExtract-Load-Transform(ELT)パイプラインの「変換(Transform)」ステップを実行できるようにするツールです。

この記事では
dbt Labs社より提供されているGitHubリポジトリ「jaffle-shop」を利用してdbtでどんなことができるのか実際に見ていきたいと思います。

【目次】

  1. 事前準備
    1-1. dbtアカウント作成
    1-2. GitHub利用リポジトリの確認
    1-3. GitHubリポジトリの作成
    1-4. BigQuery環境の設定
  2. 環境設定
    2-1. dbt Cloudで新規プロジェクトを作成
    2-2. BiqQueryへの接続設定
    2-3. リポジトリの設定
    2-4. 本番環境の設定
  3. dbt でコマンド実行
    3-1. dbt seed:ソースデータの作成(BigQuery)
    3-2. dbt run:モデルの実行
    3-3. dbt test:テストの実行
    3-4. dbt build:プロジェクトの実行
    3-5. dbt docs generate:ドキュメントを生成

1. 事前準備

1-1. dbtアカウント作成

まずはdbtのアカウントを作成しましょう。
https://www.getdbt.com/product/dbt-cloud

[Try dbt Cloud free]ボタンでも[Create a free account]ボタンからでも構いませんので、
いずれかをクリックします。

image.png

メールアドレス等の情報を入力し、[Create my account]を押下します。

image.png

入力したメールアドレス宛にdbtからメールが届きますので、[Verify your email address]をクリックします。

image.png

こちらでアカウント作成は完了となります。

image.png

1-2. Github利用リポジトリの確認

今回利用するGitHubリポジトリのテンプレートを簡単に確認しておきましょう。
https://github.com/dbt-labs/jaffle-shop

1-3. GitHubリポジトリの作成

前段で確認したリポジトリをコピーして、今回利用するGitHubリポジトリを作成します。
今回はGitHubアカウントを持っている前提で記載します。

[Use this template]-[Create a new repository]をクリックします。

image.png

リポジトリ名は任意なので今回は「jaffle_shop_demo_bq」としました。

image.png

リポジトリの作成が完了しました。
image.png

1-4. BigQuery環境の設定

利用にあたってBigQuryのデータセット作成とサービスアカウント設定を実施します。
今回はGoogle CloudのProjectは既に存在する前提で記載します。
まずはBigQuryのデータセット作成を実施します。
GCPのBigQuery Studioから対象のプロジェクト右の「・・・」から[データセットを作成]をクリックします。

image.png

データセットIDは

jaffle_shop_demo_bq_dev
jaffle_shop_demo_bq_prod

の二つを作成します。
image.png
※画像はdev分のみです。

作成できました。

image.png

次にサービスアカウントの設定です。
利用するプロジェクトの[IAM & Admin] - [Service Accounts]をクリックします。

image.png

[+ CREATE SERVICE ACCOUNT]をクリックします。

image.png

Service account IDを入力します。
今回は「dbt-service」としました。

image.png

ロールを付与します。
今回は「Owner」としましたがOwner権限は非常に強いため、留意が必要です。
通常接続には「BigQuery Job User」と「BigQuery Data Editor roles」があれば問題ないかと思います。

image.png

作成されたので、サービスアカウントをクリックします。

image.png

dbtとの接続設定時に利用するため、サービスアカウントのプライベートキーを作成し、JSON形式でダウンロードします。

image.png

image.png

2. 環境構築

2-1. dbt Cloudで新規プロジェクトを作成

dbt Cloudで新規プロジェクトを作成します。
[Account home]から[New project]を選択します。

image.png

Project name:Matsuki_jaffle_shop_demo

を入力して[Continue]を押下します。

image.png

2-2. BiqQueryへの接続設定

BigQueryへの接続設定を作成します。
先ほど設定したBigQueryを使うため、[+ Add new connection]をクリックします。

image.png

[+ new connection]をクリックします。

image.png

BigQueryを選択し、Connection nameを入力したら、[Upload a Serive Account JSON file]をクリックして
先ほど事前準備の際にダウンロードしたサービスアカウントのJSONファイルをアップロードして[Save]します。

image.png

dbtのプロジェクト作成画面に戻り、作成した接続設定を選択します。
Datasetは作成したものを利用するため、「jaffle_shop_demo_bq_dev」としました。
dbt Cloudのプロジェクトを作成する際、デフォルトで開発環境扱いとなるため、devの方を指定しています。
本番環境の設定については後述します。
[Test Connection]をクリックします。

image.png

完了したことを確認して[Save]をクリックします。

image.png

2-3. リポジトリの設定

こちらは一度スキップしてください。

image.png

左側メニューの自分のアカウントから、[Your profile]を選択します。

image.png

GitHubの[Link]をクリックします。

image.png

[Authorize dbt Cloudをクリックします。

image.png

[Configure GitHub Integration]をクリックします。

image.png

[Install]をクリックします。

image.png

プロジェクト画面の右上[Settings]をクリックします。

image.png

[Configure Repository]をクリックします。

image.png

[GitHub]-[jaffle_shop_demo_bq]を選択します。

image.png

Repositoryが設定されればOKです!

image.png

2-4. 本番環境の設定

続いて本番環境の設定を行います。
dbt Cloudではデフォルトで作成したプロジェクトはDEV(開発)環境の扱いとなります。

image.png

image.png

PROD環境を設定するために[Create Environment]をクリックします。
Environment nameを入力し、Connectionを選択してDatasetを入力します。
この時入力するDatasetは事前に作成した

jaffle_shop_demo_bq_prod

です。
image.png

[Test Connection]が問題ないことを確認しておきます。
image.png

念のため、Your rofileからデフォルトのデータセットを確認しておきましょう。
image.png

Credentialsから先ほど作成したプロジェクトを選択します。
image.png

Development credentialsのDatasetが「jaffle_shop_demo_bq_dev」になっていることを確認します。
※もしなっていない場合、Editで変更してください。

image.png

3. dbt でコマンド実行

ローカル環境になりますが、「Chapter 03 とりあえず、dbtを動かしてみる」以降でjaffle-shopの各モデルと処理内容に付いて丁寧に説明されていますので参照してください。
https://zenn.dev/hananah/books/dd9f6f4e82b5d7/viewer/513587

3-1. dbt seed:ソースデータの作成(BigQuery)

dbt seedコマンドを使って、jaffle-shopの架空データを生成します。
まずは左側メニューバーの[Develop]-[Cloud IDE]を選択し、File explorerからdbt_project.ymlを選択して編集しましょう。
dbt_project.ymlはdbt がどのディレクトリを参照するのかや、どのディレクトリへコンパイルした SQL ファイルをアウトプットするのか、といった設定を記述するファイルです。

image.png

15行目に

seed-paths: ["seeds"]

とありますので、これを

seed-paths: ["seeds", "jaffle-data"]

とします。
これでプロジェクトのデータの取り込み元が指定できました。
次に、27~29行目に

seeds:
  jaffle_shop:
    +schema: raw

とありますので、これを

seeds:
  jaffle_shop:
    +schema: jaffle_shop_demo_bq_dev

とします。
これでseedコマンド実行時のデータの出力先を作成したデータセット「jaffle_shop_demo_bq_dev」が指定できました。

dbt seedコマンドを入力し、Enterキー押下で実行します。jaffle-dataフォルダ配下のCSVファイルを読み込み、ファイル名をテーブル名としてBigQueryの開発用のDataset「jaffle_shop_demo_bq_dev」に生成されます。

image.png

logを確認する事で、BigQueryのDataset名が確認できます。

image.png

BigQuery上でも確認できます。
※devで実行されているため、prodの方には作成されていません。

image.png

データのロードが終了後、後続のコマンド実行時の妨げとなるため、先ほど設定したseed-pathの行と「jaffle-data」フォルダは削除した方が良いです。

image.png

3-2. dbt run:モデルの実行

modelsディレクトリに配置したSQLモデルに従ってデータ加工処理を実行するには、dbt runコマンドを使います。
始めにステージング層が実行され、そのあとにデータマート層が実行されます。
(dbtによってDAGや冪等性を考慮され、実行されます)

image.png

BigQuery上でも確認できます。

image.png

dbt_project.ymlの設定通り、ステージング層はViewで、マート層はTableで作成されます。

image.png

3-3. dbt test:テストの実行

dbt testコマンドでテストの実行を行うことが出来ます。
テストによって品質の低いデータの混入を検知してアラートしたり、データの品質を保ったりするのに使います。
また他にも開発中のデータの前提条件などを明示的に定義するためにも利用できます。

image.png

3-4. dbt build:プロジェクトの実行

ここまで3つのコマンドを実行しましたが、それらのコマンドを一括で実行可能なのがdbt buildコマンドです。
都度個別のコマンドの実行が不要なことや、実行順序をdbt側でやってくれるので楽ですね。

image.png

3-5. dbt docs generate:ドキュメントを生成

dbt docs generateコマンドで作成したプロジェクトのドキュメントを生成することが可能です。

image.png

dbt docs generate実行後、画面をリフレッシュするとdocs viewアイコンが有効になるようです。

image.png

例えば、customersテーブルのドキュメントを表示してみます。

image.png

右下のアイコンで linege(リネージュ)が表示されます。

image.png

最後に

dbt Cloudである程度の基本的な機能を検証してみました。
いかがでしたでしょうか。
次回は本番環境の設定についてもう少し触れていきたいと思います。
今後も検証した内容についてまとめて発信していきたいと思いますので、よろしくお願いいたします。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?