check 설정
check 설정
dbt check는 프로젝트의 표준·거버넌스 규칙을 SQL 쿼리로 작성해서 지키는지 검증하는 기능이에요. check의 동작을 제어하는 설정을 프로젝트·속성·SQL 레벨에서 어떻게 지정하는지 살펴봐요.
출처: 문서
본문
관련 문서
- Checks
- Check properties
dbt check명령어
사용 가능한 설정
- 프로젝트 YAML 파일
- 속성 YAML 파일
- SQL config
dbt_project.yml
checks:
<resource-path>:
+severity: error | warn
+enabled: true | false
+selection_filter_on: column_name | [column_names] | none
+tags: string | [string]
+meta: {dictionary}
checks/_checks.yml
version: 2
checks:
- name: check-name
config:
severity: error | warn
enabled: true | false
selection_filter_on: column_name | [column_names] | none
tags: string | [string]
meta: {dictionary}
checks/<check_name>.sql
{{ config(
severity = "error" | "warn",
enabled = true | false,
selection_filter_on = "column_name" | ["column_names"] | "none",
tags = ["string"],
meta = {"key": "value"}
) }}
select ...
from {{ info_schema('models') }}
where ...
예시
다음 예시는 check를 설정하는 흔한 방법들을 보여줘요.
check 실패 시 경고(warn)
새 규칙을 점진적으로 도입할 때 severity: warn을 사용하면 돼요. 문제는 로그로 기록되지만 빌드는 실패하지 않아요.
checks/_public_models_have_owners.yml
checks:
- name: public_models_have_owners
config:
severity: warn # default is error
특정 컬럼으로 필터링
edges 테이블에는 unique_id 컬럼이 없어서, 이 테이블을 조회하는 check는 결과를 반환하지 않아요. --select를 사용할 때 dbt는 결과를 범위 좁히기 위해 unique_id 컬럼을 찾는데 없으면 선택자(selector)와 무관하게 check가 프로젝트 전체에 대해 실행돼요. selection_filter_on을 리소스 ID가 담긴 컬럼으로 설정하면 --select가 그 컬럼들을 기준으로 행 범위를 좁혀줘요. 예를 들어 multiple_sources_joined check는 child_unique_id로 집계하므로, 그 컬럼만 설정하면 돼요:
checks/_multiple_sources_joined.yml
checks:
- name: multiple_sources_joined
config:
selection_filter_on: child_unique_id