日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用SQL Server Analysis Services Tabular Model建立分析模型

發(fā)布時間:2025/1/21 数据库 92 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用SQL Server Analysis Services Tabular Model建立分析模型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

微軟在最新版本的SQL Server中加入了Tabular Model,目的在于降低數(shù)據(jù)分析的門檻,使各個業(yè)務(wù)部門的人員通過簡單的IT培訓(xùn),制作出符合自己需要的分析模型。

由于其降低了操作門檻,所以各個部門的業(yè)務(wù)人員可以不用等IT部門的長時間響應(yīng)就可以制作出簡單的分析模型。

本文根據(jù)微軟提供的官方示例以及教程,簡單介紹Tabular Model的建立過程,為了簡便省略了官方教程中部分內(nèi)容,并加入了自己的理解和評論,這些內(nèi)容只代表本人(哥本哈士奇,代號aspnetx,英文名Wade)的觀點,不代表微軟公司以及本人所在的公司的觀點。

?

?

一些跟文章不相關(guān)的內(nèi)容:

年前年后一忙,體重雖然沒漲,但人真的變了憔悴好多,最近也剛剛把書本拿起來看。此篇分兩個時間點編寫,中間隔了一周多。作為新東西,接觸起來好困難,畢竟微軟設(shè)計它的定位就不一樣,不過還是硬著頭皮看了下來,也算是跟先前一個朋友的約定有個交代。

下面進(jìn)入正文。

?

?

在進(jìn)行實例的操作之,前需要檢查SSAS的Tabular Model是否有被安裝。需要注意的是,跟SQL Server 2012之前的版本不同,這個實例是單獨的一個分析服務(wù)實例,需要單獨安裝。

如圖,在SQL Server的分析服務(wù)安裝過程中,會多出來這樣一個分析服務(wù)類型的選擇界面,選擇第二個Tabular Mode就可以。如果你的機(jī)器中已經(jīng)安裝過默認(rèn)的分析服務(wù)實例,那么這個服務(wù)只能以新實例的方式存在。

安裝完成之后,就可以在服務(wù)列表中看到被安裝的服務(wù)。

比如圖中,我有兩個分析服務(wù)的實例,一個是默認(rèn)的MSSQLSERVER,運行多維和數(shù)據(jù)挖掘模式,一個MSBI實例,運行Tabular Mode模式。兩個模式是不能存在于同一個分析服務(wù)實例當(dāng)中的,只能放到不同的實例當(dāng)中去。

?

確認(rèn)好實例已經(jīng)被安裝之后,打開SQL Server Data Tools。跟前幾個版本一樣,這個工具實際上還是Visual Studio 2010的一個shell。但是跟以前的版本不同,這個版本不再以VS命名了,而是直接Data Tools來命名。而且如果你在用Windows 8,那么在小塊塊中找到SSDT確實很費勁,比較好的方法是點下開始按鈕出現(xiàn)Metro界面后直接在鍵盤上敲data,在過濾出來的應(yīng)用程序列表中,通常第一個就是。

?

打開SQLServer Data Tools之后,選擇File->New Project新建SSAS Tabular Model項目。

在VS Shell下可以看到新建項目下除了以往的SSAS項目之外又多了一個Analysis Services Tabular Project,就是這個。

然后會彈出一個窗體讓你選擇一個分析服務(wù)實例,這里要選擇安裝了Tabular Model的分析服務(wù)實例。Compatibility Level根據(jù)已經(jīng)部署好的實例版本選擇就可以。

,

如果Compatibility Level和服務(wù)器的版本不匹配,會出現(xiàn)錯誤提示:

確認(rèn)好之后,會看到解決方案管理器中的項目結(jié)構(gòu)。

這個結(jié)構(gòu)真的要比傳統(tǒng)的分析服務(wù)簡單好多,只有一個bim文件,不想傳統(tǒng)的多維模式一樣,會單獨把數(shù)據(jù)遠(yuǎn)視圖,CUBE,維度等都單獨區(qū)分開。也許IT開發(fā)人員會覺得這樣就一個bim文件很別扭,但這個工具終究是定位給業(yè)務(wù)人員使用的,畢竟要遵從業(yè)務(wù)人員使用Excel和Access的大多數(shù)習(xí)慣。

雙擊打開項目中自動建立好的Model.bim文件,會看到VS Shell中的菜單中多出一個Model項,點擊它,選擇Import From Data Source…

然后會看到項目支持的數(shù)據(jù)源類型:

這里需要留意的是,根據(jù)Tabular Mode模式的不同,所支持的數(shù)據(jù)源類型也會不同。在In Memory模式下,相對支持的數(shù)據(jù)源要多一些。而在Direct Query中,只支持微軟自家的數(shù)據(jù)源。

這里選擇默認(rèn)的Microsoft SQL Server,然后下一步。

這里選擇微軟官方的Data Warehouse for Adventure Works數(shù)據(jù)庫。這些示例的數(shù)據(jù)庫的下載和安裝方法請參考我先前關(guān)于如何獲取和安裝微軟SQL Server官方示例庫的文章,里面有詳細(xì)的介紹,你可以通過在本文下面的文章引用列表中找到。

然后會看到模擬信息對話框,由于這里是練習(xí),為了實驗順利進(jìn)行,所以敲一個本地的管理員身份賬號進(jìn)去就可以了。當(dāng)然實際的生產(chǎn)環(huán)境中建議為其配置單獨的賬戶來維護(hù)數(shù)據(jù)源的權(quán)限訪問信息。

輸入好之后點下一步。

這里會讓你指定如何導(dǎo)入數(shù)據(jù),是通過選擇表或者視圖的方式還是通過查詢的方式。這里默認(rèn)選擇第一個,點下一步。

之后會列出剛才指定數(shù)據(jù)庫下的所有表,這里我們只選擇其中的幾張表,并且為它們重新定義一個友好一點的名稱。

Source name

Friendly Name

DimCustomer

Customer

DimDate

Date

DimGeography

Geography

DimProduct

Product

DimProductCategory

Product Category

DimProductSubcategory

Product Subcategory

FactInternetSales

Internet Sales

?

選擇好需要用哪些表之后,因為一個表里不一定所有的字段都是分析時要用到的,所以還要再對表里的字段進(jìn)行過濾。

首先過濾Customer表,選中這張表后,點擊Preview & Filter。

這里通過反勾選列上面的CheckBox過濾掉不需要的字段。在Customer中需要過濾掉的字段(注:是反選下列各表中提及的字段,以達(dá)到把相應(yīng)列從表模型中剔除出去的目的):

Customer

SpanishEducation

FrenchEducation

SpanishOccupation

FrenchOccupation

?

過濾完成后,可以看到已經(jīng)被過濾的表已經(jīng)打好了標(biāo)記:

然后,再按照如下表中的定義,把相應(yīng)的字段過濾掉。

Date

DateKey

SpanishDayNameOfWeek

FrenchDayNameOfWeek

SpanishMonthName

FrenchMonthName

DateTimeAlternateKey

?

Geography

SpanishCountryRegionName

FrenchCountryRegionName

IpAddressLocator

?

Product

SpanishProductName

FrenchProductName

FrenchDescription

ChineseDescription

ArabicDescription

HebrewDescription

ThaiDescription

GermanDescription

JapaneseDescription

?

Product Category

SpanishProductCategoryName

FrenchProductCategoryName

?

Product Subcategory

SpanishProductSubcategoryName

FrenchProductSubcategoryName

?

Internet Sales

OrderDateKey

DueDateKey

ShipDateKey

?

過濾完畢后,點擊完成,結(jié)束數(shù)據(jù)的導(dǎo)入設(shè)置,之后開始導(dǎo)入數(shù)據(jù)。

導(dǎo)入完成后點擊Close,然后在VS Shell中看到被導(dǎo)入的數(shù)據(jù)。

?

然后,標(biāo)識時間表。選擇導(dǎo)入的Date表,選擇菜單欄的Table項,Date下面的Mark As Date Table。

只有當(dāng)一個時間維度的表被這樣標(biāo)識過之后,一些基于時間的智能函數(shù)才會起作用。

?

接下來定義表之間的關(guān)系。

選擇菜單欄下的Model->Model View->Diagram View。

這里可以看到在Data Warehouse中定義的關(guān)系已經(jīng)被自動導(dǎo)入了進(jìn)來。這里只需要確認(rèn)下就可以。

很多實際的項目當(dāng)中,開發(fā)人員往往不愿意使用外鍵來關(guān)系表里的數(shù)據(jù),而是在傳統(tǒng)的多維模型項目中,靠維度用法來指定關(guān)系。如果是這種情況那么在這里,表間的關(guān)系是一定要指定的,否則系統(tǒng)將無法根據(jù)這些關(guān)系來"算"數(shù)據(jù)。

然后需要手動設(shè)置Internet Sales和Date之間的關(guān)系。在表Internet Sales中,Order Date, Due Date和Ship Date跟Date表中的FullDateAlternateKey關(guān)聯(lián)。設(shè)置的方法跟以往的工具一樣,比如,拖拽表Internet Sales的字段Order Date到表Date中FullDateAlternateKey字段就可以。

?

關(guān)系創(chuàng)建好之后,再繼續(xù)計算列的添加。計算列也可以叫派生列,也就是一個新的列,這個列的值是由其它數(shù)據(jù)計算而來的。

首先,切換回表格模式,選擇Model->Model View->Data View。

選擇Date表,可以看到表的最右邊有一個Add Column。

選中下面任意一行,然后在fx里輸入公式:

=RIGHT(" " & FORMAT([MonthNumberOfYear],"#0"), 2) & " - " & [EnglishMonthName]

值得一提的是,公式編輯區(qū)的智能感知功能很贊。還有,這里不是MDX表達(dá)式,而是DAX,跟Excel的公式很像。

公式輸入完成后,按回車,可以看到這一列右下角的更新進(jìn)度條。

更新完畢后,可以看到根據(jù)公式計算好的數(shù)據(jù),最后為其重新命名,右鍵新加的這一列,選擇Rename Column。

然后再為Product表創(chuàng)建度量。(此步不建議忽略,后面創(chuàng)建層次的時候要用到)

新列名:Product Subcategory Name

公式:=RELATED('Product Subcategory'[EnglishProductSubcategoryName])

新列名:Product Name

公式:=RELATED('Product Category'[EnglishProductCategoryName])

?

?

然后,為模型添加度量。

如上圖,在每個表界面中,分為上下兩個部分,上部分為導(dǎo)入的表,下部分為模型中包含的度量。

如果看不到下面的度量列表,可以點擊菜單中的Table->Show Measure Grid。

標(biāo)注:如果你熟悉以前的多維模式,那么你可以理解為上面是數(shù)據(jù)源視圖,下面為Cube設(shè)計視圖。

在Tabular Mode模式添加度量的方法是單擊度量視圖左上角。然后在公式區(qū)域輸入公式:

=COUNTROWS( DATESQTD( 'Date'[FullDateAlternateKey]))

待度量更新后,可以看到系統(tǒng)自動為這個度量起了個名字:

然后將這個度量重新命名,方法是在公式區(qū)域直接選中Measure 1然后將其修改成想要的名字即可。這里將其修改成:

Days Current Quarter to Date

也可以在公式區(qū)域中輸入完整的格式,也就是度量值名稱+公式的格式,比如再建立一個度量值,公式區(qū)域中直接輸入:

Days in Current Quarter:=COUNTROWS( DATESBETWEEN( 'Date'[FullDateAlternateKey], STARTOFQUARTER( LASTDATE('Date'[FullDateAlternateKey])), ENDOFQUARTER('Date'[FullDateAlternateKey])))

可以看到名稱為Days in Current Quarter的度量已經(jīng)被建立。

?

最后,在事實表Internet Sales表中添加度量。相對前面的方法直接敲公式,這里的方法相對更簡單一些。

切換到Internet Sales表,選中列SalesOrderNumber,然后單擊工具欄中的公式圖標(biāo)。

然后就可以看到一個以Distinct Count匯總方式計算的度量。

至此,一個基于事實表的度量值列添加完成。

?

接下來繼續(xù)添加維度層次關(guān)系。這里創(chuàng)建一個產(chǎn)品分類的層次結(jié)構(gòu),其中根據(jù)數(shù)據(jù)包含產(chǎn)品的一級分類和二級分類。

切換到Diagram模式,右鍵Product表,點擊Create Hierarchy。

可以看到在表的下面一個層次關(guān)系已經(jīng)被建立。

右鍵單擊新建的層次,選擇Rename將其重命名為Category。

在表中找到Product Category Name和Product Subcategory Name兩列,依次拖拽到層次Category下。(注,這兩列是先前在Product表里創(chuàng)建的)

然后,將Category下的兩個層次分別命名成Category和SubCategory。

至此,Product的層次創(chuàng)建完成。

再演示下給Date表加一個時間層次。這個層次將包含從年到月再到天的時間導(dǎo)航。(根據(jù)需要你也可以加入半年合季度等層次)

首先還是根據(jù)前面的方法一樣,右鍵Date表選擇Create Hierarchy,創(chuàng)建好一個層次后再將其重命名為Calendar,然后將表中的CalendarYear,MonthNumberOfYear和DayNumberOfMonth一次拖拽到層次下。

然后再將這三個層次分別命名為Year, Month和Day。

這樣,一個Calendar層次結(jié)構(gòu)創(chuàng)建完成,此外,還可以根據(jù)這個表創(chuàng)建財務(wù)日期層次等多個層次。具體方法參考Calendar的創(chuàng)建即可。

?

?

到這里,這個Tabular Mode的分析模型創(chuàng)建好了,可以在Excel里查看下這個分析模型。

方法是在工具欄中點擊Analyze in Excel。

然后彈出對話框讓你指定用哪個用戶來瀏覽數(shù)據(jù)。

根據(jù)本篇的內(nèi)容這里直接選擇OK就可以。

每次出現(xiàn)這個界面可能很煩,但在實際開發(fā)中它還是很方便的,因為我們配置好權(quán)限后,通過這里可以很好的去驗證下配置的權(quán)限是否生效。

點擊OK后,熟悉的Excel界面被打開。

可以看懂啊這就是一個透視表。從這里也可以看到,Tabular Mode最終暴露給的用戶接口實際上和傳統(tǒng)的多維模式一樣,只不過底層的數(shù)據(jù)存儲方案不一樣。相對中小規(guī)模的數(shù)據(jù)來說,Tabular Mode的In Memory緩存更有優(yōu)勢,而對于比較大比較復(fù)雜的業(yè)務(wù)分析來說用傳統(tǒng)的多維方式更具有優(yōu)勢。當(dāng)然,我們更愿意看到未來的版本中,會出現(xiàn)兩個方案的"中間方案"結(jié)合兩邊的優(yōu)點。

透視表對于業(yè)務(wù)部門來說是最熟悉不過的工具,如何 操作屬于Excel部分的內(nèi)容,這里不再做具體的講解。

?

?

到這里,一個簡單的基于Tabular Mode的分析模型構(gòu)建完成了。

?

?

?

總結(jié):

整個操作過程下來,根絕Tabular Mode項目的操作模式跟傳統(tǒng)的多維模式區(qū)別很大,有些地方甚至很難去適應(yīng),想找的東西往往需要很久才可以找的到,甚至根本找不到,比如在線打開一個Tabular Mode。不過微軟這樣設(shè)計也并不是沒有道理,傳統(tǒng)的多維模型定位是給IT人員的,我們已經(jīng)適應(yīng)了那種模式,而Tabular Mode是定位給業(yè)務(wù)部門來操作的,確實很多操作都跟Excel和Access很像。所以有這樣的區(qū)別也是可以理解的。

另外有一點需要注意的是,Tabular Mode中的查詢語言用的是DAX而不是傳統(tǒng)的MDX,DAX的寫法也許更像Excel,相對來說對于業(yè)務(wù)部門的人員來說更容易讀懂。

總之,Tabular Model的提出降低了分析模型的開發(fā)難度,使具有基本IT技能的各個業(yè)務(wù)部門可以根據(jù)已有的數(shù)據(jù)倉庫開發(fā)出符合自己需要的簡單數(shù)據(jù)分析模型,而無需每次向IT提需求然后等待長時間的響應(yīng)之后才可以繼續(xù)工作。另外它的內(nèi)存緩存模式確實也很具有吸引力,簡單的數(shù)據(jù)分析模型可以在上面得到快速的響應(yīng)。

但在一定意義上來說,Tabular Model不會取代傳統(tǒng)的多維分析模型,更不會替代整個BI的架構(gòu)。首先它是分析服務(wù),在整個BI框架中它只是其中的一層,底層的數(shù)據(jù)倉庫還需要做很多的ETL工作。而它對于傳統(tǒng)的多維模型,由于彼此的數(shù)據(jù)存儲形式不同,所以它們還是會長時間的對立存在,表模式的更適合業(yè)務(wù)人員來操作,多維模型更適合復(fù)雜結(jié)構(gòu)并且有IT部門來完成的情況,更何況后者還有數(shù)據(jù)挖掘的部分。未來即使有整合,我個人預(yù)測也是在多位模型中加入In Memory Cache的功能,其它不會有太大的改變。

總結(jié)

以上是生活随笔為你收集整理的使用SQL Server Analysis Services Tabular Model建立分析模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。