📘
【dbt Docs】Building a dbt Project - Models - Using variables
Using variables
変数は、モデルやフック、マクロで使うことができ、{{ var('...') }}
で使用できる。
2つの方法で定義できて
dbt_project.yml
- コマンドライン
Defining variables in dbt_project.yml
dbt_project.yml
で、vars
で定義することができる。グローバル変数として定義することも、特定のパッケージ内のみで使うスコープ変数にも定義できる。
dbt_project.yml
name: my_dbt_project
version: 1.0.0
config-version: 2
vars:
# The `start_date` variable will be accessible in all resources
start_date: '2016-06-01'
# The `platforms` variable is only accessible to resources in the my_dbt_project project
my_dbt_project:
platforms: ['web', 'mobile']
# The `app_ids` variable is only accessible to resources in the snowplow package
snowplow:
app_ids: ['marketing', 'app', 'landing-page']
models:
...
Defining variables on the command line
dbt_project.yml
では、めったに変更されない変数を定義するのに最適。
日付範囲など頻繁に変更する変数に関しては、コマンドラインで設定(上書き)するのが良い
$ dbt run --vars '{"key": "value"}'
$ dbt run --vars '{"key": "value", "date": 20180101}'
$ dbt run --vars '{key: value, date: 20180101}'
$ dbt run --vars '{"key": "value", "date": 20180101}'
$ dbt run --vars '{key: value, date: 20180101}'
Variable precedence
--vars
コマンドライン引数で定義された変数は、dbt_project.yml
ファイルで定義された変数を上書きします。それらはグローバルスコープであり、プロジェクトに含まれるすべてのパッケージにアクセスできます。
変数宣言の優先順位は次のとおりです(優先順位が最も高いものが最初)。
- コマンドラインで。を使用して定義された変数--vars。
- dbt_project.ymlファイル内のパッケージスコープの変数宣言
- dbt_project.ymlファイル内のグローバル変数宣言。
- 変数のデフォルト引数(提供されている場合)。
これらの4つの場所をチェックした後、dbtが変数の定義を見つけることができない場合、コンパイルエラーが発生します。
Discussion