# EmptyIsNull Функция скрипта и диаграммы

Функция EmptyIsNull преобразует пустые строки в NULL. Следовательно, если параметр — пустая строка, она возвращает NULL, иначе она возвращает параметр.

Синтаксис:

EmptyIsNull(exp )

Возвращаемые типы данных: NULL, если параметр — пустая строка, иначе она возвращает параметр.

Аргументы

| Аргумент | Описание |
| --- | --- |
| expr | Выражение или поле, содержащее данные для измерения. |

Пример: выражения диаграммы

| Пример | Результат |
| --- | --- |
| `EmptyIsNull(AdditionalComments)` | Это выражение вернет NULL вместо любых пустых значений поля `AdditionalComments`. Возвращаются непустые строки и числа. |
| `EmptyIsNull(PurgeChar(PhoneNumber, ' -()'))` | Это выражение удалит любые тире, пробелы и круглые скобки из поля `PhoneNumber`. Если других символов не осталось, функция `EmptyIsNull` возвращает пустое строковое значение как NULL; пустая строка номера телефона (phone number) обозначает отсутствие номера телефона (phone number). |

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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NULLFunctions/EmptyIsNull.htm)

#### Выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `Example`.

* Следующие поля в таблице данных:

  * `CustomerID`

  * `OrderID`

  * `Product`

  * `Status`

  * `PhoneNumber`

Скрипт загрузки

```
Example:
LOAD * inline [
CustomerID, OrderID, Product, Status, PhoneNumber
1, 1001, Widget,, (0123) 456 789
2, 1002, Gizmo, Open,-
3, 1003, Gadget, Closed,()
4, 1004, Widget,,678-9888
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* `CustomerID`

* `OrderID`

* `Product`

* `Status`

Создайте следующие вычисляемые измерения:

* `=EmptyIsNull(Status)`, чтобы вернуть NULL вместо любых пустых строковых значений в поле `Status`.

* `=EmptyIsNull(PurgeChar(PhoneNumber, ' -()'))`, чтобы удалить любые тире, пробелы и круглые скобки из поля `PhoneNumber`. Если других символов не осталось, функция `EmptyIsNull` возвращает пустую строку как NULL; пустой номер телефона обозначает отсутствие номера телефона.

Примечание к информацииСледующая таблица содержит пустые ячейки, чтобы продемонстрировать использование функции `EmptyIsNull`.

Results table

| CustomerID | OrderID | Product | Status | EmptyIsNull(Status) | EmptyIsNull(PurgeChar(PhoneNumber, ' -()')) |
| --- | --- | --- | --- | --- | --- |
| 1 | 1001 | Widget |  | - | 0123456789 |
| 2 | 1002 | Gizmo | Open | Open | - |
| 3 | 1003 | Gadget | Closed | Closed | - |
| 4 | 1004 | Widget |  | - | 6789888 |

В столбце `Status` обратите внимание, что записи с пустыми значениями отображаются как пустые ячейки с прозрачным цветом фона по умолчанию. Результат меры `EmptyIsNull(Status)` возвращает NULL для этих пустых значений, на что указывает символ тире (-) на сером фоне ячеек.

Вторая мера использует функцию `EmptyIsNull` с [PurgeChar Функция скрипта и диаграммы](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/PurgeChar.htm), чтобы удалить все тире (-), пробелы и круглые скобки () из поля `PhoneNumber`, а затем вернуть все оставшиеся пустые строки как NULL. Ячейки со значениями NULL теперь отображаются с тире (-) и серым фоном.

## Пример. Замена значений NULL текстом и добавление условного форматирования

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NULLFunctions/EmptyIsNull.htm)

#### Выражение диаграммы

Обзор

Менеджер по продажам хочет проанализировать данные о продажах и легко выявить записи с отсутствующими значениями.

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `Example`.

* Следующие поля в таблице данных:

  * `ID`

  * `Name`

  * `Age`

  * `Email`

  * `Sales`

  * `Region`

  * `OrderStatus`

Скрипт загрузки

```
Example:
LOAD * inline [
ID,Name, Age, Email, Sales, Region, OrderStatus
1, John Smith, 30, john@email.com, 1000, North, Active
2, Jane Doe, '', jane@email.com, 1500, South, Active
3, Bob Johnson, 45, '', 800, East, Inactive
4, Alice Brown, 28, alice@email.com, '', West, Active
5, Charlie Lee, '', charlie@email.com, 1200, '', Active
6, Eva Green, 35, eva@email.com, 950, North, ''
7, David White, 50, '', '', South, Inactive
8, Fiona Black, 42, fiona@email.com, 1100, East, Active
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:

* `ID`

Создайте следующие вычисляемые измерения:

* `=If(IsNull(EmptyIsNull(Age)), 'NULL', EmptyIsNull(Age))`, чтобы вернуть как NULL все пустые строковые значения в поле `Age`, а затем определить и заполнить все нулевые значения значением `NULL` вместо символа тире (`-`).

* `=If(IsNull(EmptyIsNull(Email)), 'NULL', EmptyIsNull(Email))`, чтобы вернуть как NULL все пустые строковые значения в поле `Email`, а затем определить и заполнить все нулевые значения значением `NULL` вместо символа тире (`-`).

* `=If(IsNull(EmptyIsNull(Sales)), 'NULL', EmptyIsNull(Sales))`, чтобы вернуть как NULL все пустые строковые значения в поле `Sales`, а затем определить и заполнить все нулевые значения значением `NULL` вместо символа тире (`-`).

* `=If(IsNull(EmptyIsNull(Region)), 'NULL', EmptyIsNull(Region))`, чтобы вернуть как NULL все пустые строковые значения в поле `Region`, а затем определить и заполнить все нулевые значения значением `NULL` вместо символа тире (`-`).

* `=If(IsNull(EmptyIsNull(OrderStatus)), 'NULL', EmptyIsNull(OrderStatus))`, чтобы вернуть как NULL все пустые строковые значения в поле `OrderStatus`, а затем определить и заполнить все нулевые значения значением `NULL` вместо символа тире (`-`).

Задайте условное форматирование ячеек, чтобы изменить цвет фона на красный для значений `NULL` и на зеленый для всех остальных значений. На панели Свойства для каждого измерения введите следующее выражение в поле Выражение для цвета фона:

* `ID` (измерение): `=RGB(200,255,200)`

* `Age` (мера): `=If(IsNull(EmptyIsNull(Age)), RGB(255,200,200), RGB(200,255,200))`

* `Email` (мера): `=If(IsNull(EmptyIsNull(Email)), RGB(255,200,200), RGB(200,255,200))`

* `Sales` (мера): `=If(IsNull(EmptyIsNull(Sales)), RGB(255,200,200), RGB(200,255,200))`

* `Region` (мера): `=If(IsNull(EmptyIsNull(Region)), RGB(255,200,200), RGB(200,255,200))`

* `OrderStatus` (мера): `=If(IsNull(EmptyIsNull(OrderStatus)), RGB(255,200,200), RGB(200,255,200))`

Results table

| ID | If(IsNull(EmptyIsNull(Age)), 'NULL', EmptyIsNull(Age)) | If(IsNull(EmptyIsNull(Email)), 'NULL', EmptyIsNull(Email)) | If(IsNull(EmptyIsNull(Sales)), 'NULL', EmptyIsNull(Sales)) | If(IsNull(EmptyIsNull(Region)), 'NULL', EmptyIsNull(Region)) | If(IsNull(EmptyIsNull(OrderStatus)), 'NULL', EmptyIsNull(OrderStatus)) |
| --- | --- | --- | --- | --- | --- |
| 1 | 30 | john@email.com | 1000 | North | Active |
| 2 | NULL | jane@email.com | 1500 | South | Active |
| 3 | 45 | NULL | 800 | East | Inactive |
| 4 | 28 | alice@email.com | NULL | West | Active |
| 5 | NULL | charlie@email.com | 1200 | NULL | Active |
| 6 | 35 | eva@email.com | 950 | North | NULL |
| 7 | 50 | NULL | NULL | South | Inactive |
| 8 | 42 | fiona@email.com | 1100 | East | Active |

Результаты показывают, что путем использования функции `EmptyIsNull` и добавления условного форматирования можно легко идентифицировать записи с отсутствующими значениями.