group
group (그룹)
group 설정은 리소스에 그룹을 할당하는 선택적 설정이에요. 리소스가 그룹에 묶이면 dbt는 같은 그룹 안의 private 모델만 참조할 수 있게 해줘요. 빠르게 변하거나 실험적이거나 그룹/팀 내부용 모델을 다른 그룹이 참조하지 못하게 막는 데 유용해요.
출처: dbt 공식 문서
본문
모델
dbt_project.yml
models:
<resource-path>:
+group: GROUP_NAME
models/schema.yml
models:
- name: MODEL_NAME
config:
group: GROUP # changed to config in v1.10
models/
{{ config(
group='GROUP_NAME'
) }}
select ...
시드
dbt_project.yml
seeds:
<resource-path>:
+group: GROUP_NAME
seeds/properties.yml
seeds:
- name: [SEED_NAME]
config:
group: GROUP_NAME # changed to config in v1.10
스냅샷
dbt_project.yml
snapshots:
<resource-path>:
+group: GROUP_NAME
(dbt v1.9 이상에 적용돼요.)
snapshots/properties.yml
snapshots:
- name: snapshot_name
config:
group: GROUP_NAME
snapshots/
{% snapshot snapshot_name %}
{{ config(
group='GROUP_NAME'
) }}
select ...
{% endsnapshot %}
테스트
dbt_project.yml
data_tests:
<resource-path>:
+group: GROUP_NAME
tests/properties.yml
<resource_type>:
- name: <resource_name>
data_tests:
- <test_name>:
config:
group: GROUP_NAME
tests/
{% test <testname>() %}
{{ config(
group='GROUP_NAME'
) }}
select ...
{% endtest %}
tests/
{{ config(
group='GROUP_NAME'
) }}
Analyses
analyses/
analyses:
- name: ANALYSIS_NAME
config:
group: GROUP_NAME # changed to config in v1.10
Metrics
dbt_project.yml
metrics:
<resource-path>:
+group: GROUP_NAME
models/metrics.yml
metrics:
- name: [METRIC_NAME]
config:
group: GROUP_NAME
Semantic models
dbt_project.yml
semantic-models:
<resource-path>:
+group: GROUP_NAME
(dbt v1.12 이상에 적용돼요.)
models/file_name.yml
models:
- name: model_name
semantic_model:
enabled: true
group: group_name
Saved queries
dbt_project.yml
saved-queries:
<resource-path>:
+group: GROUP_NAME
models/semantic_models.yml
saved_queries:
- name: SAVED_QUERY_NAME
config:
group: GROUP_NAME
하위 호환성을 위해 group은 최상위 키로도 지원되지만, config 상속 기능은 없어요.
정의
리소스에 그룹을 할당하는 선택적 설정이에요. 리소스가 그룹에 묶이면 dbt는 같은 그룹 안의 private 모델을 참조할 수 있게 해줘요.
그룹 간 리소스의 참조 접근에 대한 자세한 내용은 모델 접근을 참고해요.
예시
'marketing' 그룹 모델이 private 'finance' 그룹 모델을 참조하지 못하게 하기
빠르게 변하거나 실험적이거나 그룹/팀 내부용인 모델 위에 다른 그룹이 쌓지 못하게 하고 싶다면 유용해요.
models/schema.yml
models:
- name: finance_model
config:
group: finance # changed to config in v1.10
access: private # changed to config in v1.10
- name: marketing_model
config:
group: marketing # changed to config in v1.10
models/marketing_model.sql
select * from {{ ref('finance_model') }}
$ dbt run -s marketing_model
...
dbt.exceptions.DbtReferenceError: Parsing Error
Node model.jaffle_shop.marketing_model attempted to reference node model.jaffle_shop.finance_model,
which is not allowed because the referenced node is private to the finance group.
더 알아보기 (Learn more)
- 모델 접근 (Model Access) — 그룹 간 참조 접근 규칙
- 그룹 정의하기 (Defining groups)