# mixmatch スクリプトおよびチャート関数

mixmatch 関数は、最初のパラメーターとそれに続くすべてのパラメーターを比較し、一致した数式の数値の場所を返します。比較では大文字と小文字は区別されず、日本語のひらがなとカタカナも区別されません。

構文:

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

戻り値データ型： 整数

大文字と小文字を区別して比較する場合は、match 関数を使用します。大文字と小文字を区別せずにワイルドカードを使用して比較する場合は、wildmatch 関数を使用します。

引数

| 引数 | 説明 |
| --- | --- |
| str | 評価される文字列。 |
| expr1 | 有効な数値表現を確認する最初の数式。 |
| expr2 | 有効な数値表現を確認する 2 番目の数式。 |
| expr3 | 有効な数値表現を確認する 3 番目の数式。 |

例: チャートの数式

| 例 | 結果 |
| --- | --- |
| `mixmatch( ColorCode,'black','Blue' )` | この数式は、`ColorCode` の値が `Black` の場合は `1` を、`ColorCode` の値が `Blue` の場合は `2` を返します。 |
| `mixmatch( Cities,'toronto','Boston','Beijing','Zurich' )` | この数式は、`Cities` 項目の値と一致するアイテムのインデックスを返します。 |

このトピックの例のいくつかは、インライン ロードを使用しています。詳細については、「[インライン ロードを使用したデータのロード](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)」を参照してください。

## 例 - mixmatch を使用して製品を分類する

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

#### チャートの数式

概要

データ セットには製品データが含まれています。 消耗品である製品を識別し、分類しようとしています。

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

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

次のメジャーを作成します:

* `=mixmatch(ProductCategory,'Toiletries', 'Fruits')`、`ProductCategory` の値が `Toiletries` または `Fruits` であるインデックスを返します。

* `=If(mixmatch(ProductCategory, 'Toiletries', 'Fruits'), 'Consumable', 'Other')`、`ProductCategory` マッチを `Toiletries` または `Fruits` に対して `Consumable` として翻訳します。一致するものが見つからない場合は、`Other` が返されます。

情報メモ`mixmatch` 関数は、一致が見つかった場合はゼロ以外の正の値を返し、一致が見つからなかった場合はゼロを返します。`if` ステートメントは、ゼロ以外の結果を `true` として解釈し、ゼロの結果を `false` として解釈します。`if` ステートメントを `mixmatch`、`wildmatch`、または `match` 関数と組み合わせることで、一致と不一致を簡単にデコードできます。

結果テーブル

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

`mixmatch` 関数は、最初のメジャー内の検索文字列のインデックスを返します。2 番目のメジャーでは、この結果が `If` 関数で使用され、カスタム結果が提供されます。`mixmatch` 関数では大文字と小文字が区別されないことに注意してください。

## 例 - mixmatch を使用してクライアント データを評価および分類する

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/mixmatch.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(mixmatch(Region, 'North', 'East') AND mixmatch(Industry, 'Technology', 'Manufacturing'), 'Target Segment', 'Secondary Segment')`、検索文字列のインデックスを返します。見つかった場合は、`Target Segment` が返されます。見つからなった場合は、`Secondary Segment` が返されます。

結果テーブル

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

`mixmatch` 関数はテキストを検索し、追加の分析やデータ分類を実行するために使用できるインデックスを返します。例えば、`Acme Corp` は、`Region` と `Industry` の両方の項目について、`mixmatch` 関数の検索条件を満たしているため、`Target Segment` として分類されます。`mixmatch` 関数では大文字と小文字が区別されないことに注意してください。

## 例 - mixmatch を使用したロード スクリプト

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

#### ロード スクリプト

概要

mixmatch を使用してデータのサブセットをロードできます。たとえば、関数内の数式の数値を返すことができます。次に、その数値に基づいてロードされるデータを制限できます。一致がない場合、Mixmatch は 0 を返します。したがって、この例で一致しないすべての数式は 0 を返し、`WHERE` ステートメントによるデータ ロードから除外されます。

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 2 つのデータ テーブルにロードされるデータセットは、次のように呼ばれます。

  * `Transactions`: トランザクション項目を含みます

  * `Transaction_Buckets`: 2 つの新しい項目 `Customer` と `Color Code - Black, Blue, blue` を作成します。`where` ステートメントは、`mixmatch` 関数から結果をロードします。

ロード スクリプト

```
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 - Black, Blue, blue
Load Transactions table.
Mixmatch returns 1 for 'Black', 2 for 'Blue'. 
Also returns 3 for 'blue' because mixmatch is not 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 - Black, Blue, blue]
Resident Transactions
Where mixmatch(color_code,'Black','Blue') > 0;
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `[Color Code - Black, Blue, blue]`

* `Customer`

ロード スクリプトで mixmatchmixmatch 関数を使用した出力を示す結果テーブル。

| Color Code - Black, Blue, blue | Customer |
| --- | --- |
| Black | 203521 |
| Black | 3036491 |
| Blue | 2038593 |
| blue | 5646471 |

## 例: mixmatch を使用したチャートの数式

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

次のメジャーを作成します:

* =mixmatch( Cities,'Toronto','Boston','Beijing','Zurich')、検索文字列のインデックスを返します。

* =mixmatch( Cities,'Toronto','Boston','Beijing','Stockholm','Zurich')、検索文字列のインデックスを返します。

* =Cities & ' - ' & mixmatch ( Cities, 'Toronto','Boston', 'Beijing','Stockholm','Zurich')、Cities 項目と検索文字列のインデックスを返します。

以下のテーブルの最初のメジャーは、Stockholm が mixmatch 関数の式のリストに含まれていないため、Stockholm に対して 0 を返します。mixmatch の比較では大文字と小文字が区別されないため、Zurich に対しても 4 が返されます。

結果テーブル

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

## 例: mixmatch を使用したカスタム ソート数式

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

#### チャートの数式

概要

mixmatch を使用して、1 つの数式のカスタム ソートを実行できます。この例では、前の例と同じデータセットを使用します。

既定では、列はデータに応じて数値順またはアルファベット順に並べ替えられます。

結果

データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:

* Cities

既定の並べ替え順序を示す結果テーブル

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

並べ替え順序を変更するには、次の手順を実行します。

1. プロパティ パネルで、グラフの [ソート] セクションを開きます。

2. カスタム ソートを適用する列の自動ソートをオフにします。

3. [数値によるソート] および [アルファベット順でソート] チェックボックスをオフにします。

4. [数式によるソート] を選択し、次に似た数式を入力します。

   =mixmatch( Cities, 'Toronto','Boston','Beijing','Stockholm','Zurich')

   Cities 列のソート順序が変更されます。

mixmatchmixmatch 関数を使用したソート順を示す結果テーブル

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

## 詳細を見る

* [match スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)
* [wildmatch スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/wildmatch.htm)