Qlikの日付処理のベストプラクティス〜第10回 曜日を揃えたCalendar Heatmap〜

こんにちは!Yokoです。
日頃から「秒でわかるダッシュボード」を目指して、Qlikアプリを開発しています😏
年間で日付を並べて、いつ頃に売上が集中しているかをザックリ把握したい!
小売業などでは曜日による売上の差が大きいですし、また季節変動も大きい…となると、棒チャートや折れ線チャートだと限界が…😥
チャート1つで、ざっと傾向が見えるチャートってなんだろう…
色々アイディアがあるのですが、今回はその一つをご紹介します。
それはこんなチャート!名付けて”Calendar Heatmap”です。

目次

Calendar Heatmapの仕様

Calendar Heatmapの要件は以下のとおりです。

  • 1年分をスクロールなしで表示する
  • 曜日を揃えて表示する
  • 売上の大小は色の濃さで表現する
  • デフォルトで値を表示しなくてもいいが、ホバーした時に表示できればいい

Heatmapといえばグリッドチャートだよね。
でもグリッドチャートで曜日を揃えるってできるのかな?
それができるんですよね。
実は、Qlikの日付処理のベストプラクティス〜第1回 Auto Calendar〜で、ちゃんと仕掛けを作っているのです。
つまり、Calendar Heatmapは、Auto Calendarとグリッドチャートの合わせ技で実現するんです。
では、行ってみましょう。

Auto Calendarの解説

Qlikの日付処理のベストプラクティス〜第1回 Auto Calendar〜から一部抜粋しますね。

[calendar]: 
DECLARE FIELD DEFINITION Tagged ('$date')
FIELDS
	Dual(Year($1),YearStart($1,0,1))  AS [Year] Tagged ('$axis', '$year'),
    Dual(Month($1),Month($1)) AS [Month] Tagged ('$axis','$month','$cyclic'),
 	Dual(Year($1) & '-' & Month($1), MonthStart($1)) AS [YearMonth] Tagged ('$axis', '$yearmonth', '$qualified'),
	Dual('W' & Num(Week($1,0),'00'),Week($1,0)) AS [Week] Tagged ('$axis','$weeknumber','$cyclic'),
	Date(WeekStart($1)) AS [WeekStart] Tagged ('$axis','$weekstart','$cyclic'),
	Year($1) & 'W' & Num(Week($1,0),'00') AS [YearWeek] Tagged ('$axis','$yearweek','$qualified'),
    WeekDay($1) AS [Weekday] Tagged ('$axis','$weekday','$cyclic'),
	Dual(Num(Month($1),'00') & '/' & Num(Day($1),'00'),
    	Month($1)*100 + Day($1))AS [MonthDay] Tagged ('$axis','$monthday','$cyclic'),
	Date(Floor($1)) AS [Date] Tagged ('$axis', '$date','$qualified'),
    Day($1) AS [Day] Tagged ('$axis', '$day','$qualified'),
    Day($1) + weekday(MonthStart($1)) As [CalendarPosition] Tagged ('$axis','$weekday','$cyclic');
DERIVE FIELDS FROM FIELDS 
売上日
USING [calendar];

このスクリプトの15行目

Day($1) + weekday(MonthStart($1)) As [CalendarPosition] Tagged ('$axis','$weekday','$cyclic')

CalendarPositionってなんでしょうか?
日付のDayに月初の週番号を加える…ということは月初の曜日分ずれるということを意味します。
なので今月の月初が水曜であれば、Dayに3を加算する訳で、Weekday関数は0(日曜日)〜6(土曜日)を返すので、一番ずれるのは土曜日始まりの時ですよね。
月毎のこのズレの分をHeatmapの表示をずらせば、曜日を揃えることになるのです。
とちょっとピンとこないかもしれませんが、やっていく過程で理解できるはず。

グリッドチャートの作成

軸とメジャーの設定

グリッドチャートを配置して、軸とメジャーを設定していきます。

設定設定項目定義
軸1項目=Dual([売上日.fiscal.Weekday] & ‘-‘ & Ceil(([売上日.fiscal.CalendarPosition])/7) & ‘W’,[売上日.fiscal.CalendarPosition])
ラベル
軸2項目=[売上日.fiscal.YearMonth]
ラベル年月
メジャー数式=Day(Only(売上日))
ラベル売上日

今回は会計年度で表示したいので、fiscalのカレンダーを使用します。
軸1がわかりにくいと思いますので、ちょっと解説すると、各月の何週目の何曜日かを表示させるという数式になります。「火-1W」であれば、その月の1週目の火曜日ということです。
そして、Dualの内部値はCalendarPositionなので、それがX軸の位置になります。
ここで「メジャーはなぜ売上日なの?」と思った人がいると思います。
が、後でちゃんと設定するから大丈夫だよ!
この時点でのグリッドチャートはこんな状態です。

スタイルの設定

スタイルは以下のように設定します。

■ プレゼンテーション

  • レイアウト:  ヒートマップ
  • ラベル:    ON

■ 色と凡例

  • カスタム    メジャー別
  • メジャーの選択 =Num(Sum(売上金額),’#,##0′)
  • ラベル     売上
  • 凡例の表示   OFF

色の濃淡はここで設定するので、メジャーで売上を設定しなかったっていうことです。
ここで設定した「売上」はマウスホバーでもちゃんと表示してくれるから安心してね。

最後にX軸、Y軸の表示設定をしたら完成です。

■ X軸

  • ラベルとタイトル ラベルのみ
  • 軸の値の数    最大値
  • ラベルとタイトル ラベルのみ
  • 軸の値の数    最大値

■ Y軸

  • ラベルとタイトル ラベルのみ
  • 軸の値の数    カスタム 最大値 = 12

以上で設定は完了です。

Calendar Heatmapを表示してみる

設定が完了したグリッドチャートで、2024度を絞り込んでみます。
日付をホバーすると、売上の金額も表示されますね!
これで1年分をまとめて表示して、どんな傾向があるかザックリ把握できるようになりました。
これを見ちゃうと、ピボットテーブルで数字を追うのがバカバカしくなりますよねえ。

まとめ

今回は、Auto Calendarとグリッドチャートで、Calendar Heatmapを作ってみました。
Auto Calendarで、CalendarPositionを作っておくだけで、簡単にできちゃいましたよね。
すみません🙇‍♂️
簡単すぎて😅

では、また!

関連記事はこちら
Qlikの日付処理のベストプラクティス〜第1回 Auto Calendar〜
Qlikの日付処理のベストプラクティス〜第2回 カレンダーの切り替え〜
Qlikの日付処理のベストプラクティス〜第3回 前年比較の表現〜
Qlikの日付処理のベストプラクティス〜第4回 日付ピッカー(Date Picker)の最適設定〜

Qlikの日付処理のベストプラクティス〜第5回 SCD(IntervalMatch)を使用した組織改編への対応
Qlikの日付処理のベストプラクティス〜第6回 2つの時間軸を1つのチャートに収める〜
Qlikの日付処理のベストプラクティス〜第7回 月のソート自由自在〜
Qlikの日付処理のベストプラクティス〜第8回 From Toデータの扱い その1〜
Qlikの日付処理のベストプラクティス〜第9回 From Toデータの扱い その2〜

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

この記事を書いた人

目次