Перейти к основному содержимому

Могу ли я проверить уникальность двух столбцов?

Да, существует несколько разных вариантов.

Рассмотрим таблицу заказов, которая содержит записи из нескольких стран, и комбинация ID и кода страны уникальна:

order_idcountry_code
1AU
2AU
......
1US
2US
......
Loading table...

Вот некоторые подходы:

1. Создать уникальный ключ в модели и протестировать его

models/orders.sql

select
country_code || '-' || order_id as surrogate_key,
...

models/orders.yml
version: 2

models:
- name: orders
columns:
- name: surrogate_key
data_tests:
- unique

2. Протестировать выражение

models/orders.yml
version: 2

models:
- name: orders
data_tests:
- unique:
arguments: # available in v1.10.5 and higher. Older versions can set the <argument_name> as the top-level property.
column_name: "(country_code || '-' || order_id)"

3. Использовать тест dbt_utils.unique_combination_of_columns

Это особенно полезно для больших наборов данных, так как он более производителен. Ознакомьтесь с документацией по пакетам для получения дополнительной информации.

models/orders.yml
version: 2

models:
- name: orders
data_tests:
- dbt_utils.unique_combination_of_columns:
arguments: # available in v1.10.5 and higher. Older versions can set the <argument_name> as the top-level property.
combination_of_columns:
- country_code
- order_id

Нашли ошибку?

0
Loading