# pick - 脚本和图表功能

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>						)` | 如果`N` = `2`，则返回 `B`<br><br>如果`N` = `3`，则返回 `4` |

## 示例 - 使用 pick 向产品分配标签

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

#### 图表表达式

概览

这个高级场景描述了如何有效地使用 `pick` 和 `match` 函数的组合来在线映射文本匹配项。在程序设计中，其作用类似于 `Case` 语句。该场景通过将国家名称映射到地区等效名称来探索此功能，同时为任何以前未映射的 `Country` 名称提供默认 `Region` 值。

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `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 |