# 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` という項目が 1 つあります。

ロード スクリプト

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