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

Функция coalesce возвращает первый из параметров, имеющий допустимое представление non-NULL. Может использоваться любое количество параметров.

Синтаксис:

coalesce(expr1[ , expr2 , expr3 , ...])

Возвращаемые типы данных: двойное значение

Аргументы

| Аргумент | Описание |
| --- | --- |
| expr1 | Первое выражение для проверки допустимого ненулевого представления. |
| expr2 | Второе выражение для проверки допустимого ненулевого представления. |
| expr3 | Третье выражение для проверки допустимого ненулевого представления. |

Примеры. Выражения диаграммы

| Пример | Результат |
| --- | --- |
| `Coalesce(ProductDescription, ProductName, ProductCode, 'no description available')` | Это выражение выберет одно из трех различных полей описания продукта, при условии, что в некоторых полях может не быть значений для продукта. В соответствии с порядком, указанным в функции, возвращается первое поле с ненулевым значением. Если ни одно из полей не содержит какое-либо значение, результат будет `no description available`. |
| `Coalesce(TextBetween(FileName, '"', '"'), FileName)` | Это выражение обрежет возможные кавычки в поле `FileName`. Если в `FileName` есть кавычки, они будут удалены; возвращается вложенное `FileName` без кавычек. Если функция `TextBetween` не находит разделители, она возвращает null, который отклоняется функцией Coalesce, возвращающей вместо этого необработанное значение `FileName`. |

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/coalesce.htm)

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

Обзор

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

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

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

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

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

  * `ProductID`

  * `ProductName`

  * `Price`

* Оператор `NullInterpret` гарантирует, что все отсутствующие значения будут рассматриваться как NULL.

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

```
Set NullInterpret = '';
Example:
LOAD * INLINE [
ProductID, ProductName, Price
1, Laptop, 1000
2, , 800
3, Desktop, 1200
4, , 500
5, Tablet, 600
];
```

Результаты

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

   * `ProductID`

   * `ProductName`

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

   * `=Coalesce(ProductName, 'Unknown Product')`

3. Создайте следующую меру:

   * `=Sum(Price)`, чтобы вернуть правильное число выборки.

4. Создайте новую таблицу и добавьте следующее выражение в виде вычисляемого измерения:

   * `=Coalesce(ProductName, 'Unknown Product')`

5. Создайте следующую меру:

   * `=Sum(Price)`, чтобы вернуть правильное число выборки.

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

Результирующая таблица 1

| ProductID | ProductName | Coalesce(ProductName, 'Unknown Product') | Sum(Price) |  |
| --- | --- | --- | --- | --- |
| Totals |  |  | 4100 |  |
| 1 | Laptop | Laptop | 1000 |  |
| 2 | - | Unknown Product | 800 |  |
| 3 | Desktop | Desktop | 1200 |  |
| 4 | - | Unknown Product | 500 |  |
| 5 | Tablet | Tablet | 600 |  |

Результирующая таблица 2

| Coalesce(ProductName, 'Unknown Product') | Sum(Price) |
| --- | --- |
| Totals | 5 |
| Desktop | 600 |
| Laptop | 1000 |
| Tablet | 600 |
| Unknown Product | 1300 |

## Пример - Замена значений null на приоритетные альтернативные значения

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/coalesce.htm)

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

Обзор

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

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

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

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

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

  * `LocationID`

  * `Country`

  * `State`

  * `City`

* Оператор `NullInterpret` гарантирует, что все отсутствующие значения будут рассматриваться как NULL.

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

```
Set NullInterpret = '';
Example:
LOAD * INLINE [
LocationID, Country, State, City
L001, USA, California, Los Angeles
L002, USA, ,
L003, Canada, Ontario,
L004, , New South Wales, Sydney
L005, UK, , London
L006, , , London
];
```

Результаты

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

   * `LocationID`

   * `Country`

   * `State`

   * `City`

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

   * `=Coalesce(Country, State, City)`, чтобы заполнить все нулевые значения альтернативными.

Результирующая таблица

| LocationID | Country | State | City | Coalesce(Country, State, City) |
| --- | --- | --- | --- | --- |
| L001 | USA | California | Los Angeles | USA |
| L002 | USA | - | - | USA |
| L003 | Canada | Ontario | - | Canada |
| L004 | - | New South Wales | Sydney | New South Wales |
| L005 | UK | - | London | UK |
| L006 | - | - | London | London |

Результаты показывают, что, несмотря на отсутствующие значения, можно сформулировать алгоритм заполнения таких экземпляров альтернативными значениями, используя функцию `Coalesce` для заполнения набора данных. Например, в `L004` отсутствует значение `Country`. Функция `Coalesce` возвращает `New South Wales`, потому что `State` – это второе поле, указанное в алгоритме приоритетов, применяемом для пустых значений `Country`.