dbt tests deep на собеседовании Data Engineer

Подготовься к собесу по A/B и статистике
300+ вопросов с разбором: дизайн, размер выборки, p-value, ловушки
Тренировать A/B в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Generic tests

Built-in 4 tests:

  • unique
  • not_null
  • accepted_values
  • relationships (FK)
columns:
  - name: id
    tests: [unique, not_null]
  - name: status
    tests:
      - accepted_values:
          values: ['active', 'inactive']
  - name: customer_id
    tests:
      - relationships:
          to: ref('customers')
          field: id

Singular tests

Custom SQL tests. File в tests/ directory.

-- tests/no_negative_amounts.sql
SELECT *
FROM {{ ref('orders') }}
WHERE amount < 0;

Test fails если query returns rows.

Custom generic tests

Reusable across models.

-- macros/test_positive_value.sql
{% test positive_value(model, column_name) %}
SELECT *
FROM {{ model }}
WHERE {{ column_name }} <= 0
{% endtest %}

Use:

columns:
  - name: amount
    tests:
      - positive_value
Подготовься к собесу по A/B и статистике
300+ вопросов с разбором: дизайн, размер выборки, p-value, ловушки
Тренировать A/B в Telegram

Severity и thresholds

columns:
  - name: email
    tests:
      - unique:
          severity: warn  # или error
          warn_if: ">100"
          error_if: ">1000"

error — fail run. warn — log, continue.

Useful когда small drift acceptable.

store_failures

tests:
  - unique:
      store_failures: true

Failed rows saved в audit table. Investigate later.

SELECT * FROM analytics.dbt_test__audit.unique_orders_id;

Critical для debugging тестов на больших datasets.

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на документации dbt 1.7+.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.