# alt — функция скриптa и диаграммы

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

Синтаксис:

alt(expr1[ , expr2 , expr3 , ...] , else)

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

Аргументы

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

Функция alt часто используется с функциями интерпретации чисел или дат. Таким образом, программа Qlik Sense может тестировать различные форматы дат в приоритизированном порядке. Эта функция также может использоваться для обработки значений NULL в числовых выражениях.

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

| Пример | Результат |
| --- | --- |
| `alt( date#(<br>						dat , 'YYYY/MM/DD' ),` `date#( dat<br>						, 'MM/DD/YYYY' ),` `date#( dat<br>						, 'MM/DD/YY' ),` `'No valid<br>						date' )` | Это выражение протестирует наличие даты в поле даты в соответствии с любым из трех указанных форматов. Если дата соответствует формату, будет возвращено двойное значение, содержащее исходную строку и допустимое числовое представление даты. Если совпадение не найдено, будет возвращен текст `No valid date` (без допустимого числового представления). |
| `alt(Sales,0) + alt(Margin,0)` | Это выражение добавляет поля `Sales` и `Margin`, заменяя отсутствующее значение (NULL) на `0`. |

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

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

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

Обзор

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

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

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

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

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

  * `ID`

  * `Sales`

  * `Forecast`

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

```
Example:
LOAD * INLINE [
ID, Sales, Forecast
1, 500, 450
2, , 300
3, 200, 250
4, , 400
5, 350,
];
```

Результаты

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

* `ID`

* `Sales`

* `Forecast`

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

* `=Sum(alt(Sales, Forecast))`, чтобы восстановить правильное представление чисел, заменив отсутствующие значения правильными альтернативными значениями.

Таблица результатов

| ID | Sales | Forecast | Sum(alt(Sales, Forecast)) |
| --- | --- | --- | --- |
| Totals |  |  | 1750 |
| 1 | 500 | 450 | 500 |
| 2 |  | 300 | 300 |
| 3 | 200 | 250 | 200 |
| 4 |  | 400 | 400 |
| 5 | 350 |  | 350 |

Функция `alt` возвращает значение `Forecast` в вычислении меры для строк `ID` с отсутствующими значениями `Sales`. Заменив отсутствующие значения действительными альтернативными значениями, можно получить полный набор данных.

## Пример - Использование alt для замены отсутствующих значений

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

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

Обзор

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

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

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

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

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

  * `Time`

  * `Temp_Sensor1`

  * `Temp_Sensor2`

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

```
Example:
LOAD * INLINE [
Time, Temp_Sensor1, Temp_Sensor2
08:00, 23.5, 24.0
09:00, , 23.8
10:00, 24.1,
11:00, , 24.5
12:00, 23.9, 24.1
];
```

Результаты

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

* `Time`

* `Temp_Sensor1`

* `Temp_Sensor2`

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

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

Таблица результатов

| Time | Temp\_Sensor1 | Temp\_Sensor2 | Sum(alt(Temp\_Sensor1, Temp\_Sensor2)) |
| --- | --- | --- | --- |
| Totals |  |  | 119.8 |
| 08:00 | 23.5 | 24.0 | 23.5 |
| 09:00 |  | 23.8 | 23.8 |
| 10:00 | 24.1 |  | 24.1 |
| 11:00 |  | 24.5 | 24.5 |
| 12:00 | 23.9 | 24.1 | 23.9 |

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

## Пример. Сценарий использования alt

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

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

Обзор

В этом сценарии показаны различные способы замены отсутствующих или нулевых значений с помощью функции `alt`.

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

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

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

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

  * `ProductID`

  * `ProductName`

  * `SalesAmount`

  * `ReturnAmount`

  * `Profit`

  * `Discount`

  * `Category`

  * `Year`

  * `Region`

  * `CustomerRating`

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

```
Set NullInterpret = '';
Example:
LOAD * INLINE [
ProductID, ProductName, SalesAmount, ReturnAmount, Profit, Discount, Category, Year, Region, CustomerRating
101, "Laptop", 1200, 200, 500, , "Electronics", 2023, "North",
102, "Tablet", 800, , 300, 50, "Electronics", 2023, "South", 4
103, "Smartphone", 1500, , 600, 100, , 2022, "East", 5
104, "Printer", 400, , , 20, "Accessories", 2021, , 3
105, , 1000, 100, , 30, "Electronics", 2023, "West", 4
106, "Monitor", , 150, 250, , "Accessories", 2022, "North", 5
107, "Keyboard", 200, , 80, 5, , 2022, "South", 2
108, "Mouse", , 50, , , "Accessories", , "East",
109, , 600, , , , "Electronics", 2023, , 4
110, "Headphones", 300, 30, 100, , "Accessories", 2021, "West", 3
];
```

Результаты

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

* `ProductID`

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

* `=Coalesce( ProductName,  'Unknown Product')` добавляет описание `Unknown Product` во все продукты, у которых нет значения `ProductName`.

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

* `=Sum(alt(SalesAmount, ReturnAmount, Profit))` возвращает допустимое число, если не найдено ни одного `SalesAmount`.

* `=avg(alt(CustomerRating, 3))` возвращает допустимый стандартизированный рейтинг покупателя, если изначально он не был предоставлен.

* `=Sum(alt(Discount, SalesAmount * 0.05))` возвращает допустимое значение скидки.

* `=Sum(alt(Profit, SalesAmount * 0.1))` возвращает допустимое значение прибыли.

* `=Sum(alt(SalesAmount, avg(TOTAL SalesAmount)))` возвращает допустимое значение продаж.

* `=Sum(alt(Discount, avg(TOTAL Discount)))` возвращает допустимое значение скидки.

Таблица результатов

| ProductID | Coalesce( ProductName, 'Unknown Product') | Sum(alt(SalesAmount, ReturnAmount, Profit)) | avg(alt(CustomerRating, 3)) | Sum(alt(Discount, SalesAmount \* 0.05)) | Sum(alt(Profit, SalesAmount \* 0.1)) | Sum(alt(SalesAmount, avg(TOTAL SalesAmount))) | Sum(alt(Discount, avg(TOTAL Discount))) |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Итоги |  | 6200 | 3.6 | 310 | 2030 | 7500 | 410 |
| 101 | Ноутбук | 1200 | 3 | 60 | 500 | 1200 | 41 |
| 102 | Планшет | 800 | 4 | 50 | 300 | 500 | 50 |
| 103 | Смартфон | 1500 | 5 | 100 | 600 | 800 | 100 |
| 104 | Принтер | 400 | 3 | 20 | 40 | 400 | 20 |
| 105 | Неизвестный продукт | 1000 | 4 | 30 | 100 | 1000 | 30 |
| 106 | Мониторинг | 150 | 5 | 0 | 250 | 750 | 41 |
| 107 | Клавиатура | 200 | 2 | 5 | 80 | 200 | 5 |
| 108 | Мышь | 50 | 3 | 0 | 0 | 750 | 41 |
| 109 | Неизвестный продукт | 600 | 4 | 30 | 60 | 600 | 41 |
| 110 | Наушники | 300 | 3 | 15 | 100 | 300 | 41 |

Функция `alt` позволяет рассчитать и добавить альтернативные значения в поля, в которых соответствующие значения отсутствуют. Проверьте следующие результаты:

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

* В столбце 3 получено значение для `SalesAmount`. Если значение не найдено, то возвращается значение `ReturnAmount`. Если значение `ReturnAmount` не найдено, то возвращается значение `Profit`. Таким образом в столбце заполняются поля, если `SalesAmount` не имеет значения.

* В столбце 4 возвращается значение `CustomerRating`. Если значение не найдено, оно по умолчанию принимает значение `3`. Например, у товара `Laptop` нет оценки покупателей, поэтому возвращается значение `3`. Затем мера вычисляет среднее значение в столбце.

* В столбце 5 возвращается значение скидки. Если значение отсутствует, оно рассчитывается как 5% от значения `SalesAmount`.

* В столбце 6 возвращается значение `Profit`. Если значение отсутствует, возвращается 10% из `SalesAmount`.

* В столбце 7 возвращается значение `SalesAmount`. Если значение не указано, возвращается среднее значение `SalesAmount`, рассчитанное по всему набору данных. Например, продукты `Monitor` и `Mouse` не имеют значения `SalesAmount`, поэтому оба возвращают `750`, которое является средним значением, рассчитанным по всем значениям `SalesAmount`.

* В столбце 8 возвращается значение `Discount`. Если значение не найдено, то система вычисляет и возвращает среднее значение скидки, рассчитанное по всему набору данных.