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

Функция if возвращает значение в зависимости от условия функции: True или False.

[If Function](https://play.vidyard.com/qnkaRddq32LnAGUTTDGdLA)

Синтаксис:

if(condition , then [, else])

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| condition | Выражение, которое интерпретируется логическим образом. |
| then | Выражение, которое может быть любого типа. Если элемент condition равен True, функция if возвращает значение выражения then. |
| else | Выражение, которое может быть любого типа. Если элемент condition равен False, функция if возвращает значение выражения else.<br><br>Этот параметр дополнительный. Если condition равно False, возвращается NULL, если не указан else. |

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

| Пример | Результат |
| --- | --- |
| `if( Amount>=<br>						0, 'OK', 'Alarm' )` | Это выражение проверяет, является ли количество положительным числом (0 или больше) и возвращает значение `OK`, если это так. Если количество меньше 0, будет возвращено значение `Alarm`. |

В нескольких примерах этого раздела используется встроенная загрузка. [Использование встроенных загрузок для загрузки данных](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)

## Пример: скрипт загрузки с использованием if

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

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

Обзор

If можно использовать в скрипте загрузки наряду с другими методами и объектами, включая переменные. В этом примере используется переменная `threshold`, а в модель данных включено новое поле, которое зависит от пороговых значений (threshold).

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

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

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

  * `Transactions`: включает поля транзакции

  * `Transaction_Buckets`: включает поле `transaction_id` и создает новое поле, `[Compared to Threshold]`, используя функцию `if` для сравнения поля `transaction_amount` с переменной `threshold`.

* Переменная `threshold`, установленная как `100`.

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

```
Transactions:
Load * Inline [
transaction_id, transaction_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, m, orange
3752, 20180916, 5.75, 1, 5646471, S, blue
3753, 20180922, 125.00, 7, 3036491, l, Black
3754, 20180922, 484.21, 13, 049681, xs, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black
];
 
set threshold = 100;
					
/* Create new table called Transaction_Buckets 
Compare transaction_amount field from Transaction table to threshold of 100.
Output results into a new field called Compared to Threshold
 */

Transaction_Buckets:
Load
   transaction_id,
   If(transaction_amount > $(threshold),'Greater than $(threshold)','Less than $(threshold)') as [Compared to Threshold]
Resident Transactions;
```

Результаты

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

* `transaction_id`

* `[Compared to Threshold]`

В таблице показаны результаты использования функции ifif в скрипте загрузки.

| идентификатор\_транзакции | По сравнению с пороговым значением |
| --- | --- |
| 3750 | Меньше 100 |
| 3751 | Больше 100 |
| 3752 | Меньше 100 |
| 3753 | Больше 100 |
| 3754 | Больше 100 |
| 3756 | Меньше 100 |
| 3757 | Больше 100 |

## Пример. Оценка данных о продукте с помощью if

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

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

Обзор

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

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

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

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

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

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

  * `ProductID`

  * `ProductName`

  * `ProductCategory`

```
Example:
LOAD * INLINE [
ProductID, ProductName, ProductCategory
1, "Laptop", "Electronics"
2, "Banana", "Fruits"
3, "Shampoo", "Toiletries"
4, "TV", "Electronics"
5, "Apple", "Fruits"
];
```

Результаты

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

* `ProductID`

* `ProductName`

* `ProductCategory`

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

* Для получения нужных значений используется выражение `=If(ProductCategory =  'Toiletries' or ProductCategory =  'Fruits', 'Consumable', 'Other')`.

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

| ProductID | ProductName | ProductCategory | If(ProductCategory = 'Toiletries' or ProductCategory = 'Fruits', 'Consumable', 'Other') |
| --- | --- | --- | --- |
| 1 | Laptop | Electronics | Other |
| 2 | Banana | Fruits | Consumable |
| 3 | Shampoo | Toiletries | Consumable |
| 4 | TV | Electronics | Other |
| 5 | Apple | Fruits | Consumable |

Из результатов видно, что функция `if` оценивает выражение и возвращает требуемые значения. Например, продукты в категории `Fruits` или `Toiletries` классифицируются как `Consumable`.

## Пример. Оценка и классификация данных о клиенте с помощью if

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

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

Обзор

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

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

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

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

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

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

  * `ClientID`

  * `ClientName`

  * `Region`

  * `Industry`

```
Example:
LOAD * INLINE [
ClientID, ClientName, Region, Industry
1, "Acme Corp", "North", "Manufacturing"
2, "Beta Ltd", "East", "Technology"
3, "Gamma Inc", "West", "Retail"
4, "Delta LLC", "North", "Technology"
5, "Epsilon GmbH", "South", "Healthcare"
];
```

Результаты

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

* `ClientID`

* `ClientName`

* `Region`

* `Industry`

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

* Для получения нужных значений используется выражение `=If((Region = 'North' or Region = 'East') AND (Industry= 'Technology' or Industry = 'Manufacturing'), 'Target Segment', 'Secondary Segment')`.

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

| ClientID | ClientName | Region | Industry | If((Region = 'North' or Region = 'East') AND (Industry= 'Technology' or Industry = 'Manufacturing'), 'Target Segment', 'Secondary Segment') |
| --- | --- | --- | --- | --- |
| 1 | Acme Corp | North | Manufacturing | Target Segment |
| 2 | Beta Ltd | East | Technology | Target Segment |
| 3 | Gamma Inc | West | Retail | Secondary Segment |
| 4 | Delta LLC | North | Technology | Target Segment |
| 5 | Epsilon GmbH | Sound | Healthcare | Secondary Segment |

Из результатов видно, что функция `if` оценивает выражение и возвращает требуемые значения. Например, `Acme Corp` классифицируется как `Target Segment`, потому что он отвечает следующим условиям: входит в регион `North` или `East` и относится к отрасли `Manufacturing` или `Technology`.

## Пример. Оценка данных об инциденте с помощью if

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

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

Обзор

Используйте функцию if, чтобы классифицировать набор данных из отчета об инцидентах.

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

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

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

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

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

  * Date

  * Location

  * Incidents

```
Example:
LOAD * inline [
Date, Location, Incidents
1/3/2016, Beijing, 0
1/3/2016, Boston, 12
1/3/2016, Stockholm, 3
1/3/2016, Toronto, 0
1/4/2016, Beijing, 0
1/4/2016, Boston, 8];
```

Результаты

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

* Дата

* Местоположение

* Инциденты

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

* =if(Incidents&gt;=10, 'Critical', 'Ok' )

* =if(Incidents&gt;=10, 'Critical', If( Incidents&gt;=1 and Incidents&lt;10, 'Warning', 'Ok'))

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

| Date | Location | Incidents | if(Incidents&gt;=10, 'Critical', 'Ok' ) | if(Incidents&gt;=10, 'Critical', If( Incidents&gt;=1 and Incidents&lt;10, 'Warning', 'Ok')) |
| --- | --- | --- | --- | --- |
| 1/3/2016 | Beijing | 0 | Ok | Ok |
| 1/3/2016 | Boston | 12 | Critical | Critical |
| 1/3/2016 | Stockholm | 3 | Ok | Warning |
| 1/3/2016 | Toronto | 0 | Ok | Ok |
| 1/4/2016 | Beijing | 0 | Ok | Ok |
| 1/4/2016 | Boston | 8 | Ok | Warning |

## Пример. Распределение дат по категориям с помощью if

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

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

Обзор

Используйте функцию if, чтобы распределить даты по категориям.

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

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

```
SET FirstWeekDay=0;
Load 
Date(MakeDate(2022)+RecNo()-1) as Date
Autogenerate 14;
```

Результаты

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

* Date

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

* WeekDay(Date)

* =If(WeekDay(Date)&gt;=5,'WeekEnd','Normal Day')

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

| Date | WeekDay(Date) | If(WeekDay(Date)&gt;=5,'WeekEnd','Normal Day') |
| --- | --- | --- |
| 1/1/2022 | Sat | WeekEnd |
| 1/2/2022 | Sun | WeekEnd |
| 1/3/2022 | Mon | Normal Day |
| 1/4/2022 | Tue | Normal Day |
| 1/5/2022 | Wed | Normal Day |
| 1/6/2022 | Thu | Normal Day |
| 1/7/2022 | Fri | Normal Day |
| 1/8/2022 | Sat | WeekEnd |
| 1/9/2022 | Sun | WeekEnd |
| 1/10/2022 | Mon | Normal Day |
| 1/11/2022 | Tue | Normal Day |
| 1/12/2022 | Wed | Normal Day |
| 1/13/2022 | Thu | Normal Day |
| 1/14/2022 | Fri | Normal Day |