5 2 3 SSAS 維度 日期維度

2021-07-08 19:31:40 字數 3203 閱讀 3923

維度-日期維度的建立

1          日期維度

日期維度存在於幾乎所有的cube中,它是最最普遍和最重要的維度之一。

要建立日期維度,首先需要建立乙個日期維度表,並編寫填充資料的儲存過程。

日期維度表dimdate如下:

drop table dimdate

create table dimdate

datekey int primarykey,

fulldate date,

daynumofweek int,

daynameofweeknvarchar(100),

isweekendnvarchar(100),

daynumofmonth int,

daynameofmonthnvarchar(100),

daynumofyear int,

daynameofyearnvarchar(100),

isholidaynvarchar(100),

daydesc nvarchar(100),

weeknumofyear int,

weeknameofyearnvarchar(100),

monthnumofyear int,

monthnameofyearnvarchar(100),

quarternumofyear int,

quarternameofyearnvarchar(100),

semesternumofyear int,

semesternameofyearnvarchar(100),

yearnum int,

yearname nvarchar(100)

填充日期維度資料的儲存過程如下:

declare @begindate date

,@enddate date

set @begindate='2013-01-01'

set @enddate='2020-01-01'

while(@begindate<@enddate) begin

insert into dimdate(

datekey,fulldate, daynumofweek, daynameofweek, isweekend, daynumofmonth, daynameofmonth

,daynumofyear,daynameofyear, weeknumofyear, weeknameofyear, monthnumofyear, monthnameofyear

,quarternumofyear,quarternameofyear, semesternumofyear, semesternameofyear, yearnum, yearname

selectcast(convert(varchar(8),@begindate,112) as int) as datekey

,@begindate fulldate

,datepart(dw,@begindate) as daynumofweek

,n'周'+cast(datepart(dw,@begindate)as nvarchar) as daynameofweek

,case when datepart(dw,@begindate) in(6,7)then n'是' else n'否' end isweekend

,datepart(dd,@begindate) as daynumofmonth

,cast(datepart(dd,@begindate) as nvarchar)+n'日' asdaynameofmonth

,datename(dy,@begindate) as daynumofyear

,n'第'+cast(datename(dy,@begindate)as nvarchar)+n'日' as daynameofyear

,datepart(ww,@begindate) as weeknumofyear

,n'第'+cast(datename(ww,@begindate)as nvarchar)+n'周' as weeknameofyear

,datepart(mm,@begindate) as monthnumofyear

,cast(datename(mm,@begindate) as nvarchar)+n'月' asmonthnameofyear

,datepart(qq,@begindate) as quarternumofyear

,cast(datepart(qq,@begindate) as nvarchar)+n'季度' asquarternameofyear

,case when datename(mm,@begindate) between 1and 6 then 1 else 2 end semesternumofyear

,case when datename(mm,@begindate) between 1and 6 then n'上半年' else n'下半年' end semesternameofyear

,datepart(yy,@begindate) yearnum

,cast(datepart(yy,@begindate) as nvarchar)+n'年' yearname

set@begindate=dateadd(dd, 1, @begindate)

end2          建立日期維度

維度-》右鍵-》新建維度-》使用現有表-》資料來源檢視「adventureworksdw」-》主表「dimdate」-》鍵列「datekey」-》名稱列「fulldate」-》下一步-》勾選所有不帶name的屬性(帶name的屬性將作為namecolumn的值)-》修改維度各個屬性的namecolumn-》處理-》檢視資料,可以看到各個屬性的成員值都變成了名稱列的值

建立層次結構,由於時間可以構建非常複雜的層次結構,在此我們列出一些常用的層次結構,其它層次結構可以根據具體的情況來建立。

l  年-月-日

l  年-季-月

l  年-周

l  年-月

l  年-半年-月

l  年-月-周

l  年-半年-季

l  年-季-月

l  周-日

建立好層次結構後,就可以處理了,然後進行檢視。這裡為什麼不建立匹配的屬性關係呢?因為會報錯,我也不知道為什麼報錯,請大神指教,為了不報錯,所以我建立的是預設的星型屬性關係。這樣可以隨意建立層次結構而不報錯。

處理後,查詢各個層次結構的資料。

5 2 1 SSAS 維度 雪花維度

維度 雪花維度的建立 1 雪花維度 當事實表有多個維度但不是所有維度都直接與事實表進行關聯時,我們稱之為雪花維度。比如,產品維度直接關聯事實表,但是產品維度又關聯分類維度,此時我們稱之為雪花維度。2 建立雪花維度 維度 右鍵 新建維度 使用現有表 資料來源檢視 adventureworksdw 主表...

5 2 2 SSAS 維度 父子維度

維度 父子維度的建立 1 父子維度 當維度表為自引用結構時,可以建立父子維度。自引用結構可以反映不限制層級深度的多叉樹結構。2 建立父子維度 維度 右鍵 新建維度 使用現有表 資料來源檢視 adventureworksdw 主表 dimemployee 鍵列 employeekey 名稱列 firs...

SSAS對稱維度與非對稱維度

對於我的理解來說,兩種維度只是對父子級別的不同表達方式而已,對稱維度適合子級的數量固定的結構,例如時間維度 年 季度 月 周等都是對稱的,每一年有固定的4季度,以此類推 而非對稱維度就是子級數量不固定的結構特別適用,例如產品維度 有些產品只有大類,有些還細分小類 非對稱維度就已經脫離了傳統關係資料的...