# 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` 是函數中的第一個參數，並傳回所有含有 `1` 之 `CategoryCode` 的產品。

## 範例 - 使用 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` 是函數中的第一個參數，並傳回所有含有 `1` 之 `RegionCode` 的國家。

## 範例 - 合併 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 |