coalesce¶
coalesce
просматривает значения в списке (по порядку) и возвращает первое ненулевое значение.
Эта функция полезна, когда вы хотите:
- заполнить недостающие данные,
- объединить данные из нескольких столбцов,
- создавать расчеты по нескольким столбцам.
Синтаксис | Пример |
---|---|
coalesce(value1, value2, …) |
coalesce("null", "null", "bananas", "null" …) |
Возвращает первое ненулевое значение из списка значений | “bananas” |
Заполнение пустых или нулевых значений¶
left_table_col | right_table_col | coalesce([right_table_col], 0) |
---|---|---|
1 | 1 | 1 |
2 | null |
0 |
3 | null |
0 |
4 | 4 | 4 |
Вы можете заполнить пустые или нулевые значения, если у вас есть:
- Разреженные данные.
null
значения, созданные левым соединением (пример, показанный выше).
Более подробный пример см. в Заполнение данных для отсутствующих дат отчета.
Объединение значений из разных столбцов¶
Notes | Comments | coalesce([Notes], [Comments] "No notes or comments.") |
---|---|---|
I have a note. | I have a comment. | I have a note. |
I have a comment. | I have a comment. | |
I have a note. | I have a note. | |
No notes or comments. |
Создание расчётов по разным столбцам¶
Subtotal | Discount | coalesce([Subtotal], 0) - coalesce([Discount], 0) |
---|---|---|
10.00 | 0.15 | 9.85 |
21.00 | 21.00 | |
16.00 | 1.60 | 14.40 |
4.00 | 4.00 |
Вычисления в Glarus BI вернут null
, если какой-либо из входных столбцов null
. Это связано с тем, что нулевые значения в ваших данных представляют «отсутствующую» или «неизвестную» информацию, которая не обязательно совпадает с количеством «0». То есть сложение 1 + «неизвестно» = «неизвестно».
Если вы хотите рассматривать «неизвестные» значения как нули (или какое-либо другое значение, которое означает «ничего» в ваших данных), мы рекомендуем использовать объединить
для переноса столбцов, используемых в ваших вычислениях.
Допустимые типы данных¶
Тип данных | работают с coalesce |
---|---|
Строка | ✅ |
Число | ✅ |
Дата | ✅ |
Условие | ✅ |
JSON | ❌ |
Ограничения¶
Используйте одни и те же типы данных в одной функции coalesce
. Если вы хотите объединить значения, которые имеют разные типы данных:
- Используйте оператор SQL
CAST
. - Изменить тип данных на странице метаданных таблицы.
Если вы хотите использовать coalesce
с типами данных JSON или JSONB, вам нужно сначала сгладить объекты JSON. Для получения дополнительной информации найдите функции JSON, доступные на вашем диалекте SQL. Вы можете найти некоторые общие справочные руководства по SQL здесь.
Связанные функции¶
В этом разделе рассматриваются функции и формулы, которые можно использовать взаимозаменяемо с выражением Glarus BI coalesce
, с примечаниями о том, как выбрать лучший вариант для вашего случая использования.
Выражения Glarus BI
Другие инструменты
Все примеры используют пользовательское выражение и примеры данных из Консолидация значений Пример:
Notes | Comments | coalesce([Notes], [Comments] "No notes or comments.") |
---|---|---|
I have a note. | I have a comment. | I have a note. |
I have a comment. | I have a comment. | |
I have a note. | I have a note. | |
No notes or comments. |
case¶
case(ISBLANK([Notes]) = FALSE AND ISBLANK([Comments]) = FALSE, [Notes],
ISBLANK([Notes]) = TRUE AND ISBLANK([Comments]) = False, [Comments],
ISBLANK([Notes]) = FALSE AND ISBLANK([Comments]) = TRUE, [Notes],
ISBLANK([Notes]) = TRUE AND ISBLANK([Comments]) = TRUE, "No notes or comments")
идентично выражению coalesce
:
coalesce
гораздо приятнее писать, если вы не против взять первое значение, когда оба ваших столбца не пусты. Используйте case
, если вы хотите определить конкретный вывод (например, если вы хотите вернуть «У меня есть примечание и комментарий» вместо «У меня есть примечание».).
SQL¶
В большинстве случаев (если вы не используете базу данных NoSQL) запросы, созданные в редакторе блокнота, преобразуются в SQL-запросы, которые выполняются в вашей базе данных или хранилище данных.
Функция SQL coalesce
идентично выражению coalesce
Glarus BI:
Таблицы¶
Если ваша таблица примечаний и комментариев находится в электронной таблице, где «Примечания» находятся в столбце A, а «Комментарии» — в столбце B, тогда формула
идентично выражению coalesce
Glarus BI:
В качестве альтернативы вы можете привыкнуть к работе с INDEX и MATCH в формуле массива, если вы «объединяете» данные по трём или более столбцам электронной таблицы.
Python¶
Предполагая, что [таблица примечаний и комментариев] (#объединение-значений-из-разных-столбцов) находится в фрейме данных с именем df
, комбинация функций pandas
combine_first()
и fillna()
идентично выражению coalesce
Glarus BI: