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

alt 関数は、有効な数値表現を持つ最初のパラメータを返します。一致が見つからない場合は、最後のパラメータを返します。任意の数のパラメータを使用できます。

構文:

alt(expr1[ , expr2 , expr3 , ...] , else)

戻り値データ型： 整数

引数

| 引数 | 説明 |
| --- | --- |
| expr1 | 有効な数値表現を確認する最初の数式。 |
| expr2 | 有効な数値表現を確認する 2 番目の数式。 |
| expr3 | 有効な数値表現を確認する 3 番目の数式。 |
| else | 以前のパラメータに有効な数値表現が存在しない場合に返す値。 |

alt 関数は、数値または日付の変換関数で使用されます。このように、Qlik Sense は、優先順順位に従って異なる日付形式をテストできます。また、数式での NULL 値の処理にも使用できます。

例: チャートの数式

| 例 | 結果 |
| --- | --- |
| `alt( date#(<br>						dat , 'YYYY/MM/DD' ),` `date#( dat<br>						, 'MM/DD/YYYY' ),` `date#( dat<br>						, 'MM/DD/YY' ),` `'No valid<br>						date' )` | この数式は、項目の日付が指定された 3 つの日付形式のいずれかに従っているかどうかをテストします。従っている場合は、元の文字列と日付の有効な数値表現を含むデュアル値を返します。どの形式にも従っていない場合、`No valid date` というテキストが返されます (有効な数値表現は含まれません)。 |
| `alt(Sales,0) + alt(Margin,0)` | この数式は、項目 `Sales` と `Margin` を追加して、すべての欠損値 (NULL) を `0` で置き換えます。 |

## 例 - alt の基本

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

#### チャートの数式

概要

データセットには、不完全な売上データと予測データが含まれています。欠落した値を有効な代替値に置き換えてギャップを埋めます。

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

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

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

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

  * `ID`

  * `Sales`

  * `Forecast`

ロード スクリプト

```
Example:
LOAD * INLINE [
ID, Sales, Forecast
1, 500, 450
2, , 300
3, 200, 250
4, , 400
5, 350,
];
```

結果

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

* `ID`

* `Sales`

* `Forecast`

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

* `=Sum(alt(Sales, Forecast))` は、欠損値を有効な代替値に置き換えて、有効な数値表現を返します。

結果テーブル

| ID | Sales | Forecast | Sum(alt(Sales, Forecast)) |
| --- | --- | --- | --- |
| Totals |  |  | 1750 |
| 1 | 500 | 450 | 500 |
| 2 |  | 300 | 300 |
| 3 | 200 | 250 | 200 |
| 4 |  | 400 | 400 |
| 5 | 350 |  | 350 |

`alt` 関数は、`Sales` 値が欠落している `ID` 行のメジャー計算で `Forecast` 値を返します。欠損値を有効な代替値に置き換えることで、完全に入力されたデータセットを生成できます。

## 例 - alt を使用して欠損値を置き換える

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

#### チャートの数式

概要

ある企業は、複数のセンサーから温度データを収集します。1 つのセンサーから欠落しているデータを、他のセンサーからのデータに置き換えるとします。

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

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

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

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

  * `Time`

  * `Temp_Sensor1`

  * `Temp_Sensor2`

ロード スクリプト

```
Example:
LOAD * INLINE [
Time, Temp_Sensor1, Temp_Sensor2
08:00, 23.5, 24.0
09:00, , 23.8
10:00, 24.1,
11:00, , 24.5
12:00, 23.9, 24.1
];
```

結果

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

* `Time`

* `Temp_Sensor1`

* `Temp_Sensor2`

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

* `=Sum(alt(Temp_Sensor1, Temp_Sensor2))` は有効な数値表現を返します。

結果テーブル

| Time | Temp\_Sensor1 | Temp\_Sensor2 | Sum(alt(Temp\_Sensor1, Temp\_Sensor2)) |
| --- | --- | --- | --- |
| Totals |  |  | 119.8 |
| 08:00 | 23.5 | 24.0 | 23.5 |
| 09:00 |  | 23.8 | 23.8 |
| 10:00 | 24.1 |  | 24.1 |
| 11:00 |  | 24.5 | 24.5 |
| 12:00 | 23.9 | 24.1 | 23.9 |

結果を見ると、`alt` 関数によって、欠落しているセンサー データが他のセンサーからの有効な代替結果に置き換えられていることがわかります。これにより、ギャップが埋められてデータセットが完成します。

## 例 - alt のシナリオ

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

#### チャートの数式

概要

このシナリオでは、`alt` 関数を使用して、欠落値または NULL 値を置き換えるさまざまな方法を示します。

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

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

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

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

  * `ProductID`

  * `ProductName`

  * `SalesAmount`

  * `ReturnAmount`

  * `Profit`

  * `Discount`

  * `Category`

  * `Year`

  * `Region`

  * `CustomerRating`

ロード スクリプト

```
Set NullInterpret = '';
Example:
LOAD * INLINE [
ProductID, ProductName, SalesAmount, ReturnAmount, Profit, Discount, Category, Year, Region, CustomerRating
101, "Laptop", 1200, 200, 500, , "Electronics", 2023, "North",
102, "Tablet", 800, , 300, 50, "Electronics", 2023, "South", 4
103, "Smartphone", 1500, , 600, 100, , 2022, "East", 5
104, "Printer", 400, , , 20, "Accessories", 2021, , 3
105, , 1000, 100, , 30, "Electronics", 2023, "West", 4
106, "Monitor", , 150, 250, , "Accessories", 2022, "North", 5
107, "Keyboard", 200, , 80, 5, , 2022, "South", 2
108, "Mouse", , 50, , , "Accessories", , "East",
109, , 600, , , , "Electronics", 2023, , 4
110, "Headphones", 300, 30, 100, , "Accessories", 2021, "West", 3
];
```

結果

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

* `ProductID`

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

* `=Coalesce( ProductName,  'Unknown Product')`、`ProductName` の値がないすべての製品に `Unknown Product` という説明を提供します。

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

* `=Sum(alt(SalesAmount, ReturnAmount, Profit))`、`SalesAmount` が見つからない場合は有効な数値を返します。

* `=avg(alt(CustomerRating, 3))`、最初に何も提供されていない場合に、有効な標準化された顧客評価を返します。

* `=Sum(alt(Discount, SalesAmount * 0.05))`、有効な割引を返します。

* `=Sum(alt(Profit, SalesAmount * 0.1))`、有効な利益値を返します。

* `=Sum(alt(SalesAmount, avg(TOTAL SalesAmount)))`、有効な売上値を返します。

* `=Sum(alt(Discount, avg(TOTAL Discount)))`、有効な割引値を返します。

結果テーブル

| ProductID | Coalesce( ProductName, 'Unknown Product') | Sum(alt(SalesAmount, ReturnAmount, Profit)) | avg(alt(CustomerRating, 3)) | Sum(alt(Discount, SalesAmount \* 0.05)) | Sum(alt(Profit, SalesAmount \* 0.1)) | Sum(alt(SalesAmount, avg(TOTAL SalesAmount))) | Sum(alt(Discount, avg(TOTAL Discount))) |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 合計 |  | 6200 | 3.6 | 310 | 2030 | 7500 | 410 |
| 101 | Laptop | 1200 | 3 | 60 | 500 | 1200 | 41 |
| 102 | Tablet | 800 | 4 | 50 | 300 | 500 | 50 |
| 103 | Smartphone | 1500 | 5 | 100 | 600 | 800 | 100 |
| 104 | Printer | 400 | 3 | 20 | 40 | 400 | 20 |
| 105 | Unknown Product | 1000 | 4 | 30 | 100 | 1000 | 30 |
| 106 | 監視 | 150 | 5 | 0 | 250 | 750 | 41 |
| 107 | Keyboard | 200 | 2 | 5 | 80 | 200 | 5 |
| 108 | Mouse | 50 | 3 | 0 | 0 | 750 | 41 |
| 109 | Unknown Product | 600 | 4 | 30 | 60 | 600 | 41 |
| 110 | Headphones | 300 | 3 | 15 | 100 | 300 | 41 |

`alt` 関数は、値が欠落している場合に代替値を計算して返すことができるようにします。次の結果を確認します。

* 列 2 は、`Coalesce` 関数を使用して、すべての null 値に対して値 `Unknown Product` を返します。`Alt` 関数は数値にのみ適用されるため、使用できません。

* 列 3 は、`SalesAmount` の値を返します。値が見つからない場合は、`ReturnAmount` の値を返します。`ReturnAmount` の値が見つからない場合は、`Profit` の値を返します。これにより、`SalesAmount` に値がない場合でも、列に値が確実に入力されるようになります。

* 列 4 は、`CustomerRating` を返します。値が見つからない場合は、既定で `3` の値になります。たとえば、製品 `Laptop` には顧客評価がないため、`3` が返されます。次に、メジャーは列の平均を計算します。

* 列 5 には割引値が返されます。値が利用できない場合は、`SalesAmount` 値の 5% として計算されます。

* 列 6 は、`Profit` の値を返します。値が利用できない場合は、`SalesAmount` の 10% を返します。

* 列 7 は、`SalesAmount` を返します。値が指定されていない場合は、データセット全体の平均 `SalesAmount` が返されます。たとえば、`Monitor` と `Mouse` の製品には `SalesAmount` の値がないため、両方ともすべての `SalesAmount` の値の平均である `750` を返します。

* 列 8 は、`Discount` の値を返します。値が見つからない場合は、システムはデータセット全体の平均割引を計算して返します。