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

SQL LOWER

Мы все были в такой ситуации:

  • В форме регистрации пользователь A ввел свое имя как Kira Furuichi, пользователь B ввел его как john blust, а пользователь C написал DAvid KrevitT (что с тобой, Дэвид??)
  • Ваши инженеры бэкенд-приложений настаивают, чтобы электронные письма клиентов были написаны заглавными буквами
  • Все ваши имена для отслеживания событий написаны в нижнем регистре

В реальном мире человеческих несовершенств, мнений и ошибок строковые значения, вероятно, будут иметь непоследовательное написание в верхнем и нижнем регистре в разных источниках данных (или даже в одном и том же источнике данных). Всегда есть немного отсутствия логики в том, почему некоторые значения передаются в верхнем или нижнем регистре, и не стоит ломать голову, чтобы это выяснить.

Так как же создать единообразие для строковых значений, которые вы собираете из всех ваших источников данных? Функция LOWER!

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

Как использовать функцию SQL LOWER

Синтаксис для использования функции LOWER выглядит следующим образом:

lower(<string_column>)

Выполнение этой команды в операторе SELECT вернет версию входной строки в нижнем регистре. Вы также можете использовать функцию LOWER в предложениях WHERE и на значениях для соединения.

Давайте рассмотрим практический пример использования функции LOWER.

Пример функции SQL LOWER

Вы можете привести к нижнему регистру имя и фамилию в модели customers Jaffle Shop с помощью следующего кода:

select 
customer_id,
lower(first_name) as first_name,
lower(last_name) as last_name
from {{ ref('customers') }}

После выполнения этого запроса таблица customers будет выглядеть примерно так:

customer_idfirst_namelast_name
1michaelp.
2shawnm.
3kathleenp.

Теперь все символы в столбцах first_name и last_name находятся в нижнем регистре.

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

Синтаксис функции SQL LOWER в Snowflake, Databricks, BigQuery и Redshift

Google BigQuery, Amazon Redshift, Snowflake, Postgres и Databricks поддерживают функцию LOWER. Кроме того, синтаксис использования LOWER одинаков для всех них.

Примеры использования функции LOWER

Вернемся к нашему хаотичному трио пользователей A, B и C, которые все использовали разное написание в верхнем и нижнем регистре для ввода своих имен. Если вы не создадите единообразное написание строковых значений, как бизнес-пользователь узнает, что фильтровать в своем BI-инструменте? Бизнес-пользователь может отфильтровать поле имени по "John Blust", так как он ожидает, что оно будет выглядеть именно так, но в итоге не получит никаких результатов. Создавая единообразный формат написания (в верхнем или нижнем регистре) для всех строковых значений в ваших моделях данных, вы создаете определенные ожидания для бизнес-пользователей в вашем BI-инструменте.

Скорее всего, никогда не будет 100% согласованности в ваших моделях данных, но делая все возможное, чтобы уменьшить этот хаос, вы облегчите жизнь себе и вашим бизнес-пользователям. Используйте функцию LOWER, чтобы создать единообразное написание для всех строк в ваших источниках данных.

0