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

Функция отбора возвращает выражение n в списке.

[Pick function](https://play.vidyard.com/i2VAER2iYbPyuC46aLGxG3)

Синтаксис:

pick(n, expr1[ , expr2,...exprN])

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

Аргументы

| Аргумент | Описание |
| --- | --- |
| n | n представляет собой целое число от 1 до N. |

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

| Пример | Результат |
| --- | --- |
| `pick( N, 'A','B',4, 6<br><br>						)` | возвращает `B`, если `N` = `2`<br><br>возвращает `4`, если `N` = `3` |

## Пример. Присвоение меток продуктам с помощью pick

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

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

Обзор

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

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

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

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

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

  * `ProductID`

  * `ProductName`

  * `CategoryCode`

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

```
Example:
LOAD * INLINE [
ProductID, ProductName, CategoryCode
1, "Laptop", 1
2, "Headphones", 2
3, "Printer", 3
4, "Smartphone", 1
5, "Tablet", 1
];
```

Результаты

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

* `ProductID`

* `ProductName`

* `CategoryCode`

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

* Используйте `=Pick(CategoryCode, 'Electronics', 'Accessories', 'Office Equipment')`, чтобы вернуть допустимое выражение из списка.

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

| ProductID | ProductName | CategoryCode | Pick(CategoryCode, 'Electronics', 'Accessories', 'Office Equipment') |
| --- | --- | --- | --- |
| 1 | Laptop | 1 | Electronics |
| 2 | Headphone | 2 | Accessories |
| 3 | Printer | 3 | Office Equipment |
| 4 | Smartphone | 1 | Electronics |
| 5 | Tablet | 1 | Electronics |

Функция `pick` возвращает список значений, связанных с соответствующим индексом из числового поля `CategoryCode`. Например, метка `Electronics` является первым параметром в функции и возвращается для всех продуктов, у которых `CategoryCode` равно `1`.

## Пример. Присвоение меток регионам с помощью pick

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

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

Обзор

Набор данных содержит коды стран и регионов. Необходимо назначить метки регионов странам на основе кода региона.

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

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

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

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

  * `Country`

  * `RegionCode`

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

```
Example:
LOAD * INLINE [
Country, RegionCode
"USA", 1
"Canada", 1
"Germany", 2
"Japan", 3
"Australia", 4
];
```

Результаты

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

* `Country`

* `RegionCode`

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

* Используйте `=Pick(RegionCode, 'North America', 'Europe', 'Asia', 'Australia')`, чтобы вернуть допустимый элемент из списка.

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

| Country | RegionCode | Pick(RegionCode, 'North America', 'Europe', 'Asia', 'Australia') |
| --- | --- | --- |
| Australia | 4 | Australia |
| Canada | 1 | North America |
| Germany | 2 | Europe |
| Japan | 3 | Asia |
| USA | 1 | North America |

Функция `pick` возвращает список значений, связанных с соответствующим индексом из числового поля `RegionCode`. Например, метка `North America` является первым параметром в функции и возвращается для всех стран, у которых `RegionCode` равен `1`.

## Пример. Сопоставление списков совпадений в альтернативном тексте с помощью комбинации pick и match

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

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

Обзор

Этот расширенный сценарий описывает, как можно эффективно использовать комбинацию функций `pick` и `match` для сопоставления текстовых строк. В терминах программирования такой сценарий выполняет ту же функцию, что и оператор `Case`. Сценарий описывает эту функциональность, сопоставляя названия стран с региональными эквивалентами; по умолчанию возвращается значение `Region` для всех строк `Country`, у которых ранее не было сопоставлений.

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

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

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

  * Одно поле в таблице данных называется `Country`.

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

```
Countries:
LOAD * INLINE [
Country
"USA"
"Canada"
"Germany"
"Japan"
"Australia"
"South Africa"
];
```

Результаты

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

* `Country`

* `RegionCode`

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

* `=Pick(1+match(Country,'USA','Canada','Germany','Japan','Australia'), 'Unmapped', 'North America', 'North America', 'Europe', 'Asia', 'Australia')`

Функция `match` вернет индекс совпадений с представленным списком альтернативных вариантов, разделенных запятыми, начиная с `1 = ‘USA’`, `2 = ‘Canada’` и так далее. Если совпадений не найдено, возвращается ноль. Затем этот результат увеличивается на `1` и передается в функцию `pick`, а затем `1 = default value`, если совпадений не найдено, `2 = ‘USA’`, `3 = ‘Canada’` и так далее.

Комбинируя вызовы функций `Match` и `Pick`, затем можно преобразовать совпадающие имена `Country` в соответствующие эквивалентные имена `Region`. В случае отсутствия сопоставления со значением `Country` будет возвращено значение по умолчанию `Region`, `Unmapped`.

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

| Country | Pick(1+match(Country,'USA','Canada','Germany','Japan','Australia'), 'Unmapped', 'North America', 'North America', 'Europe', 'Asia', 'Australia') |
| --- | --- |
| Australia | Australia |
| Canada | North America |
| Germany | Europe |
| Japan | Asia |
| South Africa | Unmapped |
| USA | North America |