こんにちは!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〜


