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

SQL DISTINCT

Давайте сразу скажем: в какой-то момент вашей работы с данными вы столкнетесь с дубликатами в ваших данных. Они могут быть введены из неисправного источника данных или созданы в процессе объединения и трансформации данных. Для последнего сценария может потребоваться более сложное или переработанное решение, но никогда не помешает знать, как использовать DISTINCT в запросе.

Использование DISTINCT в операторе SELECT заставит запрос возвращать только уникальные строки. Вы можете часто видеть предложение DISTINCT в функциях COUNT для получения количества уникальных строк.

Как использовать SQL DISTINCT в запросе

Чтобы удалить дублирующиеся строки из запроса, добавьте DISTINCT сразу после SELECT, за которым следуют строки, которые вы хотите выбрать:

select
distinct
row_1,
row_2
from my_data_source

Давайте рассмотрим практический пример использования DISTINCT ниже.

Пример SQL DISTINCT

select
count(customer_id) as cnt_all_orders,
count(distinct customer_id) as cnt_distinct_customers
from {{ ref('orders') }}

Этот простой запрос может быть выполнен во время начального исследования ваших данных; он вернет количество customer_ids и количество уникальных customer_ids, которые появляются в таблице orders Jaffle Shop:

cnt_all_orderscnt_distinct_customers
9962

Как видно из результатов запроса, клиенты разместили 99 заказов, но в таблице только 62 уникальных клиента.

Синтаксис DISTINCT в Snowflake, Databricks, BigQuery и Redshift

Поскольку это основа SQL, все современные хранилища данных поддерживают возможность использования DISTINCT в операторе SELECT 😀

Сценарии использования DISTINCT

Чаще всего вы увидите запросы с использованием оператора DISTINCT для:

  • Удаления ненужных дублирующихся строк из модели данных; предупреждение: если вам нужно использовать DISTINCT в модели, не являющейся исходной, которая содержит объединения, существует вероятность того, что может быть ошибочная логика, создающая дубликаты в данных, поэтому всегда дважды проверяйте, что это действительно дубликаты.

  • Поиска количества уникальных полей в наборе данных, особенно для первичных или суррогатных ключей.

Это не исчерпывающий список того, где ваша команда может использовать DISTINCT в процессе разработки, моделях dbt и логике BI-инструментов, но он содержит некоторые общие сценарии, с которыми аналитики сталкиваются ежедневно.

0