Can I test the uniqueness of two columns?
Yes, There's a few different options.
Consider an orders table that contains records from multiple countries, and the combination of ID and country code is unique:
| order_id | country_code | 
|---|---|
| 1 | AU | 
| 2 | AU | 
| ... | ... | 
| 1 | US | 
| 2 | US | 
| ... | ... | 
Here are some approaches:
1. Create a unique key in the model and test that
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. Test an expression
models/orders.yml
version: 2
models:
  - name: orders
    tests:
      - unique:
          column_name: "(country_code || '-' || order_id)"
3. Use the dbt_utils.unique_combination_of_columns test
This is especially useful for large datasets since it is more performant. Check out the docs on packages for more information.
models/orders.yml
version: 2
models:
  - name: orders
    tests:
      - dbt_utils.unique_combination_of_columns:
          combination_of_columns:
            - country_code
            - order_id
0