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

SQL IN

Это случается даже с лучшими специалистами по данным: таблица orders всегда требует фильтрации status = employee_order, чтобы получить точное количество заказов. Поэтому ваша модель данных для таблицы orders выглядит примерно так:

select * from {{ source('backend_db', 'orders') }}
where status != 'employee_order'

Что произойдет, если однажды появится дополнительный status, который нужно будет исключить? Вот тут-то и пригодится удобный оператор IN.

Оператор IN позволяет указать несколько значений в условии WHERE, чтобы вы могли легко фильтровать ваш запрос по нескольким параметрам. Использование оператора IN является более изящной версией использования нескольких условий OR в условии WHERE.

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

В приведенном выше сценарии, если вам теперь нужно отфильтровать дополнительное новое значение status, чтобы удалить определенные строки, ваше использование оператора IN будет выглядеть так:

select * from {{ source('backend_db', 'orders') }}
where status not in ('employee_order', 'influencer_order') --список статусов заказов для исключения

Ого, что такое not in? Это именно то, что вы думаете: вернуть все строки, где статус не employee_order или influencer_order. Если вы хотите просто использовать оператор IN, вы можете указать все другие подходящие статусы (например, where status in ('regular_order', 'temp_order')).

Вы также можете использовать оператор IN/NOT IN для подзапроса, чтобы исключить/включить строки из результата подзапроса:

where status in (select)
Сравнивайте столбцы с соответствующими типами данных

Единственная "ловушка" при использовании оператора IN заключается в том, что значения в вашем списке IN должны соответствовать типу данных столбца, с которым они сравниваются. Это особенно важно для булевых столбцов, которые могут быть случайно преобразованы в строки.

Синтаксис оператора IN в Snowflake, Databricks, BigQuery и Redshift

Оператор IN, как и большинство операторов SQL, не имеет синтаксических различий в различных хранилищах данных. Это означает, что синтаксис использования оператора IN/NOT IN одинаков в Snowflake, Databricks, Google BigQuery и Amazon Redshift.

Примеры использования оператора IN

Используйте условие IN, чтобы исключить неподходящие или неточные строки из запроса или объекта схемы базы данных на основе параметров, которые вы определяете и понимаете. Мы гарантируем, что где-то в вашем проекте dbt есть IN 😀

0