Qlikの日付処理のベクスプラクティス〜第2回 カレンダーの切り替え〜

こんにちは!Yokoです。
前回はAuto Calendarで2つのカレンダーを作りました。
複数の時間軸を切り替えて表示したいケースってありますよね。
例えば、教育関連業界では自社の会計年度と学校年度が違うし、EC関連では受注日と売上日があったりします。
今回はこのような複数の時間軸を切り替え、チャート表示に反映させる方法をご紹介します。
ここで使用しているデータセットはこちらからダウンロードして下さい。

関連記事はこちら
Qlikの日付処理のベクスプラクティス〜第1回 Auto Calendar〜

目次

日付の派生項目を確認する

前回、Auto Calendarで作成した日付は、fiscal(会計年度)とcalendar(西暦)の2つの時間軸で定義されていました。この2つの派生項目は内部的には以下のように定義されています。

派生項目会計年度西暦
年度売上日.fiscal.Year売上日.calendar.Year
売上日.fiscal.Month売上日.calendar.Month
年月売上日.fiscal.YearMonth売上日.calendar.YearMonth
売上日.fiscal.Date売上日.calendar.Date

これを見ると、[日付項目].<カレンダーの種類>.[派生項目]になっていますよね。
つまり、この<カレンダーの種類>を切り替えてあげれば、カレンダーの切り替えができることに着目します。
では、どうやって切り替えるのか…
そう、変数を使うのです!

変数を使ってフィルターを切り替える準備

まず、変数を定義します。
ここでは、カレンダーの種類を切り替えるためのvCalendarとラベル表示で使用するvCalendar_labelの2つを作成しておきます。

変数名定義
vCalendarfiscal
vCalendar_label=If(vCalendar = ‘fiscal’, ‘会計’, ‘西暦’)

次に年度・月・年月を選択するフィルターパネルを3つ作ります。
項目とタイトルは以下のように設定しておきます。

日付項目タイトル
年度売上日.$(vCalendar).Year=’$(vCalendar_label)年度’
売上日.$(vCalendar).Month=’$(vCalendar_label)月’
年月売上日.$(vCalendar).YearMonth=’$(vCalendar_label)年月’

以上で、1つのフィルターを変数: vCalendarで切り替える準備ができました。
表示ラベルも、会計年度⇔西暦年度のように切り替わって表示できるはずです。

変数入力(Variable Input)で切り替えてみる

ダッシュボードオブジェクトの変数入力(Variable Input)をシート上に配置し、以下のように定義します。

設定項目設定
Variable > NamevCalendar
Variable > Show asButtons
Variable > DisplayRow
Values > Fixed or dynamic valuesDynamic
Values > Dynamic valuesfiscal~会計|calendar~西暦

Fixed or dynamic valuesでDynamicを選んだ場合は、パイプ(|)で選択値を区切り、”~”を使って内部値と表示ラベルを設定します。fiscal~会計と設定した場合は、変数値はfiscalですが、表示ラベルは”会計”となります。

では実際にボタンをクリックして、「会計」と「西暦」を切り替えてみましょう。
「年度」「月」「年月」3つのフィルターパネルが、ボタン切り替えに連動して「会計」と「西暦」に切り替わることが確認できるはずです。

チャートの時間軸を切り替えてみる

棒チャートを以下の設定で作成します。

設定項目設定
軸 > 項目=[売上日.$(vCalendar).YearMonth]
軸 > ラベル=’$(vCalendar_label)年月’
メジャー > 数式Sum([売上金額])
メジャー > ラベル売上金額

会計と西暦を切り替えることで、フィルターで設定した時間軸でチャートの表示も切り替わりますよね。
会計年度で2024を選択すれば2024年4月以降で表示され、西暦年度で2024年1月以降で表示されるはずです。
しかし困ったことに遭遇しました。
会計年度で年度を選択した状態で、西暦に切り替えたときに会計側の選択状態が残ってしまっています。
会計側の選択状態をクリアしてもらうようにユーザに知らせる必要があるので、アラートメッセージを表示するようにします。
ダッシュボードオブジェクトのテキストで以下メジャーを以下のように定義しておくと、選択したカレンダーに反する選択をクリアするよう促すことができます。テキストカラーを赤にしておくといいですね。

=If(vCalendar = 'fiscal' 
	and GetSelectedCount([売上日.calendar.Year])+GetSelectedCount([売上日.calendar.Month])+GetSelectedCount([売上日.calendar.YearMonth]) > 0,
    '西暦の日付が選択されています。選択をクリアして下さい',
	If(vCalendar = 'calendar' 
	and GetSelectedCount([売上日.fiscal.Year])+GetSelectedCount([売上日.fiscal.Month])+GetSelectedCount([売上日.fiscal.YearMonth]) > 0,
    '会計の日付が選択されています。選択をクリアして下さい',
	)
)

おまけ(残念なこと)

Auto Calendarで作成した日付の派生項目ですが、変数入力(Variable Input)で切り替えせずに、「ボタンアクションで、選択値をクリアしてから変数に値をセットしたほうがいい」と思いますよね。
で、実際にやってみると、こんな事態に気づきます。

ありゃ、派生項目が出てきません😢
派生項目が選べないのは何とかしてほしいですよねえ。
それと、もう一つ。
2025年にチャートに追加されたストレートテーブルですが、ダウンロードする時に、選択状態を表記することができるようになりました!
これは嬉しい機能なのですが、ダウンロードすると、派生項目の選択状態が、項目名として表示できず、Auto Calendarで定義した数式が丸見えになってしまいます😅

Qlikさん、派生項目の扱いを是非改善してもらいたい!
Auto Calendarの定義は、Qlikのドキュメントにもしっかり記述されていますので…
これを書いているのは2025年12月ですので、もしかすると近い将来、「この記事、古いよな」と事態になっているかもしれません。
だと、いいですね。

まとめ

Auto Calendarで作成した派生項目のシートへの実装の第一歩として、カレンダーの切り替え方法をご紹介しました。
まとめると、日付の派生項目は

[日付項目].<カレンダーの種類>.[派生項目]

という定義となっていて、<カレンダーの種類>を変数化することで、カレンダーを切り替えできることがわかりました。
応用として、派生項目を変数化しておけば、年月表示⇔年月日表示などの切り替えもできるようになります。
「おまけ(残念なこと)」でご紹介した不満点はありますが、複数の年度を切り替えるとか、受注日と売上日を切り替えたいというような時に、動的に切り替えられるというメリットは大きいです。

みなさんも是非コピペでやってみて下さい。
ではまた!

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

この記事を書いた人

目次