enabled
enabled
enabled config는 프로젝트에서 리소스를 활성화 또는 비활성화하는 선택적 설정이에요. 기본값은 true이며, false로 설정하면 dbt가 해당 리소스를 프로젝트의 일부로 간주하지 않아요.
출처: 문서
본문
enabled config를 리소스 유형별로 설정하는 방법을 살펴볼게요.
모델 (Models)
dbt_project.yml
models:
<resource-path>:
+enabled: true | false
models/
{{ 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/
# 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/
{% test <testname>() %}
{{ config(
enabled=true | false
) }}
select ...
{% endtest %}
tests/
{{ config(
enabled=true | false
) }}
Unit tests
💡 알고 계셨나요?
dbt v1.8부터, 또는 dbt "v1 Latest" 릴리스 트랙에서 사용할 수 있어요.
dbt_project.yml
unit_tests:
<resource-path>:
+enabled: true | false
models/
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/
analyses:
- name: <analysis_name>
config:
enabled: true | false
분석 프로젝트 레벨에서 구성하려면 dbt_project.yml의 require_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 로직을 변경해야 한다면(원본 모델):
- 자신의 프로젝트에
segment_web_page_views(같은 이름)라는 모델을 추가하세요. - 중복 모델로 인한 컴파일 오류를 피하려면 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