dbt の codegen で sources.yml や staging の model、schema.yml を自動生成する
dbtcodegen は各種ファイルを自動生成する macro を提供する公式の package。Best practice guides でおすすめされている。
dbt の Best practice guides におけるモデルのレイヤー分け - sambaiz-net
packages.yml に追加して dbt deps でインストールする。
packages:
- package: dbt-labs/codegen
version: 0.12.1
dbt run-operation で macro を実行できる。
generate_source
staging の model が参照する sources.yml を生成する。
$ dbt run-operation generate_source --args 'schema_name: dbttest'
...
sources:
- name: dbttest
tables:
- name: my_first_dbt_model
- name: my_second_dbt_model
generate_base_model
source を rename する staging model のベースを生成する。
$ dbt run-operation generate_base_model --args '{"source_name": "dbttest", "table_name": "my_first_dbt_model"}'
...
with source as (
select * from {{ source('dbttest', 'my_first_dbt_model') }}
),
renamed as (
select
id
from source
)
select * from renamed
generate_model_yaml
dbt run した model から schema.yml を生成する。
$ dbt run-operation generate_model_yaml --args '{"model_names": ["my_first_dbt_model", "my_second_dbt_model"]}'
...
models:
- name: my_first_dbt_model
description: ""
columns:
- name: id
data_type: int64
description: ""
- name: my_second_dbt_model
description: ""
columns:
- name: id
data_type: int64
description: ""
参考
dbtでmodelやsourceのベースとなるコードを自動で生成してくれるpackage「codegen」を試してみた #dbt | DevelopersIO