こんちにちは!Yokoです。
本格的にQlikアプリを作成していくと、変数がどんどん増えていき、50超え、100超え…と肥大化していき、気づいたら変数地獄に!
なんてことありません?
また、複雑な数式を何度も書かなきゃいけないような場合、生産性が落ちるだけでなく、不具合が発生する確率も増えるし、メンテナンス性も悪くなります。
そのソリューションの一つとして、パラメータ付き変数の使い方をマスターしておくと便利です。
僕も時々使うのですが、ちょっとクセがあるので、今回は改めて整理してみることにします。
パラメータ付き変数はどんな時に必要になるのか
以下のような直近5年wそ常に表示する折れ線チャートを作成するとします。

上記のチャートを作る際は
- 軸に年度を指定する(直近5年以内になるよう数式で制限)
- 数式を5つ指定する(当年から5年前までの数式を書く)
後者のように数式を5つ書かなければならい場合、SET数式内で5個の変数を使うことになります。
こんなケースが典型例ですね。
ベースとなる変数の準備
説明を簡素化するために、顧客別売上データの売上日を指定するために、マスターカレンダーをアイランドテーブル化します。そして、マスターカレンダーの年月日を選択して期間を絞り込むようにしたいと思います。
ベースとなる変数はこちら
| 変数名 | 定義 |
|---|---|
| vMinDate | =Min(年月日) |
| vMaxDate | =Max(年月日) |
それに対応する数式はこちら
Sum({$<売上日={">=$(vMinDate)<=$(vMaxDate)"}>} [売上金額])
以上に前年度の同期間を表示するためには、vMinDate, vMaxDateに対応する前年の変数をそれぞれ準備することになりますね。
さらにそれより前の年度を指定するには、さらに同じ数だけの変数を作成することになります。
うんざり😩
パラメータ付き変数を定義する際のポイント
パラメータ付き変数を作成する際のポイントは2つあります。
パラメータ付き変数定義のポイント
- パラメータは$1で定義する
- 変数はテキストで定義する必要があるので”=”はつけない
- 変数の定義内で別の変数を使用しない
- パラメータは$1で定義する
パラメータ付き変数においてパラメータの部分は、$1で定義します。
なんで$なの?
と思うかもしれませんが😄、深く考えないように!
これが1つ目の$マジックです。
例としては
AddYears(Min(年月日),$1)
と定義した場合は、$1に0を入れれば当年、-1を入れれば1年前となります。 - 変数はテキストで定義する必要があるので”=”はつけない
変数定義を行う際に、数式を定義する際に”=Min(年月日)”のように”=”をつけると思います。”=”をつけると数式で計算された結果を変数に格納します。
一方、”=”をつけない場合は、テキストとして処理されます。パラメータ付き変数の定義はテキストである必要があるので、「”=”をつけない」というのがルールです。
正しい例と誤った例を以下にまとめます。
| 定義 | 結果 |
|---|---|
| 🔴 AddYears(Min(年月日),$1) | テキストなのでOK |
| 🔴 =’AddYears(Min(年月日),$1)’ | これもテキストなのでOK |
| ❎ =AddYears(Min(年月日),$1) | これは数式の計算結果が返ってくるのでNG |
- 変数の定義内で別の変数を使用しない
パラメータ付き変数を定義する際には、定義内で他の変数を指定しないようにして下さい
正しい例と誤った例を以下にまとめます。
| 定義 | 結果 |
|---|---|
| 🔴 AddYears(Min(年月日),$1) | OK |
| ❎ =AddYears(‘$(vMinDate)’,$1) | 変数のテキスト内でvMinDateという他の変数を指定しているのでNG |
数式でパラメータ付き変数を使用する際のポイント
数式でパラメータ付き変数を使用する際のポイントは2つです。
数式でパラメータ付き変数を指定する際のポイント
- $(=変数)で、テキストを数式化する
- 変数のパラメータ値は()内で指定する
仮に、vMinDate_Beforeという変数をAddYears(Min(年月日),$1)と定義したとすると、$(=$(vMinDate_Before(-1)))のように指定します。
何だか()が多くてわかりにくいですね😅
$(vMinDate_Before(-1))だけでできそうに見えますが、これはテキストなので、正しく機能しません。
そこで$(=変数)を使用して、Qlikにこれは数式ですよと認識させるわけです。
これが2つ目の$マジック!
パラメータ付き変数の実装
上記でパラメータ付き変数の使い方をマスターしたので、早速実装していきます。
まずは変数の定義です。
“=”はつけません!
| 変数名 | 定義 |
|---|---|
| vMinDate_Before | AddYears(Min(年月日),$1) |
| vMaxDate_Before | AddYears(Max(年月日),$1) |
次に数式の実装です。
| 数式 | ラベル |
|---|---|
| Sum({$<売上日={“>=$(=$(vMinDate_Before(0)))<=$(=$(vMaxDate_Before(0)))”}>} [売上金額]) | =Year(‘$(=$(vMinDate_Before(0)))’) |
| Sum({$<売上日={“>=$(=$(vMinDate_Before(-1)))<=$(=$(vMaxDate_Before(-1)))”}>} [売上金額]) | =Year(‘$(=$(vMinDate_Before(-1)))’) |
| Sum({$<売上日={“>=$(=$(vMinDate_Before(-2)))<=$(=$(vMaxDate_Before(-2)))”}>} [売上金額]) | =Year(‘$(=$(vMinDate_Before(-2)))’) |
| Sum({$<売上日={“>=$(=$(vMinDate_Before(-3)))<=$(=$(vMaxDate_Before(-3)))”}>} [売上金額]) | =Year(‘$(=$(vMinDate_Before(-3)))’) |
| Sum({$<売上日={“>=$(=$(vMinDate_Before(-4)))<=$(=$(vMaxDate_Before(-4)))”}>} [売上金額]) | =Year(‘$(=$(vMinDate_Before(-4)))’) |
はい、これで以下のようなチャートになります。
5年分の変数を開始日と終了日それぞれ1つの変数で処理できました。
スッキリです!

まとめ
以上、パラメータ付き変数の基本をご紹介しました。
変数定義の際の3つのポイント、数式で使用する際の2つのポイントを押さえておけば、劇的に変数の数を減らしつつ、チャートへの実装もラクになります。
次回はもっと楽にチャート実装する方法をご紹介しますね!
ではまた!


