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

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

Синтаксис:

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

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

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

Аргументы

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

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

| Пример | Результат |
| --- | --- |
| `match( ColorCode,'Blue','Black' )` | Это выражение возвращает индекс совпадений с полем `ColorCode`. Если в поле `ColorCode` есть значение `Blue`, выражение возвращает `1`. Если в поле `ColorCode` есть значение `Black`, выражение возвращает `2`. Если совпадений не найдено, возвращается `0`. |
| `match( Region, 'North', 'East' )` | Это выражение возвращает индекс совпадений с полем `Region`. Если в поле `Region` есть значение `North`, выражение возвращает `1`. Если в поле `Region` есть значение `East`, выражение возвращает `2`. Если совпадений не найдено, возвращается `0`. |

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

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

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

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

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

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

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

| ProductID | ProductName | ProductCategory | match(ProductCategory,'Toiletries', 'Fruits') | If(match(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 |

Функция `match` возвращает индекс строки поиска в первой мере. Во второй мере этот результат применяется в функции `If` для классификации продуктов как `Consumable` или `Other`.

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

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

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

| ClientID | ClientName | Region | Industry | IF(match(Region, 'North', 'East') AND match(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 |

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

## Пример. Скрипт загрузки, использующий match

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

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

Обзор

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

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

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

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

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

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

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

```
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 Blue and Black
Load Transactions table.
Match returns 1 for 'Blue', 2 for 'Black'. 
Does not return a value for 'blue' because match is 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 Blue and Black]
Resident Transactions
Where match(color_code,'Blue','Black') > 0; 
```

Результаты

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

* `[Color Code Blue and Black]`

* `Customer`

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

| Color Code Blue and Black | Customer |
| --- | --- |
| Black | 203521 |
| Black | 3036491 |
| Blue | 2038593 |

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

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

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

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

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

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

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

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

| Cities | match( Cities,'Toronto','Boston','Beijing','Zurich') | match( Cities,'Toronto','Boston','Beijing','Stockholm','zurich') | Cities & ' - ' & match ( 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 | 0 | 5 | zurich - 5 |

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

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

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

Обзор

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

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

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

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

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

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

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

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

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

   =match( Cities, 'Toronto','Boston','Beijing','Stockholm','zurich')

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

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

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

## Подробнее

* [mixmatch Функция скрипта и диаграммы](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/mixmatch.htm)
* [wildmatch Функция скрипта и диаграммы](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/wildmatch.htm)