2013年8月28日 星期三

[SSAS]XMLA的用途

        之前當DBA時,有看過XMLA的格式,但覺得長的跟XML幾乎一樣的東西,我要拿來作什,XML不是通常做為資料交換的標準,要不就是當作Configuration Files嗎?又不能拿來當作命令執行,所以忽略它了,就因為當時我沒深入研究它

        如今身為BI Engineer,又再次接觸XMLA,才知道它是基於SOAP的XML協定,還是OLAP的工業標準呢!Microsoft,Hyperion與SAS都支援它喔,透過XMLA就可以跟OLAP溝通


        講了兩段廢話你還不知道它好處在哪,它好處就是可以REUSE喔,好的DBA會準備大量T-SQL的Best Practice,用意也是要能重複使用,所以需要開發OLAP的人,也應該有效利用XMLA喔,而且Microsoft很好心,使用SSMS就可以直接編輯並執行XMLA喔,非常方便呢

        我這邊介紹幾個我覺得很簡單且實用的範例,幾乎是直接用SSMS就可以產生了囉

        第一個就是Cube的[Process],用SSMS連到Analysis Services,對某個Database按右鍵,選[Process]


        在[Process Database]視窗下,直接點選[Script]


        就會幫你產生如下的xmla喔,就可以存成Process.xmla,之後要處理哪個Cube就可以直接用,改藍色粗體字的地方就可以了,很簡單

 <Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Parallel>
    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300">
      <Object>
        <DatabaseID>AdventureWorksDW2012Multidimensional-EE</DatabaseID>
      </Object>
      <Type>ProcessFull</Type>
      <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
    </Process>
  </Parallel>
</Batch>

        要怎麼執行xmla也很簡單,直接按[F5],或是點選工具列上的[View]/[Toolbars]/[SQL Server Analysis Services Editors],如下圖


        就會多出可以在xmla編輯器上按Execute的Toolbar囉,如下圖


        在Result窗格看到下圖的訊息就代表執行成功囉

      
        我是建議當需要手動處理Cube時,可以利用Remote Desktop連到SSAS,然後在AS上用SSMS執行剛剛的Process.xmla,會比起用SSMS直接對Cube的Database按右鍵Process來講,執行更迅速,執行進程都有保留,非常推薦這樣用

         接著兩個範例是備份與還原,詳細可參考備份、還原和同步處理資料庫 (XMLA)

        下面是Backup

<Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Object>
        <DatabaseID>AdventureWorksDW2012Multidimensional-EE</DatabaseID>
    </Object>
    <File>D:\OLAP\AdventureWorksDW2012Multidimensional-EE_20130827.abf</File>
    <AllowOverwrite>true</AllowOverwrite>
</Backup>

        下面是Restore

<Restore xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <File>E:\OLAP\AdventureWorksDW2012Multidimensional-EE_20130827.abf</File>
    <DatabaseName>AdventureWorksDW2012Multidimensional-EE</DatabaseName>
    <AllowOverwrite>true</AllowOverwrite>
    <DbStorageLocation xmlns="http://schemas.microsoft.com/analysisservices/2008/engine/100/100">D:\OLAP\STAGING</DbStorageLocation>
</Restore>

        最後是Clear Cache,效能測試會用到的

<ClearCache xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Object>
        <DatabaseID>AdventureWorksDW2012Multidimensional-EE</DatabaseID>
    </Object>
</ClearCache>

        然後xmla可以做的事其實很多,微軟提供的文件很多,但都很零散就是了,以下連結供參考

0 意見:

張貼留言