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/.sql

{{ 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/.sql

{% 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/.sql

{% test <testname>() %}

{{ config(
  group='GROUP_NAME'
) }}

select ...

{% endtest %}

tests/.sql

{{ config(
  group='GROUP_NAME'
) }}

Analyses

analyses/.yml


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)