式での変数の使用例
Qlik Sense の変数は名前付きのエンティティで、データ値が含まれています。変数が数式で使用されている場合、変数には値または変数の定義が代入されます。
数式で変数を使用する方法
変数は、直接参照またはドル記号展開の 2 つの異なる方法で使用できます。直接参照を使用する場合は、変数値が計算に使用されます。ドル記号展開を使用する場合、数式が解析される前に、ドル記号展開全体が変数値に置き換えられます。したがって、2 つの異なるメソッドは異なる結果を返す可能性があります。
例: ドル記号展開と変数の使用
変数 x にはテキスト文字列 Sum(Sales) が含まれます。
チャートで、数式 $(x)/12 を定義します。効果は、チャートの数式 Sum(Sales)/12 を使用した場合とまったく同じになります。
ただし、変数 x の値を Sum(Budget) などに変更すると、チャート内のデータが直ちに再計算され、数式は Sum(Budget)/12 として解釈されます。
例: ピボット テーブルでのドル記号展開と変数
次を含む [ピボット テーブル] または [ピボット] オブジェクトがあるとします。
-
軸は Product Type と Product Name。
-
メジャーは Sum(Sales) と Count (distinct InvoiceNumber)。
-
[列] のアイテムは、 [値] (既定値) と項目 Quarter 。
変数を使用してインタラクティブな分析を促進できます。空白の定義を持つ変数 vUserInteraction も作成するとします。次に、[変数値の設定] アクションで構成された 2 つの [ボタン] チャートをシートに作成します。
-
詳細をさらに表示: このボタンをクリックすると、vUserInteraction が ='Yes' の値に設定されます。
-
詳細を少なく表示: このボタンをクリックすると、vUserInteraction が ='No' の値に設定されます。
ピボット テーブルでは、Count(Quantity) や Sum(Cost) などの追加メジャーをチャートに追加できます。次に、各メジャー列の [条件に応じて列を表示] の値が次になるように構成します。
'$(Reference)'='Yes'
これにより、ユーザーが追加情報を必要とするかどうかに応じてチャートが適応できるようになります。ユーザーが [詳細をさらに表示] ボタンをクリックすると、追加のメジャーがテーブルに追加されます。そうでない場合、または [詳細を少なく表示] をクリックした場合は、追加のメジャーは削除されます。
その他の例: ドル記号展開での変数の使用
ドル記号展開は、Qlik Sense でさまざまな用途に使用できる、汎用性の高い強力なツールです。 詳細については、「ドル記号展開」を参照してください。
例: 数式内で変数を直接参照する
変数を直接参照として使用することは一般的ではありませんが、便利な手法です。例:
データ モデルに、トランザクションのフリーテキスト サマリーを含む項目 TransactionSummary があるとします。この項目には、トランザクションに関する補足情報が含まれる場合があります。たとえば、顧客がストアクレジットで商品を購入したことをドキュメント化したり、販売中に生じた問題をドキュメント化するために、トランザクションに概要を含めることができます。
アプリ内で、TransactionSummary を使用して、データモデルやロードスクリプトに影響を与えることなく、またチャート内の他の場所にデータを保存することなく、データをコンテキストに入れようとする場合があります。
次のようなことを実行できます。
変数ダイアログで、次の定義を使用して vIntroStatement という名前の変数を作成します。
='The following summary was provided by the vendor: '
[テキストと画像] のチャートに次のメジャーを追加します。
vIntroStatement & TransactionSummary
導入文を変数として保存すると、値の使用を集中的に制御できます。たとえば、変数 vIntroStatement は複数のチャートおよび複数の異なるメジャー内で使用される可能性があります (たとえば、トランザクション中に販売されたユニット数を説明するテキストが含まれる別のチャートが存在する場合があります)。変数を使用することで、アプリ内の数式を更新するプロセスを簡略化できます。表現を変更する場合は、変数を更新するだけでアプリ全体に変更が反映されます。
名前の解釈方法
Qlik Senseでは、変数に項目や関数と同じ名前を付けることは推奨されていません。 これを行う場合は、数式での使用方法を理解する必要があります。
文字列 XXX は、項目、変数、関数、またはメジャーを表します。数式の作成方法に応じて、XXX はさまざまな値として解釈されます。
数式 | XXX の解釈 |
---|---|
XXX | メジャー、変数、または項目 |
$(XXX) | 変数 |
Count(XXX) | 項目または変数 |
XXX() | 関数 |
エンティティに名前を付けるときは、同じ名前を複数の項目、変数、またはメジャーに割り当てないでください。同じ名前のエンティティ間の競合を解決するには、厳密な優先順位があります。この順序は、これらのエンティティが使用されるすべてのオブジェクトまたはコンテキストに反映されます。この優先順位次のとおりです。
集計の内部では、項目は変数よりも優先されます。メジャー ラベルは、集計内では関係がなく、優先されません。
集計の外部では、メジャー ラベルは変数よりも優先され、変数は項目名よりも優先されます。
さらに、集計の外部では、ラベルが実際には計算されたものである場合を除き、メジャー ラベルを参照することによりメジャーを再使用することができます。この状況では、自己参照のリスクを低減するためにメジャーの重要性は低下し、この場合、名前は メジャーラベルとして常に最初に解釈され、2 番目に項目名、3 番目に変数名として解釈されます。
ベストプラクティスとして、アプリ内で作成する変数の命名規則を標準化することを検討してください。たとえば、すべての変数名が「v 」で始まるようにします。例: vUserText。これにより、変数が変数としてすぐに認識され、メジャー、項目、関数と区別されるようになります。
変数の計算
Qlik Sense で計算済みの値を使って変数を使用する方法はいくつかあり、その結果は、これを定義する方法と数式で呼び出す方法によって異なります。
この例では、次のデータがデータ ロード エディタにロードされている必要があります。
変数ダイアログから次の 2 つの変数を定義します。
- [名前] vSales [定義'Sum(Sales)' ]
- [名前] 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) は合計になります。