例子
就以下面這個航班項目為例,分别進行切片、切塊、鑽取、旋轉、移動和與移動平均值的計算
(圖中有個錯誤,事實表沒有主鍵的辨別,是我一開始忘了設定組合鍵)
數倉個人作業(四)使用SSAS進行OLAP分析
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL4lEROBTRU5keNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2gzMzEDN1YTMyIjMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
一、切片(Slice)
切片如下圖所示:
數倉個人作業(四)使用SSAS進行OLAP分析
1、點它,在excel中進行分析(因為在SSAS的浏覽器中,它僅顯示單維資料,excel可以顯示多元資料)
2、拖拽“到達城市”到“行”(這裡根據你的需求拖你的屬性),左邊出現城市的列
3、拖拽“航空公司”到“列”
4、拖拽“...計數”到“值”
5、拖拽“飛行日期”到“篩選”
6、篩選一個時間,即完成切片
7、(可忽略)如果在在SSAS浏覽器中做,是這樣的
二、切塊
1、參考切片,切塊是選擇更多的時間
2、在SSAS浏覽器中的展現如下
三、下鑽
我的了解是,在excel裡面設定多個行。也就是讓它有多層的結構可以展開,展開的過程就是細化的過程,下鑽大概是這個意思。
這裡我的時間維表沒有設定好,如果把時間維設定成分開的年月日,則“行”裡面就是“年”、“月”、“日”
四、上卷
上卷是相對于下鑽的,下鑽是添加多行,那麼上卷就是删掉一行或多行。這樣就是泛化的過程,不想下鑽能看到更多的細節。
五、旋轉
就是把行列互換
六、移動和
上面5個操作,我們看到的都是某一時間點的狀态,現在我們想看到表在不同時間點的變化趨勢,就要用到移動和。這是要寫MDX代碼的。是以我們從“浏覽器”切換到“計算”,在右邊灰色的方框内寫代碼。
教材上已經有了示例,這裡我改了一下分析的行和值。
CALCULATE;
CREATE MEMBER CURRENTCUBE.[MEASURES].[sum of three days]
AS sum(
[Time Dim].[Filght Date].currentMember.Lag(2):
[Time Dim].[Filght Date].currentMember,
[Measures].[Frequent-flyer Flight Segment Fact Table 計數]
),
FORMAT_STRING="CURRENCY",
NON_EMPTY_BEHAVIOR={[Measures].[Frequent-flyer Flight Segment Fact Table 計數]},VISIBLE=1
這個代碼的意思:
第一句是固定的,不管。
第二句是建立一個成員,也可以說是一列屬性,它叫sum of three days(也就是移動和)。
第三句到第六句,我們抽象成這樣:sum(A:B,C),其中A是 [Time Dim].[Filght Date].CurrentMember.Lag(2) ,B是 [Time Dim].[Filght Date].CurrentMember,這就代表 A是B的前兩行,Lag(2)方法就是擷取前兩行的意思。A和B之間的冒号就是代表從A到B的意思,求和的列是C(也就是[Measures].[Frequent-flyer Flight Segment Fact Table 計數] )。是以,sum(A,B,C)代表着求從目前行到前一行關于列 [Frequent-flyer Flight Segment Fact Table 計數](乘車人次)的和。
後面兩句不是很懂,但是并不影響程式執行。
運作過程是這樣的:
把代碼放進去,注意結尾不能有分号,不然報錯。然後儲存。右鍵項目部署,成功後直接打開excel。
excel裡面多了“數值”這一項,行的選擇必須是代碼中設定的日期。這樣就有移動和了。
七、移動平均
移動平均隻用把sum改成avg
CALCULATE;
CREATE MEMBER CURRENTCUBE.[MEASURES].[sum of three days]
AS avg(
[Time Dim].[Filght Date].currentMember.Lag(2):
[Time Dim].[Filght Date].currentMember,
[Measures].[Frequent-flyer Flight Segment Fact Table 計數]
),
FORMAT_STRING="CURRENCY",
NON_EMPTY_BEHAVIOR={[Measures].[Frequent-flyer Flight Segment Fact Table 計數]},VISIBLE=1
其他操作如六所示。