カレンダーを自動生成する
いわゆるカレンダーマスタと呼ばれる系統のデータを自動生成するテクニックです。
営業日の判定(祝日の定義)を含んだり、その他特殊な対応が必要な場合には簡単に自動生成はできないのですが、ここでは難しいことを考えず、以下の項目を含むようにします。
・日付
・年
・月
・日
・週番号
・曜日
・半期
・四半期
やりかた
ロードスクリプト定義
次のようなロードスクリプトを書きます。例では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;
リロード
リロードします。つまり、上のロードスクリプト定義だけで、やるべきことはおしまいです。
適当にオブジェクトを作ると、次のような感じになります。
このデータは、エクセル出力したりcsv保存したりすることも可能です。
また、応用編として、
・リロードする日±2年の範囲でカレンダーを生成する(vBegin,vEndの定義を変更する)
・他のトランザクションを読み込むときに、生成したカレンダーの範囲にデータを限定する(inner keep)
といった対応も可能です。