Qlikview指令碼生成日曆表

2021-10-10 19:39:15 字數 1126 閱讀 5818

多數情況下dw會給報表輸出一張比較全的標準日曆表,如果是這樣的情況,那麼可以直接從dw中讀取,所以我要寫的是dw中沒有提供並且從事實資料中提取並不完整或者太耗資源的情況,其實是可以通過指令碼自動生成乙份標準日曆表,下面就介紹一下思路。

//定義變數

let vdatemin = num(makedate(2015,1,1));  //起始時間2015-01-01

let vdatemax = floor(monthend(today())); //結束時間為今天所在月最後一天

let vdatetoday = num(today());           //今天變數

//定義迴圈

tempcalendar:

load

$(vdatemin) + rowno() - 1 as datenumber,

date($(vdatemin) + rowno() - 1) as tempdate

autogenerate 1

while $(vdatemin)+iterno()-1<= $(vdatemax);

//載入日曆表

calendar:

load

date(tempdate) as 標準日期,

autonumber(year(tempdate)&month(tempdate)&day(tempdate)) as 時間key,

// standard date objects

day(tempdate) as 標準日份,

weekday(tempdate) as 標準星期,

week(tempdate) as 標準週數,

month(tempdate) as 標準月份,

'q' & ceil(month(tempdate)/3) as 標準季度,

year(tempdate) as 標準年份

resident tempcalendar order by tempdate asc;

drop table tempcalendar;

//釋放變數

let vdatemin = null();

let vdatemax = null();

let vdatetoday = null();

**:

MySQL 8 0 11 生成日曆表

mysql的date 資料類支援的時間範圍是 1000 1 1 到9999 12 31,通過計算可以知道最大支援天數為3287181天屬於百萬級別的。mysql select datediff 9999 12 31 1000 01 01 days days 3287181 1 row in set ...

日曆表作用與HiveSQL生成

在資料處理的過程中,有時候會碰到一些需要使用日曆的場景,在使用中碰到過的有 1.計算工作日 可以抽象一些理解為為不同日期的權重不一樣,工作日權重為1,其他為0 2.計算財年 財務月 財務周 和自然日期有所不同 3.利用日期區間展開一些計算 比如將某張賬單金額拆到賬單對應得乙個時間區間 這裡記錄一段日...

mysql生成日曆指令碼(年 年月 格式)

create table num i int 建立乙個表用來儲存0 9的數字 insert into num i values 0 1 2 3 4 5 6 7 8 9 生成0 9的數字,方便以後計算時間 create table if not exists day date date 生成乙個儲存日...