# データ ロード エディタでの変数の使用

Qlik Senseの変数は、数値や英数字などの静的な値または計算を格納するコンテナです。アプリケーションで変数を使用する場合、変数の値を変えると、その変数が使用されているすべての箇所に変更が反映されます。 変数は、変数の概要で定義するか、データ ロード エディターを使用してスクリプト内に定義します。データ ロード スクリプトで Let または Set ステートメントを使用して、変数の値を設定します。

ヒント メモシートの編集時には、変数の概要にある Qlik Sense 変数を使用して作業することもできます。 [数式での変数の使用](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/work-with-variables.htm)



## 概要

変数値の最初の文字が等記号 (=) の場合、Qlik Sense は値を式 (Qlik Sense 式) として評価し、式の実際のテキストではなく結果を表示または返します。

変数を使用すると、変数の代わりにその値が使用されます。変数はドル記号展開用のスクリプトやさまざまな制御ステートメントで使用できます。例えば、パスのように、同じ文字列がスクリプト内に何度も繰り返し出てくる場合に便利です。

一部の特別なシステム変数は、スクリプトの実行開始時に、以前の値とは関係なく Qlik Sense によって設定されます。

## 変数の定義

変数は、静的な値または計算の結果を格納する機能を提供します。変数を定義するときは、次の構文を使用してください。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-variables-in-data-load-editor.htm)[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-variables-in-data-load-editor.htm)set variablename = string

または

let variable = expression

Set ステートメントは文字列の割り当てに使用されます。等号の右側のテキストを変数に割り当てます。Let ステートメントは、スクリプトの実行時に等号の右側にある数式を評価し、数式の結果を変数に割り当てます。

変数では大文字と小文字が区別されます。

情報メモQlik Senseでは、変数に項目や関数と同じ名前を付けることは推奨されていません。

`set x =  3 + 4; //` 変数は、値として文字列「3 + 4」を取得します。

`let x = 3 + 4; //` は値として 7 を返します。

`set x = Today(); //` は値として「Today()」を返します。

`let x = Today(); //` は今日の日付を値として返します (例: 「9/27/2021」)。

### 変数の名前

ベストプラクティスとして、アプリケーション内で作成する変数の命名規則を標準化することを検討してください。たとえば、すべての変数名が「v 」で始まるようにします。例: vUserText。これにより、変数が変数としてすぐに認識され、メジャー、項目、関数と区別されるようになります。

## 変数を定義する際の追加オプション

このセクションでは、ロード スクリプトで定義する変数の機能を強化するために使用できる追加機能について説明します。

### 変数値を制約する

スクリプト変数を特定の定義に制限し、不要な値がロードされるのを防ぐために、Constrain ステートメントを使用できます。品質保証、スクリプトの共同開発中のコラボレーションの改善、および分析アプリケーションのセキュリティ強化のために、Constrain ステートメントを使用できます。Qlik Cloud では、Constrain ステートメントは、開発者向け API と組み合わせて使用することで、動的なリロード時の変数更新にも使用できます。

詳細については、「[Constrain](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)」を参照してください。

### スクリプト専用変数を定義する

ScriptOnlyVariables システム変数を使用して、スクリプト専用変数を設定できます。スクリプト専用変数はロード スクリプトでのみ使用でき、アプリケーションのシート表示などには表示されません。

詳細については、「[ScriptOnlyVariables](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/ScriptOnlyVariables.htm)」を参照してください。

### 変数をドロップする

Drop variable ステートメントを使用すると、スクリプト内の変数をドロップできます。変数のドロップは、データ モデルのコンテキスト内での計算実行や項目定義のためだけに変数を使用する場合に役立ちます。

詳細については、「[Drop variable](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Drop-Variable.htm)」を参照してください。

## 変数の削除

スクリプトから変数を削除してデータをリロードすると、変数はそのままアプリケーションに残ります。アプリケーションから変数を完全に削除する場合は、次のいずれかを実行してください。

* 変数ダイアログからその変数を削除します。

* [Drop variable](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Drop-Variable.htm) ステートメントを使用して、スクリプト内の変数をドロップします。

* スクリプトで [ScriptOnlyVariables](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/ScriptOnlyVariables.htm) システム変数を使用することにより、変数ダイアログで不要な変数をスクリプト専用変数として設定します。

詳細については、「[変数の削除](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/delete-variable-using-dialog.htm)」を参照してください。

## 項目値としての変数値のロード

変数値を LOAD ステートメントで項目値としてロードし、ドル展開の結果が数字や数式ではなくテキストの場合、展開した変数を 1 つの引用に含める必要があります。

この例では、スクリプト エラーの一覧を含むシステム変数をテーブルにロードします。If 句での ScriptErrorCount の展開に引用符は不要ですが、ScriptErrorList の展開には引用符が必要になることに注意してください。

```
IF $(ScriptErrorCount) >= 1 THEN
   LOAD '$(ScriptErrorList)' AS Error AutoGenerate 1;
END IF
```

## 変数の計算

Qlik Sense で計算済みの値を使って変数を使用する方法はいくつかあり、その結果は、これを定義する方法と数式で呼び出す方法によって異なります。

この例では、いくつかのインライン データをロードします。

```
LOAD * INLINE [
    Dim, Sales
    A, 150
    A, 200
    B, 240
    B, 230
    C, 410
    C, 330
];
```

2 つの変数を定義してみましょう。

```
Let vSales  = 'Sum(Sales)' ;
```

Let vSales2 = '=Sum(Sales)' ;

2 番目の変数では、数式の前に等号を追加します。これにより、変数が展開される前に計算され、数式が評価されます。

vSales 変数をそのまま使用する場合 (メジャーで使用する場合など)、その結果は文字列Sum(Sales) になります。つまり、計算は行われません。

ドル記号展開を追加して数式で $(vSales) を呼び出すと、変数が展開され、Sales の合計が表示されます。

最後に、$(vSales2) を呼び出すと、変数は展開される前に計算されます。つまり、表示される結果は Sales の合計です。メジャー数式として =$(vSales) を使用した場合と =$(vSales2) を使用した場合に結果がどう違うかを、下記の表に示します。

結果

| Dim | $(vSales) | $(vSales2) |
| --- | --- | --- |
| A | 350 | 1560 |
| B | 470 | 1560 |
| C | 740 | 1560 |

ご覧のように、$(vSales) は軸値の小計になり、$(vSales2) は合計になります。

次のスクリプト変数を使用できます。

* [エラー変数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ErrorVariables/ErrorVariables.htm)
* [データ型変換変数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/number-interpretation-variables.htm)
* [システム変数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/system-variables.htm)
* [値を操作する変数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ValueHandlingVariables/value-handling-variables.htm)

## 詳細を見る

* [ドル記号展開](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansions.htm)
* [数式での変数の使用](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/work-with-variables.htm)