データマネジメントの学校
← コースに戻る

未ログインのため、この講座の進捗は記録されません。ログインすると記録が残るようになります。

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プロジェクトの基本ルールとなる。