SQL ROUND
Если вы читаете это, вероятно, вы занимаетесь данными. И как человек, работающий с данными, который, вероятно, моделирует данные для аналитических задач, вам время от времени потребуется округлять данные. Для тех, кто не знаком с этим понятием, "округление" — это упрощение числа, чтобы его было легче понять, при этом сохраняя его близким к исходному значению. В данных распространенный случай использования округления — это уменьшение количества десятичных знаков в числовой записи.
Чтобы округлить числовые поля или значения в SQL, вы будете использовать удобную функцию ROUND.
Как использовать функцию SQL ROUND
Синтаксис использования функции ROUND выглядит следующим образом:
round(<числовая колонка или данные>, [опционально] <количество десятичных знаков>)
В этой функции вам нужно ввести числовое поле или данные, которые вы хотите округлить, и передать опциональное число, чтобы округлить ваше поле. Для большинства хранилищ данных количество десятичных знаков по умолчанию равно 0 или 1, что означает, что если вы округлите 20.00 с помощью round(20.00)
, это вернет 20 или 20.0 (в зависимости от вашего хранилища данных).
Пример использования функции SQL ROUND
Вы можете округлить некоторые числовые поля модели orders
из Jaffle Shop с помощью следующего кода:
select
cast(order_id as string) as order_id,
order_date,
amount,
round(amount, 1) as rounded_amount
from {{ ref('orders') }}
После выполнения этого запроса результирующая таблица orders
будет выглядеть примерно так:
order_id | order_date | amount | rounded_amount |
---|---|---|---|
1 | 2018-01-01 | 10.000000 | 10.0 |
2 | 2018-01-02 | 20.000000 | 20.0 |
3 | 2018-01-04 | 1.000000 | 1.0 |
Новый столбец rounded_amount
— это поле amount
, округленное до 1 десятичного знака.
Для большинства хранилищ данных возвращаемые данные из функции ROUND должны быть такими же, как и входные данные. Если вы вводите тип float в функцию ROUND, возвращаемое округленное число также должно быть float.
Синтаксис функции SQL ROUND в Snowflake, Databricks, BigQuery и Redshift
Google BigQuery, Amazon Redshift, Snowflake и Databricks поддерживают возможность округления числовых колонок и данных. Кроме того, синтаксис округления одинаков для всех них с использованием функции ROUND.
Случаи использования функции ROUND
Если вы округляете числовые данные, будь то в моделях данных или в разовых анализах, вы, вероятно, округляете, чтобы улучшить читаемость и удобство использования ваших данных, используя промежуточные intermediate или mart модели. В частности, вы, вероятно, используете функцию ROUND для:
- Упрощения и улучшения понимания числовых расчетов с использованием деления или средних значений
- Создания конкретных групп данных для более чистого распределения значений во время разового анализа
Вы также, вероятно, увидите использование функции ROUND в вашем BI-инструменте, так как она генерирует округленные чистые числа для взаимодействия бизнес-пользователей.