fail_calc
fail_calc
fail_calc는 데이터 테스트가 실패로 판단할 때 실패 건수를 어떻게 계산할지를 정하는 설정이에요. 기본값은 count(*)로, 테스트 쿼리가 반환한 실패 레코드의 행 수를 세는 거예요. 필요하면 커스텀 집계 계산이나 특정 컬럼 이름으로 바꿀 수도 있죠.
출처: 문서
본문
테스트 쿼리는 해당 테스트가 선언한 기대·단언(assertion)과 일치하지 않는 실패 레코드들의 집합 — 중복 레코드, null 값 등을 — 반환하도록 작성돼요.
대부분의 경우 이는 테스트 쿼리가 반환한 행의 개수예요. fail_calc의 기본값은 count(*)이고요. 하지만 커스텀 계산으로 바꿀 수도 있는데, 집계 계산이거나 테스트 쿼리에서 선택할 컬럼의 이름일 수 있어요.
대부분의 테스트는 fail_calc 설정을 쓰지 않고 실패 행의 개수를 반환하는 방식을 선호해요. fail_calc 설정을 쓰는 테스트라면 가장 흔히 generic test 블록 안에, 쿼리 정의 옆에 설정해요. 물론 다른 설정과 마찬가지로 fail_calc도 같은 자리에 모두 설정할 수 있어요.
예를 들어 unique 테스트가 실패 계산으로 count(*) 대신 sum(n_records)를 반환하도록 구성할 수 있어요. 즉, 중복된 컬럼 값을 가진 모델의 행 수(중복된 컬럼 값의 개수가 아니라)를 세는 거죠.
다른 설정들과 마찬가지로 fail_calc도 여러 위치에서 설정할 수 있어요. 예를 들어:
fail_calc: "case when count(*) > 0 then sum(n_records) else 0 end"
models:
- name: my_model
columns:
- name: my_columns
data_tests:
- unique:
config:
fail_calc: "case when count(*) > 0 then sum(n_records) else 0 end"
{{ config(fail_calc = "sum(total_revenue) - sum(revenue_accounted_for)") }}
select ...
{% test <testname>(model, column_name) %}
{{ config(fail_calc = "missing_in_a + missing_in_b") }}
select ...
{% endtest %}
data_tests:
+fail_calc: count(*) # all tests
<package_name>:
+fail_calc: count(distinct id) # tests in <package_name>
더 알아보기 (Learn more)
- 데이터 테스트 — dbt 데이터 테스트 사용법
- store_failures — 실패 결과 저장 설정