enabled

enabled

enabled config는 프로젝트에서 리소스를 활성화 또는 비활성화하는 선택적 설정이에요. 기본값은 true이며, false로 설정하면 dbt가 해당 리소스를 프로젝트의 일부로 간주하지 않아요.

출처: 문서

본문

enabled config를 리소스 유형별로 설정하는 방법을 살펴볼게요.

모델 (Models)

dbt_project.yml

models:
  <resource-path>:
    +enabled: true | false

models/.sql


{{ config(
  enabled=true | false
) }}

select ...

Seeds

dbt_project.yml

seeds:
  <resource-path>:
    +enabled: true | false

Snapshots

dbt_project.yml

snapshots:
  <resource-path>:
    +enabled: true | false

(dbt v1.9 이상 적용)

snapshots/snapshot_name.yml


snapshots:
  - name: snapshot_name
    config:
      enabled: true | false

snapshots/.sql

# Configuring in a SQL file is a legacy method and not recommended. Use the property file instead.

{% snapshot snapshot_name %}

{{ config(
  enabled=true | false
) }}

select ...

{% endsnapshot %}

테스트 (Tests)

dbt_project.yml

data_tests:
  <resource-path>:
    +enabled: true | false

tests/.sql

{% test <testname>() %}

{{ config(
  enabled=true | false
) }}

select ...

{% endtest %}

tests/.sql

{{ config(
  enabled=true | false
) }}

Unit tests

💡 알고 계셨나요?

dbt v1.8부터, 또는 dbt "v1 Latest" 릴리스 트랙에서 사용할 수 있어요.

dbt_project.yml

unit_tests:
  <resource-path>:
    +enabled: true | false

models/.yml

unit_tests:
  - name: [<test-name>]
    config:
      enabled: true | false

Sources

dbt_project.yml

sources:
  <resource-path>:
    +enabled: true | false

models/properties.yml


sources:
  - name: [<source-name>]
    config:
      enabled: true | false
    tables:
      - name: [<source-table-name>]
        config:
          enabled: true | false

Analyses

analyses/.yml

analyses:
  - name: <analysis_name>
    config:
      enabled: true | false

분석 프로젝트 레벨에서 구성하려면 dbt_project.ymlrequire_corrected_analysis_fqns 플래그를 true로 설정하세요.

dbt_project.yml

flags:
  require_corrected_analysis_fqns: true

analyses:
  +enabled: true | false

메트릭 (Metrics)

dbt_project.yml

metrics:
  <resource-path>:
    +enabled: true | false

models/metrics.yml


metrics:
  - name: [<metric-name>]
    config:
      enabled: true | false

Exposures

dbt_project.yml

exposures:
  <resource-path>:
    +enabled: true | false

models/exposures.yml


exposures:
  - name: [<exposure-name>]
    config:
      enabled: true | false

시멘틱 모델 (Semantic models)

dbt_project.yml

semantic-models:
  <resource-path>:
    +enabled: true | false

(dbt v1.12 이상 적용)

models/file_name.yml

models:
  - name: model_name
    semantic_model:
      enabled: true | false # Required under 'semantic_model'

저장된 쿼리 (Saved queries)

dbt_project.yml

saved-queries:
  <resource-path>:
    +enabled: true | false

models/semantic_models.yml

saved_queries:
  - name: [<saved_query_name>]
    config:
      enabled: true | false

스킬 (Skills)

(dbt v2.0 이상 적용)

dbt_project.yml

skills:
  <resource-path>:
    +enabled: true | false

에이전트 스킬의 경우, 리소스 경로는 스킬을 제공하는 패키지 다음에 스킬 이름으로 이어져요:

dbt_project.yml

skills:
  demo_skills:
    naming-conventions:
      +enabled: false

패키지 자체의 skills config가 제공하는 스킬의 기본값을 설정하고, 루트 프로젝트의 skills config가 이를 덮어써요. 같은 이름으로 스킬을 제공하는 두 패키지를 해결하는 방법은 스킬을 비활성화하는 거예요.

정의 (Definition)

리소스를 활성화 또는 비활성화하는 선택적 구성이에요.

  • 기본값: true

리소스가 비활성화되면, dbt는 이 리소스를 프로젝트의 일부로 간주하지 않아요. 이로 인해 컴파일 오류가 발생할 수 있다는 점에 주의하세요.

특정 실행에서 모델을 제외하고 싶다면, 모델 선택 문법--exclude 파라미터 사용을 고려해 보세요.

모델을 더 이상 사용하지 않아 비활성화하려는 것이지만 SQL을 버전 관리하고 싶다면, 대신 analysis로 만드는 것을 고려해 보세요.

예제 (Examples)

패키지의 모델을 비활성화하고 자신만의 버전을 사용하기

패키지에서 모델의 로직을 변경하고 싶을 때 유용해요. 예를 들어 segment 패키지의 segment_web_page_views 로직을 변경해야 한다면(원본 모델):

  1. 자신의 프로젝트에 segment_web_page_views(같은 이름)라는 모델을 추가하세요.
  2. 중복 모델로 인한 컴파일 오류를 피하려면 segment 패키지 버전의 모델을 다음과 같이 비활성화하세요:

dbt_project.yml

models:
  segment:
    base:
      segment_web_page_views:
        +enabled: false

(dbt v2.0 이상 적용)

패키지의 Semantic Layer 리소스 비활성화하기

일부 패키지는 dbt v2와 호환되지 않는 이전 명세로 Semantic Layer 리소스(시멘틱 모델, 메트릭, 저장된 쿼리)를 정의할 수 있어요.

자신의 semantic layer 정의를 유지하면서 dbt v2에서 이 패키지를 사용하려면, 관련 YAML 파일에서 패키지의 semantic layer 리소스를 비활성화하세요.

dbt_project.yml

# Disable the package's time spine model (if it conflicts with yours)
models:
  ad_reporting:
    semantic_models:
      metricflow_time_spine:
        +enabled: false

# Disable all semantic layer resources from the package
semantic-models:
  ad_reporting:
    +enabled: false

metrics:
  ad_reporting:
    +enabled: false

saved-queries:
  ad_reporting:
    +enabled: false

더 알아보기 (Learn more)

  • 특정 실행에서 리소스를 제외하려면 모델 선택 문법--exclude를 참고하세요.
  • 더 이상 쓰지 않는 모델을 분석으로 전환하는 방법은 analyses 문서를 확인하세요.