| 【備注】這是最近在一個(gè)講座中的例子,整理出來給大家參考 
 相關(guān)名詞解釋 SSAS: SQL Server Analysis Service。這是微軟SQL Server BI(商務(wù)智能)平臺的一個(gè)核心組件,它可以基于UDM(統(tǒng)一維度模型)構(gòu)建多維數(shù)據(jù)集和挖掘模型,支持OLAP(在線分析)和Data Mining(數(shù)據(jù)挖掘) Cube: 多維數(shù)據(jù)集這是SSAS項(xiàng)目設(shè)計(jì)的一個(gè)核心目的,創(chuàng)建多維數(shù)據(jù)集,以便支持OLAP分析。對于Cube而言,不再有行和列的概念,取而代之的是,維度和度量值(以及度量值組) 
 Model-First: 模型先行這是SSAS從2005這個(gè)版本開始支持的一個(gè)新特性,也可以說是一個(gè)設(shè)計(jì)Cube的策略。Model-First指的是,在沒有數(shù)據(jù)倉庫的情況下,先設(shè)計(jì)模型(維度和度量值,以及他們之間的關(guān)系),然后可以根據(jù)這個(gè)模型,反向生成數(shù)據(jù)倉庫。 與該策略對應(yīng)的另外一個(gè)策略是:Database-First(數(shù)據(jù)庫先行),也就是說,在設(shè)計(jì)Cube之前,現(xiàn)有一個(gè)完整的數(shù)據(jù)倉庫,該策略是指根據(jù)數(shù)據(jù)倉庫的結(jié)構(gòu)生成Cube。 這兩種策略各有優(yōu)缺點(diǎn)。Database-first較為簡單,能夠很快生成Cube,快速驗(yàn)證和開始工作。而Model-First則更加適合于現(xiàn)實(shí)的工作中,因?yàn)楹芏鄷r(shí)候,我們在做BI項(xiàng)目的時(shí)候,可能數(shù)據(jù)倉庫是并不存在的。而且過早地關(guān)注數(shù)據(jù)倉庫的物理設(shè)計(jì),也不是一個(gè)非常好的方案。我們應(yīng)該是先關(guān)注分析需求,并且將這些需求轉(zhuǎn)換為我們的模型。 
 這一篇文章用一個(gè)例子演示了如何使用Model-First策略設(shè)計(jì)Cube,并且反向工程生成數(shù)據(jù)倉庫。 1.新建一個(gè)SSAS項(xiàng)目2.啟動新建Cube向?qū)Вㄔ贑ubes文件夾處,右鍵)選擇Creation Method,“ Create an empty cube”。注意,這里也可以根據(jù)模板創(chuàng)建。這兩種都屬于是Model-First的方式 由于目前沒有數(shù)據(jù)庫,所以下圖中只能選擇“None” 接下來給Cube命名,完成操作 3.創(chuàng)建度量值度量值指的是我們在Cube里面需要進(jìn)行分析的一些基礎(chǔ)指標(biāo)。本例中,我們假設(shè)要分析一個(gè)銷售業(yè)務(wù),有兩個(gè)度量值,銷售額和數(shù)量。 首先,創(chuàng)建一個(gè)度量值組(Measure Group),它是用來組織度量值的 將度量值組命名為Sales,并且繼續(xù)創(chuàng)建兩個(gè)度量值,SalesAmount和Quantity 4.創(chuàng)建并編輯維度維度代表了我們在Cube中分析業(yè)務(wù)的角度。本例中,我們創(chuàng)建兩個(gè)維度,時(shí)間維度和客戶維度 首先,創(chuàng)建時(shí)間維度(注意,時(shí)間維度是一個(gè)很特殊的維度,有專門的向?qū)В?/p> 定義時(shí)間段以及我們關(guān)注的時(shí)間信息。這個(gè)時(shí)間段將決定后續(xù)生成數(shù)據(jù)的范圍。 我們甚至還可以定義多個(gè)日歷 接下來,我們創(chuàng)建一個(gè)客戶維度.與時(shí)間維度不同的是,客戶維度一般需要我們自己定義。 【注意】這里也可以使用模板,但為了演示如何設(shè)計(jì)維度,我不用模板 【注意】這里所謂的SCD,指的是漸變維度。該內(nèi)容的討論超出了本文的范圍,有興趣的朋友請參考聯(lián)機(jī)叢書或者我其他的文章。 通過上面的步驟,我們已經(jīng)創(chuàng)建了一個(gè)維度,我們還需要為該維度添加一些屬性(Attribute),例如本例中,我們添加“國家”,“地區(qū)”,“城市”,“性別”四個(gè)屬性,以便利用它們進(jìn)行分析。 【注意】這里應(yīng)該還需要?jiǎng)?chuàng)建層次(Hierarchies),以便提供性能。限于篇幅,本文不做這個(gè)步驟 
 5.將維度與Cube關(guān)聯(lián)維度建立好之后,需要將它與Cube進(jìn)行關(guān)聯(lián)。我們可以先回到Cube Design界面 在左下角的方塊區(qū)域,可以添加維度 將兩個(gè)維度都添加進(jìn)來 光這樣做還是不夠的,我們需要設(shè)置維度與度量值的關(guān)系。切換到Dimension Usage界面 點(diǎn)擊每個(gè)維度右側(cè)那個(gè)小按鈕,設(shè)置關(guān)系為”Regular” ,下圖是時(shí)間維度 下圖是客戶維度 6.生成數(shù)據(jù)庫到上面這樣,我們就完成了Cube的設(shè)計(jì)(當(dāng)然,我們只是做了最簡單的一個(gè)范例),那么如何根據(jù)這個(gè)設(shè)計(jì),生成我們需要的數(shù)據(jù)倉庫呢 首先,在SQL Server中創(chuàng)建一個(gè)空的數(shù)據(jù)庫,例如 然后,回到BI Studio中來,在頂部菜單中選擇“Database”==>”Generate Relational Schema” 點(diǎn)擊“New…”來創(chuàng)建一個(gè)新的數(shù)據(jù)源 再次點(diǎn)擊“New…”,指定我們的服務(wù)器和數(shù)據(jù)庫 點(diǎn)擊“Next” 【注意】這里選擇“Use the service account” 點(diǎn)擊“Finish” 點(diǎn)擊“Next” 點(diǎn)擊“Next” 點(diǎn)擊“Next” 點(diǎn)擊“Finish” 這樣就生成好了我們需要的數(shù)據(jù)庫結(jié)構(gòu)。我們可以在SSMS中查看得到 更加特別的地方是,Time這個(gè)維度表里面還包含了數(shù)據(jù) 當(dāng)然,Customers表和Sales表目前是沒有數(shù)據(jù)的,那就需要我們通過設(shè)計(jì)SSIS,將數(shù)據(jù)從業(yè)務(wù)數(shù)據(jù)庫中抽取過來。這個(gè)內(nèi)容已經(jīng)超出了本文的范圍。 
 7. 部署項(xiàng)目我們可以將這個(gè)設(shè)計(jì)好的SSAS項(xiàng)目部署起來看看效果如何 部署成功之后,下圖就可以看到我們熟悉的OLAP分析的界面了 | 
|  |