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 😀