# Isnull `isnull` проверяет, является ли значение `null`, особый тип заполнителя, который используется базой данных, когда что-то отсутствует или неизвестно. **В GlarusBI вы должны комбинировать `isnull` с другим выражением, которое принимает логические значения.** В таблице ниже показаны примеры логического значения, которые будут переданы в другие ваши выражения. | Синтаксис | Пример с `null` правда | Пример с пустой строкой | | ----------------------------------------------------- | -------------------------- | ---------------------------- | | `isnull(value)` | `isnull(null)` | `isnull("")` | | Возвращает `true`, если значение равно `null`, и `false` в противном случае. | `true` | `false` | ## Как GlarusBI обрабатывает Null В таблицах GlarusBI null значения отображаются как пустые ячейки. Для Примера в столбце «Обратная связь» ниже пустые ячейки могут содержать: - `null`: отзывы не отправлялись, поэтому мысли клиента «неизвестны». - `""`: отзыв был отправлен и намеренно оставлен пустым, поэтому у клиента не было возможности дать отзыв. | Обратная связь | | ------------------ | | | | | | Мне нравится ваш стиль. | ## Замена значений null другим значением | Обратная связь | `case(isnull([Feedback]), "Unknown feedback.", [Feedback])` | | ------------------ | ----------------------------------------------------------- | | | Обратная связь неизвестна. | | | | | мне нравится ваш стиль. | Мне нравится ваш стиль. | Объедините `isnull` с выражением [`case`](./case.md), чтобы заменить «неизвестную» информацию чем-то более описательным. Предположим, что пустая ячейка первой строки на самом деле является `null`, поэтому `isnull` вернет значение `true`. Оператор `case` оценивает значение `true`, чтобы вернуть первый вывод «Неизвестная обратная связь». Пустая ячейка во второй строке не имеет `null`, но мы не уверены, что в ней тоже — это может быть пустая строка или даже смайлик, который сливается с фоном вашей таблицы. Независимо от того, какой крайний случай, `isnull` вернет `false`, а `case` вернет все, что находится в столбце Обратная связь, в качестве вывода по умолчанию. ## Допустимые типы данных | [Тип данных][data-types] | Работает с `isnull` | | ----------------------- | ------------------- | | Строка | ✅ | | Число | ✅ | | Дата Время | ✅ | | Условие | ✅ | | JSON | ✅ | ## Ограничения - В GlarusBI вы должны комбинировать `isnull` с другим выражением, которое принимает логические аргументы (например, `true` или `false`). - `isnull` принимает только одно значение за раз. Если вам нужно работать с пустыми ячейками в нескольких столбцах, см. [выражение сочетания](./coalesce.md). - Если `isnull` ничего не делает с вашими пустыми ячейками, у вас могут быть пустые строки. Вместо этого попробуйте [выражение `isempty`](./isempty.md). ## Связанные функции В этом разделе рассматриваются функции и формулы, которые можно использовать взаимозаменяемо с выражением `isnull` GlarusBI, с примечаниями о том, как выбрать лучший вариант для вашего случая использования. - [SQL](#sql) - [Таблицы](#spreadsheets) - [Python](#python) Во всех приведенных ниже примерах используется таблица из [Замена значений null](#replacing-null-values-with-another-value) Пример: | Обратная связь | `case(isnull([Feedback]), "Unknown feedback.", [Feedback])` | | ------------------ | ----------------------------------------------------------- | | | Обратная связь неизвестна. | | | | | Мне нравится ваш стиль. | Мне нравится ваш стиль. | ### SQL В большинстве случаев (если вы не используете базу данных NoSQL) вопросы, созданные в [редакторе блокнота][notebook-editor-def], преобразуются в запросы SQL, которые выполняются в вашей базе данных или хранилище данных. ```sql CASE WHEN Feedback IS NULL THEN "Unknown feedback", ELSE Feedback END ``` равно выражению GlarusBI `isnull`: ``` case(isnull([Feedback]), "Unknown feedback.", [Feedback]) ``` ### Таблицы Электронная таблица `#N/A` эквивалентна `null` базы данных (заполнители для «неизвестной» или «отсутствующей» информации). Предположим, что наш образец [столбец отзывов](#replacing-null-values-and-other-value) находится в электронной таблице, где «Обратная связь» находятся в столбце A, тогда формула ``` =IF(ISNA(A2), "Unknown feedback.", A2) ``` равно выражению GlarusBI `isnull`: ``` case(isnull([Feedback]), "Unknown feedback.", [Feedback]) ``` ### Python [Numpy][numpy] и [pandas][pandas] используют `NaN` или `NA` вместо `null`. Aпредполагая, что наш образец [столбец обратной связи](#replacing-null-values-and-other-value) находится в столбце фрейма данных с именем `df["Feedback"]`: ``` df["Custom Column"] = np.where(df["Feedback"].isnull(), "Unknown feedback.", df["Feedback"]) ``` равно выражению GlarusBI `isnull`: ``` case(isnull([Feedback]), "Unknown feedback.", [Feedback]) ``` ## Дополнительная информация - [Документация по кастомным выражениям](../expressions.md) - [Руководство по кастомным выражениям. Документация Metabase](https://www.metabase.com/learn/questions/custom-expressions) [custom-expressions-doc]: ../expressions.md [custom-expressions-learn]: https://www.metabase.com/learn/questions/custom-expressions [data-types]: https://www.metabase.com/learn/databases/data-types-overview#examples-of-data-types [notebook-editor-def]: https://www.metabase.com/glossary/notebook_editor [numpy]: https://numpy.org/doc/ [pandas]: https://pandas.pydata.org/pandas-docs/stable/