← コースに戻る
未ログインのため、この講座の進捗は記録されません。ログインすると記録が残るようになります。
sourceとref()
dbtでは、モデル同士や外部データを参照する際にsource()とref()という2つの関数を使う。
- source(): Extract & Loadツールによってウェアハウスに読み込まれた、生データのテーブルを参照する。.ymlファイルで事前に宣言しておく必要がある
sources:
- name: jaffle_shop
tables:
- name: orders
select * from {{ source('jaffle_shop', 'orders') }}
- ref(): dbtで管理されている他のモデルを参照する
select * from {{ ref('stg_orders') }}
source()やref()を使うと、dbtはモデル間・モデルとソース間の依存関係を自動的に認識し、DAG(有向非巡回グラフ)として管理する。これにより、モデルの実行順序が自動的に決まり、dbt run --select model_name+のような依存先を含む実行や、リネージ(データの系譜)の可視化が可能になる。テーブル名を直接SQLに書かず、必ずsource()・ref()を経由することが、dbtプロジェクトの基本ルールとなる。