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

Dual() объединяет число и строку в одной записи таким образом, что число, представляющее строку, можно использовать для сортировки и вычислений, а значение строки может использоваться для отображения.

[Dual Function](https://play.vidyard.com/vNa9jcN6DizzYQ1hDZ5VAr)

Синтаксис:

Dual(text, number)

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

Примечание к информацииВсе двойные возвращаемые значения выравниваются по правому краю.

Аргументы

| Аргумент | Описание |
| --- | --- |
| text | Значение строки, которое будет использоваться вместе с числовым аргументом. |
| number | Число, которое будет использоваться вместе со строкой в строковом аргументе. |

В программе Qlik Sense все значения полей потенциально являются двойными. Это означает, что значения полей могут иметь как числовое, так и текстовое значения. Примером служит дата, которая может иметь числовое значение 40908 и текстовое представление '2011-12-31'.

Примечание к информацииЕсли несколько элементов данных, переданных в одно поле, имеют разные строковые представления, но одно действительное числовое представление, то все они будут использовать первое найденное строковое представление.

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

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

| Пример | Описание |
| --- | --- |
| `Dual(IF(DayOfWeek = 0, 'Monday',`<br>`IF(DayOfWeek = 1, 'Tuesday',`<br>`If(DayOfWeek = 2 ,'Wednesday',`<br>`If(DayOfWeek = 3 ,'Thursday',		If(DayOfWeek = 4 ,'Friday',		If(DayOfWeek = 5 ,'Saturday',		 If(DayOfWeek = 6 ,'Sunday'`<br>`))))))), DayOfWeek)` | Поле `DayOfWeek` можно использовать в визуализации, например, как измерение. В таблице дни недели автоматически сортируются в правильной числовой последовательности, а не по алфавиту. |
| `Dual(Pick( Priority , 'Low','Medium','High'), Priority)` | Поле `Priority` можно использовать в визуализации, например, как измерение. В таблице поле `Priority` автоматически сортируется в правильной числовой последовательности, а не по алфавиту. |
| `Dual('Q' & Ceil(Month(Date)/3), Ceil(Month(Date)/3))` | Поле `Date` можно использовать в визуализации, например, как измерение. Создаются текстовые значения `Q1` ― `Q4`, которым присваиваются числовые значения `1` ― `4`. |
| `Dual(WeekYear(Date) & '-W' & Week(Date), WeekStart(Date))` | Поле `Date` можно использовать в визуализации, например, как измерение. В этом примере создаются текстовые значения в форме `'2012-W22'` и в то же время присваивает числовое значение в соответствии с числом даты первого дня недели, например: `41057`. |

Пример: скрипты загрузки

| Пример | Описание |
| --- | --- |
| Добавьте следующие примеры в скрипт и запустите его.<br><br>`Load dual ( NameDay,NumDay ) as DayOfWeek inline` `[ NameDay,NumDay` `Monday,0` `Tuesday,1` `Wednesday,2` `Thursday,3` `Friday,4` `Saturday,5` `Sunday,6 ];` | Поле `DayOfWeek` можно использовать в визуализации, например, как измерение. В таблице дни недели автоматически сортируются в правильной числовой последовательности, а не по алфавиту. |
| `Load<br>Dual('Q' & Ceil(Month(Now())/3), Ceil(Month(Now())/3)) as Quarter<br>AutoGenerate 1;` | В этом примере выполняется определение текущего квартала. Это значение отображается как `Q1`, если функция Now запускается в первые три месяца года, `Q2` — для вторых трех месяцев и так далее. Однако при использовании в сортировке поле `Quarter` будет вести себя как числовое значение: от 1 до 4. |
| `Dual('Q' & Ceil(Month(Date)/3), Ceil(Month(Date)/3)) as Quarter` | Как и в предыдущем примере, поле `Quarter` создается с текстовыми значениями от `Q1` до `Q4`, и ему назначаются числовые значения от `1` до `4`. Для использования в скрипте необходимо загрузить значения для параметра `Date`. |
| `Dual(WeekYear(Date) & '-W' & Week(Date), WeekStart(Date)) as YearWeek` | В этом примере создается поле `YearWeek` с текстовыми значениями вида `2012-W22` и в то же время присваивает числовое значение в соответствии с числом даты первого дня недели, например: `41057`. Для использования в скрипте необходимо загрузить значения для параметра `Date`. |

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

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

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

Обзор

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

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

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

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

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

  * `DayOfWeek`
  * `NoOfCalls`

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

```
Example:
Load * inline [
DayOfWeek, NoOfCalls
0, 25000
1, 30000
2, 27500
3, 32000
4, 23250
5, 28950
6, 32350
];
```

Результаты

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

1. В выражении измерения добавьте следующее:

   ```
   =Dual(IF(DayOfWeek = 0, 'Monday',
   IF(DayOfWeek = 1, 'Tuesday',
   If(DayOfWeek = 2 ,'Wednesday',
   If(DayOfWeek = 3 ,'Thursday',
   If(DayOfWeek = 4 ,'Friday',
   If(DayOfWeek = 5 ,'Saturday',
   If(DayOfWeek = 6 ,'Sunday'
   ))))))), DayOfWeek) 
   ```

2. Этот метод более эффективен. В выражении измерения добавьте следующее:

   ```
   =Dual(pick( DayOfWeek +1 , 'Monday','Tuesday','Wednesday', 'Thursday','Friday', 'Saturday','Sunday' ), DayOfWeek)
   ```

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

* `=Sum(NoOfCalls)`, чтобы вычислить количество звонков.

Результаты: линейчатая диаграмма, отображающая количество звонков по дням недели

Результаты: линейчатая диаграмма, отображающая количество звонков по дням недели

Результаты: линейчатая диаграмма, отображающая количество звонков по дням недели ![Линейчатая диаграмма с измерением, созданным с помощью функции Dual в выражении измерения](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Resources/Images/dual-barchart.png)

На линейчатой диаграмме показано количество звонков по дням недели. Дни недели автоматически сортируются в правильном порядке.

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

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

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

Обзор

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

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

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

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

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

  * ResponseType
  * NoOfResponses

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

```
Example:
Load * inline [
ResponseType, NoOfResponses
1, 350
2, 560
3, 4350
4, 2350
5, 5350
];
```

Результаты

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

* =Dual(pick( ResponseType , 'Very Bad','Bad','Average', 'Good','Very Good'), ResponseType)

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

* =Sum(NoOfResponses), чтобы вычислить количество ответов.

Результаты: линейчатая диаграмма, показывающая количество ответов по типам ответов

Результаты: линейчатая диаграмма, показывающая количество ответов по типам ответов

Результаты: линейчатая диаграмма, показывающая количество ответов по типам ответов ![Линейчатая диаграмма с измерением, созданным с помощью функции Dual в выражении измерения](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Resources/Images/dual-barchart2.png)

Линейчатая диаграмма показывает количество ответов по их типу Обратите внимание, что полосы автоматически сортируются от отрицательных к положительным. Типу ответа, который представляет собой числовое значение, присвоено текстовое описание.