QlikView(クリックビュー)では、年月日の最大日付(MaxDate)と最小日付(MinDate)の取得方法と変数に設定することができます。
以前の記事では「MaxDateとMinDateの取得方法」を紹介しました。
今回はマスターカレンダーを作成してみましょう。
生データでは存在しない日付をマスターカレンダーを作成することによって解消されます。
① Ctrl+E を押し、ロードスクリプトの編集を開きます。
② 相対パスにチェックを入れます。
③ 『テーブルファイル』を押し「売上明細.csv」を取り込みます。
④ テーブル名を『売上』と入力します。
⑤ リロードします。
① 「Date(Date#(日付コード,'YYYYMMDD'),'YYYY/MM/DD') as 年月日」を追加します。
② リロードします。
① 空いているシートを右クリックし、「リストボックスの追加」を押します。
② 項目から「年月日」と「日付コード」を選択し、追加ボタンを押します。
③ 「OK」ボタンを押します。
※「年月日」 と 「日付コード」 リストボックスをよく見ると、日付が抜けているところが確認できます。
※2006/04/07 と 2006/04/14 が抜けていることが確認できます。
こちらの問題を解決するためにマスターカレンダーを作成します。
① 以下の文をロードスクリプトで入力します。
日付期間:
Load
Max(年月日) AS DateMax,
Min(年月日) AS DateMin
Resident 売上;
LET varMaxDate= FieldValue('DateMax', 1);
LET varMinDate= FieldValue('DateMin', 1);
① 以下の文をロードスクリプトで入力します。
マスタカレンダー:
LOAD
Year(Date((IterNo()) + DayStart($(varMinDate)-1),'YYYY/MM/DD')) as 年,
Date(Makedate(Year(Date((IterNo()) + DayStart($(varMinDate)-1),'YYYY/MM/DD')),
Month(Date((IterNo())+ DayStart($(varMinDate)-1),'YYYY/MM/DD'))),'YYYY/MM') as 年月,
Month(Date((IterNo()) + DayStart($(varMinDate)-1),'YYYY/MM/DD')) as 月,
Date(Makedate(Year(Date((IterNo()) + DayStart($(varMinDate)-1),'YYYY/MM/DD')),
Month(Date((IterNo())+ DayStart($(varMinDate)-1),'YYYY/MM/DD')),
Day(Date((IterNo())+ DayStart($(varMinDate)-1),'YYYY/MM/DD'))),'YYYY/MM/DD') as 年月日,
Day(Date((IterNo()) + DayStart($(varMinDate)-1),'YYYY/MM/DD')) as 日,
WeekStart(Date((IterNo()) + DayStart($(varMinDate)-1),'YYYY/MM/DD')) as 週,
WeekDay(Date((IterNo()) + DayStart($(varMinDate)-1),'YYYY/MM/DD')) as 曜日
AutoGenerate (1)
While Date((IterNo()) + DayStart($(varMinDate)-1),'YYYY/MM/DD') <= Date($(varMaxDate),'YYYY/MM/DD');
② リロードします。
※ 「テーブルビューアー」でテーブルの構成を確認します。(Ctrl +T)
① 空いているシートを右クリックし、「リストボックスの追加」を押します。
② 項目から「年月日」、「年」、「年月」、「月」、「日」、「週」、「曜日」 を選択し、追加ボタンを押します。
③ 「OK」ボタンを押します。
④ 日付コードでなかった「2006/04/07」, 「2006/04/14」 が「年月日」リストボックスで表示されているのが確認できます。
⑤ 「マスターカレンダー」と「売上」テーブルは「年月日」で紐付いているので、値を選択することによって連結されていることが確認できます。
この記事は、以上です。