0
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】FROM句でソースデータを指定する場合はsource関数を使うと便利

Last updated at Posted at 2023-03-05

今回の課題

dbtについて勉強をしていて、source関数というものを見つけ、
詳細を理解してみることにした。

sources機能とは

dbtの「DWHにロードされているローデータを」sourcesとして定義することができる機能。
基本的にFROM句にDWH内のローデータを記述する場合は、source関数を使用した方が良さそう。

※source機能を使用すると下記のような利点がある

  • リネージにソースデータの情報も追加される。
    source関数でモデルからソースを参照すると、リネージやドキュメントにも、どれがソースデータなのか反映されるようになる。
  • メンテナンス性が上がる。
    モデルがsourceを使わずにFROM句にテーブル名が書いてしまっていると、開発中にデータの問題が発生した場合に、どこから来たデータか分からず、デバッグの難易度が上ってしまう。

sourcesの定義方法

modelディレクトリ下のYAMLファイルを下記のように定義する。
これによって、dbt内でsourcesを定義することができる。

sources:
  - name: [データセット名]
    databases: [BigQueryで言うところのプロジェクト名, Snowflakeで言うところのDatabase名]
    tables:
      - name: [テーブル名1]
      - name: [テーブル名2]

定義したsourcesの使い方

modelディレクトリ下の.sqlファイルに下記のように記述する。

select * from {{ source('[データセット名]', '[テーブル名]') }}

上記の.sqlファイルをdbt runなどで実行すると、下記のようにコンパイルされる。

select * from `[BigQueryのプロジェクト名]`.`[データセット名]`.`[テーブル名]`

以上のようなかたちで、source機能を使用することができた。

ちなみに、modelと同様にsourcesでもテストを実施したり、ドキュメントの自動生成を実施することができるようだった。

まとめ

dbtでFROM句でソースデータを指定する場合は、
source関数を使えばdbtのデータリネージにソースデータが反映されるのでデータのデバッグなどの時に便利。

参考記事

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