2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

QlikViewでカレンダーを自動生成する

Last updated at Posted at 2015-10-24

カレンダーを自動生成する

いわゆるカレンダーマスタと呼ばれる系統のデータを自動生成するテクニックです。
営業日の判定(祝日の定義)を含んだり、その他特殊な対応が必要な場合には簡単に自動生成はできないのですが、ここでは難しいことを考えず、以下の項目を含むようにします。
・日付
・年
・月
・日
・週番号
・曜日
・半期
・四半期

やりかた

ロードスクリプト定義

次のようなロードスクリプトを書きます。例では2013/01/01から2015/12/31のカレンダーを作っています。

loadscript
SET vBegin = '2013/01/01';
SET vEnd = '2015/12/31';

t:
LOAD * INLINE [
    dummy
    1
];

For i = date('$(vBegin)') To date('$(vEnd)')
	LOAD date($(i)) as 日付,
	Year(date($(i))) as ,
	Month(date($(i))) as ,
	Day(date($(i))) as ,
	Week(date($(i))) as 週番号,
	WeekDay(date($(i))) as 曜日,
	If(Month(date($(i))) >= 4 and Month(date($(i))) <= 9, '上期', '下期') as 半期,
	If(Month(date($(i))) < 4, '4Q',
	If(Month(date($(i))) < 7, '1Q',
	If(Month(date($(i))) < 10, '2Q', '3Q'))) as 四半期
	Resident t;
Next

DROP Table t;

リロード

リロードします。つまり、上のロードスクリプト定義だけで、やるべきことはおしまいです。
適当にオブジェクトを作ると、次のような感じになります。
calendar.png

このデータは、エクセル出力したりcsv保存したりすることも可能です。
また、応用編として、
・リロードする日±2年の範囲でカレンダーを生成する(vBegin,vEndの定義を変更する)
・他のトランザクションを読み込むときに、生成したカレンダーの範囲にデータを限定する(inner keep)
といった対応も可能です。

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?