QlikViewナレッジ - INSIGHT LAB

QlikViewでマスターカレンダーを作成する方法

作成者: Deck|2014年7月10日

QlikViewでマスターカレンダーを作成する方法

QlikView(クリックビュー)では、年月日の最大日付(MaxDate)と最小日付(MinDate)の取得方法と変数に設定することができます。

以前の記事では「MaxDateとMinDateの取得方法」を紹介しました。

今回はマスターカレンダーを作成してみましょう。

 

生データでは存在しない日付をマスターカレンダーを作成することによって解消されます。

 

売上明細.csv を取り込む

 

① Ctrl+E を押し、ロードスクリプトの編集を開きます。

② 相対パスにチェックを入れます。

③ 『テーブルファイル』を押し「売上明細.csv」を取り込みます。

④ テーブル名を『売上』と入力します。

⑤ リロードします。

 

日付型を変更する(20060401    → 2006/06/01)

① 「Date(Date#(日付コード,'YYYYMMDD'),'YYYY/MM/DD') as 年月日」を追加します。

② リロードします。

 

取り込んだ項目の「年月日」と「日付コード」をリストボックスで表示する

① 空いているシートを右クリックし、「リストボックスの追加」を押します。

② 項目から「年月日」と「日付コード」を選択し、追加ボタンを押します。

③ 「OK」ボタンを押します。

 

※「年月日」 と 「日付コード」 リストボックスをよく見ると、日付が抜けているところが確認できます。

 

※2006/04/07 と 2006/04/14 が抜けていることが確認できます。

 

こちらの問題を解決するためにマスターカレンダーを作成します。

 

変数の設定/ minDate と MaxDate を取得 

MaxDateとMinDateの取得方法の説明はこちら

① 以下の文をロードスクリプトで入力します。

日付期間:
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」 が「年月日」リストボックスで表示されているのが確認できます。

⑤ 「マスターカレンダー」と「売上」テーブルは「年月日」で紐付いているので、値を選択することによって連結されていることが確認できます。

 

この記事は、以上です。

 

Qlikで使えるloadscript(ロードスクリプト)一覧はこちら