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

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

Синтаксис:

mixmatch( str, expr1 [ , expr2,...exprN ])

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

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

Аргументы

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

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

| Пример | Результат |
| --- | --- |
| `mixmatch( ColorCode,'black','Blue' )` | Это выражение возвращает `1`, если значение `ColorCode` равно `Black`, или `2`, если значение `ColorCode` равно `Blue`. |
| `mixmatch( Cities,'toronto','Boston','Beijing','Zurich' )` | Это выражение возвращает индекс совпадений со значением в поле `Cities`. |

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

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/mixmatch.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`

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

* `=mixmatch(ProductCategory,'Toiletries', 'Fruits')`, возвращает индекс, если `ProductCategory` равно `Toiletries` или `Fruits`.

* `=If(mixmatch(ProductCategory, 'Toiletries', 'Fruits'), 'Consumable', 'Other')`, чтобы преобразовать совпадение `ProductCategory` с `Toiletries` или `Fruits` в `Consumable`. Если совпадений не найдено, возвращается `Other`.

Примечание к информацииФункция `mixmatch` возвращает ненулевое положительное значение, если найдено хотя бы одно совпадение, и ноль, если совпадение не найдено. В свою очередь, оператор `if` интерпретирует ненулевые результаты как `true`, а нулевые – как `false`. Комбинируя оператор `if` с функциями `mixmatch`, `wildmatch` или `match`, можно легко расшифровать совпадения и несовпадения.

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

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

Функция `mixmatch` возвращает индекс для искомой строки в первой мере. Во второй мере этот результат используется в функции `If`, с помощью которой реализуется пользовательский запрос. Необходимо учитывать, что функция `mixmatch` не чувствительна к регистру.

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/mixmatch.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(mixmatch(Region, 'North', 'East') AND mixmatch(Industry, 'Technology', 'Manufacturing'), 'Target Segment', 'Secondary Segment')`, чтобы вернуть индекс по строке поиска. Если есть совпадение, возвращается `Target Segment`. Если совпадений нет, возвращается `Secondary Segment`.

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

| ClientID | ClientName | Region | Industry | If(mixmatch(Region, 'North', 'East') AND mixmatch(Industry, 'Technology', '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 | South | healthcare | Secondary Segment |

Функция `mixmatch` ищет требуемый текст и возвращает индекс, который затем может быть использован для дополнительного анализа и классификации данных. Например, `Acme Corp` классифицируется как `Target Segment`, потому что он отвечает условиям поиска в функции `mixmatch` в полях `Region` и `Industry`. Необходимо учитывать, что функция `mixmatch` не чувствительна к регистру.

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

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

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

Обзор

Функцию mixmatch можно использовать для загрузки подмножества данных. К примеру, можно вернуть числовое значение выражения в функции. Затем можно ограничить загруженные данные по числовому значению. При отсутствии совпадений функция Mixmatch возвращает 0. Таким образом, в данном примере все выражения, для которых не были найдены совпадения, вернут 0 и будут исключены из загрузки данных при помощи оператора `WHERE`.

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

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

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

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

  * `Transaction_Buckets`: создает два новых поля `Customer` и `Color Code - Black, Blue, blue`. Оператор `where` загружает результаты из функции `mixmatch`.

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

```
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
];

/*
Create new table called Transaction_Buckets
Create new fields called Customer, and Color code - Black, Blue, blue
Load Transactions table.
Mixmatch returns 1 for 'Black', 2 for 'Blue'. 
Also returns 3 for 'blue' because mixmatch is not case sensitive.
Only values that returned numeric value greater than 0 
are loaded by WHERE statement into Transactions_Buckets table.
*/

Transaction_Buckets:
Load
   customer_id, 
   customer_id as [Customer],
   color_code as [Color Code - Black, Blue, blue]
Resident Transactions
Where mixmatch(color_code,'Black','Blue') > 0;
```

Результаты

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

* `[Color Code - Black, Blue, blue]`

* `Customer`

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

| Color Code - Black, Blue, blue | Customer |
| --- | --- |
| Black | 203521 |
| Black | 3036491 |
| Blue | 2038593 |
| blue | 5646471 |

## Пример: выражение диаграммы, использующее mixmatch

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

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

Обзор

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

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

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

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

  * Cities

  * Count

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

```
Example:
Load * inline [Cities, Count
Toronto, 123
Toronto, 234
Toronto, 231
Boston, 32
Boston, 23
Boston, 1341
Beijing, 234
Beijing, 45
Beijing, 235
Stockholm, 938
Stockholm, 39
Stockholm, 189
zurich, 2342
zurich, 9033
zurich, 0039];
```

Результаты

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

* Cities

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

* Используйте =mixmatch( Cities,'Toronto','Boston','Beijing','Zurich'), чтобы вернуть индекс по строке поиска.

* Используйте =mixmatch( Cities,'Toronto','Boston','Beijing','Stockholm','Zurich'), чтобы вернуть индекс по строке поиска.

* Выражение =Cities & ' - ' & mixmatch ( Cities, 'Toronto','Boston', 'Beijing','Stockholm','Zurich') позволяет вернуть значение поля Cities и индекс по строке поиска.

Первая мера в таблице ниже возвращает 0 для значения Stockholm, так как Stockholm не входит в список, перечисленный в выражении в функции mixmatch. Она также возвращает 4 для значения Zurich, потому что сравнение mixmatch чувствительно к регистру.

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

| Cities | mixmatch( Cities,'Toronto','Boston','Beijing','Zurich') | mixmatch( Cities,'Toronto','Boston','Beijing','Stockholm','Zurich') | Cities & ' - ' & mixmatch ( Cities, 'Toronto','Boston', 'Beijing','Stockholm','Zurich') |
| --- | --- | --- | --- |
| Beijing | 3 | 3 | Beijing - 3 |
| Boston | 2 | 2 | Boston - 2 |
| Stockholm | 0 | 4 | Stockholm - 4 |
| Toronto | 1 | 1 | Toronto - 1 |
| zurich | 4 | 5 | zurich - 5 |

## Пример. Выражение для сортировки, использующее mixmatch

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

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

Обзор

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

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

Результаты

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

* Cities

Результирующая таблица со стандартным порядком сортировки

| Cities |
| --- |
| Beijing |
| Boston |
| Stockholm |
| Toronto |
| zurich |

Чтобы изменить порядок сортировки, выполните следующее:

1. Откройте раздел Сортировка диаграммы на панели Свойства.

2. Выключите автоматическую сортировку столбца, для которого необходимо применить пользовательскую сортировку.

3. Снимите флажки Сортировать по численным значениям и Сортировать по алфавиту .

4. Выберите Сортировка по выражению и введите выражение следующего вида:

   =mixmatch( Cities, 'Toronto','Boston','Beijing','Stockholm','Zurich')

   Порядок сортировки столбца Cities будет изменен.

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

| Cities |
| --- |
| Toronto |
| Boston |
| Beijing |
| Stockholm |
| zurich |

## Подробнее

* [match — функция скриптa и диаграммы](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)
* [wildmatch — функция скриптa и диаграммы](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/wildmatch.htm)