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

if 関数は、与えられた条件が True または False のどちらに評価されるかによって異なる値を返します。

[If Function](https://play.vidyard.com/qnkaRddq32LnAGUTTDGdLA)

構文:

if(condition , then [, else])

戻り値データ型： デュアル

引数

| 引数 | 説明 |
| --- | --- |
| condition | 論理的に解釈された数式。 |
| then | 数式は任意の型に指定できます。condition が True の場合、if 関数は then 数式の値を返します。 |
| else | 数式は任意の型に指定できます。condition が False の場合、if 関数は else 数式の値を返します。<br><br>このパラメータはオプションです。condition が False の場合、else を指定しないと NULL が返されます。 |

例: チャートの数式

| 例 | 結果 |
| --- | --- |
| `if( Amount>=<br>						0, 'OK', 'Alarm' )` | この数式は、Amount が正の数 (0 以上) かどうかテストし、正の数であれば `OK` を返します。Amount が 0 未満であれば、`Alarm` を返します。 |

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

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

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

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

概要

If は、他のメソッドやオブジェクト (変数を含む) とともにロード スクリプトで使用できます。この例では、`threshold` 変数を使用し、しきい値に基づく新しい項目をデータ モデルに含めます。

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

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

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

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

  * `Transaction_Buckets`: `transaction_id` 項目を含み、`if` 関数を使用して新しい項目 `[Compared to Threshold]` を作成し、`transaction_amount` 項目と `threshold` 変数設定を比較します。

* `threshold` 変数ステートメントが `100` に設定されます。

ロード スクリプト

```
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
];
 
set threshold = 100;
					
/* Create new table called Transaction_Buckets 
Compare transaction_amount field from Transaction table to threshold of 100.
Output results into a new field called Compared to Threshold
 */

Transaction_Buckets:
Load
   transaction_id,
   If(transaction_amount > $(threshold),'Greater than $(threshold)','Less than $(threshold)') as [Compared to Threshold]
Resident Transactions;
```

結果

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

* `transaction_id`

* `[Compared to Threshold]`

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

| transaction\_id | しきい値と比較 |
| --- | --- |
| 3750 | 100 未満 |
| 3751 | 100 超 |
| 3752 | 100 未満 |
| 3753 | 100 超 |
| 3754 | 100 超 |
| 3756 | 100 未満 |
| 3757 | 100 超 |

## 例 - if を使用して製品データを評価する

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

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

* `=If(ProductCategory =  'Toiletries' or ProductCategory =  'Fruits', 'Consumable', 'Other')`、必要な値を返します。

結果テーブル

| ProductID | ProductName | ProductCategory | If(ProductCategory = 'Toiletries' or ProductCategory = 'Fruits', 'Consumable', 'Other') |
| --- | --- | --- | --- |
| 1 | Laptop | Electronics | Other |
| 2 | Banana | Fruits | Consumable |
| 3 | Shampoo | Toiletries | Consumable |
| 4 | TV | Electronics | Other |
| 5 | Apple | Fruits | Consumable |

結果から、`if` 関数が数式を評価し、必要な値を返すことがわかります。たとえば、`Fruits` または `Toiletries` カテゴリの製品は `Consumable` として分類されます。

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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/if.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((Region = 'North' or Region = 'East') AND (Industry= 'Technology' or Industry = 'Manufacturing'), 'Target Segment', 'Secondary Segment')`、必要な値を返します。

結果テーブル

| ClientID | ClientName | Region | Industry | If((Region = 'North' or Region = 'East') AND (Industry= 'Technology' or Industry = '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 | Sound | Healthcare | Secondary Segment |

結果から、`if` 関数が数式を評価し、必要な値を返すことがわかります。たとえば、`Acme Corp` は、`North` または `East` 地域および `Manufacturing` または `Technology` 業界の一部となる要件を満たしているため、`Target Segment` に分類されます。

## 例 - if を使用してインシデント データを評価する

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

#### チャートの数式

概要

if 関数を使用して、インシデント レポートのデータセットを分類します。

ロード スクリプト

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

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

* 「Example」というデータ テーブルにロードされるデータセット。

* データ テーブル内の次の項目:

  * Date

  * Location

  * Incidents

```
Example:
LOAD * inline [
Date, Location, Incidents
1/3/2016, Beijing, 0
1/3/2016, Boston, 12
1/3/2016, Stockholm, 3
1/3/2016, Toronto, 0
1/4/2016, Beijing, 0
1/4/2016, Boston, 8];
```

結果

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

* Date

* 場所

* インシデント

次の計算軸を作成します。

* =if(Incidents&gt;=10, 'Critical', 'Ok' )

* =if(Incidents&gt;=10, 'Critical', If( Incidents&gt;=1 and Incidents&lt;10, 'Warning', 'Ok'))

結果テーブル

| Date | Location | Incidents | if(Incidents&gt;=10, 'Critical', 'Ok' ) | if(Incidents&gt;=10, 'Critical', If( Incidents&gt;=1 and Incidents&lt;10, 'Warning', 'Ok')) |
| --- | --- | --- | --- | --- |
| 1/3/2016 | Beijing | 0 | Ok | Ok |
| 1/3/2016 | Boston | 12 | Critical | Critical |
| 1/3/2016 | Stockholm | 3 | Ok | Warning |
| 1/3/2016 | Toronto | 0 | Ok | Ok |
| 1/4/2016 | Beijing | 0 | Ok | Ok |
| 1/4/2016 | Boston | 8 | Ok | Warning |

## 例 - if を使用して日付を分類する

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

#### チャートの数式

概要

if 関数を使用して日付を分類します。

ロード スクリプト

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

```
SET FirstWeekDay=0;
Load 
Date(MakeDate(2022)+RecNo()-1) as Date
Autogenerate 14;
```

結果

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

* Date

次の計算軸を作成します。

* WeekDay(Date)

* =If(WeekDay(Date)&gt;=5,'WeekEnd','Normal Day')

結果テーブル

| Date | WeekDay(Date) | If(WeekDay(Date)&gt;=5,'WeekEnd','Normal Day') |
| --- | --- | --- |
| 1/1/2022 | Sat | WeekEnd |
| 1/2/2022 | Sun | WeekEnd |
| 1/3/2022 | Mon | Normal Day |
| 1/4/2022 | Tue | Normal Day |
| 1/5/2022 | Wed | Normal Day |
| 1/6/2022 | Thu | Normal Day |
| 1/7/2022 | Fri | Normal Day |
| 1/8/2022 | Sat | WeekEnd |
| 1/9/2022 | Sun | WeekEnd |
| 1/10/2022 | Mon | Normal Day |
| 1/11/2022 | Tue | Normal Day |
| 1/12/2022 | Wed | Normal Day |
| 1/13/2022 | Thu | Normal Day |
| 1/14/2022 | Fri | Normal Day |