本文綜合描述ssas庫的處理的幾種方案,並簡單介紹各種方案的應用場景。
環境約定:sql server 2008
示例庫:adventure works dw
方式一:直接在專案中process
這種方法在開發階段和測試階段是經常使用的。
如圖這種處理方式通常是第一次的全量處理,如果ssas庫猶更新的話會提示先部署。
可以看到在出現的process介面中處理的級別是database。
同時也可以直接點選cube(或者是挖掘結構)單獨處理它們:
如果是處理cube的話也會有很多種方式:
同時維度也是可以單獨處理的:
還有,分割槽也是可以單獨處理的(如果存在分割槽的話),不過就不是在solution介面了,而是得開啟cube設計檢視,然後點分割槽:
關於處理增量的選項,在ssas庫剛部署好的時候是沒有的,只有在處理過一次ssas庫之後這個處理選項才會存在。
這個方法是最基本的方法,畢竟ssas庫本身誕生於此。適用於開發和測試階段及生產和開發不是隔離,對安全要求不是很高的情況。
方式二:在ssis包中process
這個方法的優點是定義很方便。
在bids中直接新建專案,選擇商業智慧型下的整合服務專案:
裡面有乙個模組式專門用來處理ssas庫。
可以看到在每乙個模組中可以分別定義都處理什麼內容。
通常,都是先處理維度,然後再處理cube的。
同樣,在這裡可以自己設計增量方案。如果定義好了增量方案的話,按照這種方案走的bi方案就成型了。最後需要做的就是,將ssis包部署到整合服務上,然後設定好job和schedule。
關於cube的增量處理方案,可以參考我的這篇文章:bi筆記之---增量方式處理多維資料集
這種方法應該算是微軟產品線中最標準的方法。適用範圍很廣。
方式三:**中process
**的處理方式雖然比較複雜,但還是比較靈活的,主要還是呼叫amo物件來實現。
這裡只簡單介紹如何處理database級別的邏輯。(通過列舉amo下的server物件的各子物件可以很簡單的定義每個ssas物件的處理)
server _server = new server();
_server.connect("localhost");
database _db = _server.databases["adventure works dw 2008"];
//generate xmla command.
_server.capturexml = true;
//process command.
_db.process();
_server.capturexml = false;
//out put xmla.
foreach (string item in _server.capturelog)
console.writeline("processing");
//execute
xmlaresultcollection _result = _server.executecapturelog(true,true);
console.writeline("process finished");
//out put result
foreach (xmlaresult r in _result) }
console.writeline("finished");
console.readline();
[2011-03-26補充]:另附powershel
l版的process
[void][reflection.assembly]::loadfile("c:\program files\microsoft sql server\100\sdk\assemblies\microsoft.analysisservices.dll")
$server=new-object microsoft.analysisservices.server
$server.connect("localhost")
$db=$server.databases.getbyname("adventure works dw 2008r2")
$server.capturexml=$true
$db.process()
$server.capturexml=$false
write-output "processing..."
$result = $server.executecapturelog($true,$true)
foreach ($r in $result)
}write-out
put "done"
留意**的_server.capturexml部分,由於我們要處理的是database,所以直接列舉到database的時候直接呼叫process方法,其相關的xmla指令就會儲存在_server的capturelog屬性中。**的第乙個foreach就是現實生成的xmla命令的部分。
bi筆記之--- ssas部署的幾種方式
中關於如何以ascmd.exe部署ssas庫的描述。
通過**能處理的ssas粒度很細,參看本文中截圖中的add analysis services object可以看到能列舉到的都有哪些物件,另外通過下列**,也可以把這些物件都列舉出來:
server _server = new server();
_server.connect("localhost");
foreach (database _db in _server.databases) }
foreach (cubedimension _dm in _cube.dimensions) }
} 以下是執行結果:
可以看出乙個ssas庫基本上是這樣乙個結構:
上圖省略了挖掘結構中的相應部分。
實際處理 cube的時候,就可以在列舉的過程中,加入自己的邏輯來判斷這個ssas物件是否需要被處理,如果需要被處理的話,呼叫其process方法就可以。
通過這種方法也可以間接的實現一種增量方案,不過需要資料倉儲端實體設計上的一些配合,具體方案已經超出本文範圍,但將在後續內容提到。
BI筆記之 合理處理SSAS資料庫的幾點建議
今天又有朋友遇到ssas資料庫處理速度慢的情況,主要是由於資料聚合量確實很大,每次處理都要超過三十分鐘,有沒有什麼方法能讓處理的時間少一些呢?從事bi工作有七個年頭了,這樣類似的問題絕對可以排在職業圈內top 10的faq當中。這樣的問題往往都略有複雜,在此根據遇到過的一些場景,羅列一些自己的經驗。...
Linux筆記之動態庫
動態庫 動態鏈結庫是程式執行時載入的庫,當動態鏈結庫正確安裝後,所有的程式都可以使用動態庫來執行程式。動態鏈結庫是目標檔案的集合。動態鏈結庫的名稱有別名,真名和鏈結名。別名由乙個字首lib,然後是庫的名字,再加上乙個字尾 so 構成。真名是動態鏈結庫的真實名稱,一般總是在別名的基礎上加上乙個小版本號...
個人筆記之python庫安裝
執行平台 windows python版本 python3.x python的庫安裝主要有兩種,第一種比較簡單,可以使用pip,優於我的電腦上安裝了python的多個版本,目前常用的是python3,為了避免混亂,我對程式python改名為python37,如此,如下命令 例如 python37 m...