store_failures
store_failures
store_failures는 테스트가 실패한 행을 데이터베이스에 항상 저장할지, 절대 저장하지 않을지 정하는 선택적 설정이에요. dbt test --store-failures를 실행할 때 설정한 테스트들이 실패를 저장하도록 해요. 이 config를 false로 설정해도 store_failures_as가 설정되어 있으면 그것이 우선해요.
출처: 문서
본문
Description
테스트를 데이터베이스에 항상 저장하거나 절대 저장하지 않도록 선택적으로 설정할 수 있어요.
true또는false로 지정하면store_failuresconfig가--store-failures플래그의 유무보다 우선해요.store_failuresconfig가none이거나 생략되면 리소스는--store-failures플래그 값을 사용해요.true일 때store_failures는 테스트에 실패한 모든 레코드(최대 limit)를 저장해요. 실패는 테스트 이름의 새 테이블에 저장돼요.- 테스트 결과는 같은 테스트의 이전 실패를 항상 교체해요. 테스트가 실패가 없어도 마찬가지예요.
- 기본적으로
store_failures는{{ profile.schema }}_dbt_test__audit라는 스키마를 사용하지만, 다른 값으로 설정할 수 있어요. 작업을 위해 스키마를 만들거나 접근할 권한이 있는지 확인하세요. 자세한 내용은 FAQ를 참고해요.
이 로직은 should_store_failures() 매크로에 인코딩되어 있어요.
generic(schema) 테스트의 특정 인스턴스 구성
models/.yml
models:
- name: my_model
columns:
- name: my_column
data_tests:
- unique:
config:
store_failures: true # always store failures
- not_null:
config:
store_failures: false # never store failures
singular(data) 테스트 구성
tests/.sql
{{ config(store_failures = true) }}
select ...
테스트 블록(definition) 안에서 config를 설정하면 generic(schema) 테스트의 모든 인스턴스 기본값이 돼요.
macros/.sql
{% test <testname>(model, column_name) %}
{{ config(store_failures = false) }}
select ...
{% endtest %}
패키지/프로젝트의 모든 테스트 기본값 설정:
dbt_project.yml
data_tests:
+store_failures: true # all tests
<package_name>:
+store_failures: false # tests in <package_name>
FAQs
'permissions denied for schema' 오류가 날 때
Adapter name adapter: Adapter_name error: permission denied for schema dev_username_dbt_test__audit 오류가 난다면, 대부분 사용자에게 새 스키마를 만들 권한이 없어서예요. 개발 스키마에 대한 owner 접근 권한이 있어도 그렇지요.
이를 해결하려면 커스텀 스키마를 만들거나 접근할 적절한 권한이 필요해요. 각자 데이터 플랫폼 환경에서 다음 SQL 명령을 실행하세요. 정확한 권한 쿼리는 데이터 플랫폼마다 다를 수 있어요.
create schema if not exists dev_username_dbt_test__audit authorization username;
dev_username은 자신의 개발 스키마 이름으로, username은 권한을 가질 적절한 사용자로 바꾸세요. 이 명령은 store_failures 설정과 함께 자주 쓰이는 dbt_test__audit 스키마를 만들고 접근할 권한을 부여해요.
더 알아보기 (Learn more)
- store_failures_as — 실패 저장 방식을 테이블/뷰/ephemeral로 지정.
- Data test configurations — 데이터 테스트 설정.
- dbt test —
--store-failures플래그.