Могу ли я проверить уникальность двух столбцов?
Да, есть несколько различных вариантов.
Рассмотрим таблицу заказов, которая содержит записи из нескольких стран, и комбинация ID и кода страны уникальна:
order_id | country_code |
---|---|
1 | AU |
2 | AU |
... | ... |
1 | US |
2 | US |
... | ... |
Вот некоторые подходы:
1. Создать уникальный ключ в модели и протестировать его
models/orders.sql
select
country_code || '-' || order_id as surrogate_key,
...
models/orders.yml
version: 2
models:
- name: orders
columns:
- name: surrogate_key
tests:
- unique
2. Протестировать выражение
models/orders.yml
version: 2
models:
- name: orders
tests:
- unique:
column_name: "(country_code || '-' || order_id)"
3. Использовать тест dbt_utils.unique_combination_of_columns
Это особенно полезно для больших наборов данных, так как он более производителен. Ознакомьтесь с документацией по пакетам для получения дополнительной информации.
models/orders.yml
version: 2
models:
- name: orders
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- country_code
- order_id
0