Qlikの変数のパラメータ化を$マジックで 〜その1〜

こんちにちは!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_BeforeAddYears(Min(年月日),$1)
vMaxDate_BeforeAddYears(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つのポイントを押さえておけば、劇的に変数の数を減らしつつ、チャートへの実装もラクになります。
次回はもっと楽にチャート実装する方法をご紹介しますね!

ではまた!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次