2013年9月12日 星期四

[DMVs]Analysis Services也有專用的DMVs

        前一篇文章我介紹了幾個XMLA的例子,不管是Process,Backup或Restore都是XMLA的命令,但其實我最先接觸的是XMLA的方法,因為我想取得Cube的Metadada,所以我使用Diccover方法,可是發現實在太難用了,後來發現竟然有替代Discover方法的的東西,就是Data Management Views (DMVs)

        看到DMVs,DBA應該都很熟悉,不過這個是Analysis Services(AS)的DMVs,不是SQL Server(SQL)的DMVs,使用起來是有差異的喔
  • 工具:SQL的DMVs是用Database Engine Query,而AS的DMVs得用MDX Query或DMX Query
  • 查詢語法:SQL的用的是Transact-SQL的Select,而AS的是SELECT (DMX)
         雖然有些差異,但可不要因此放棄它,這比起直接用XMLA來說已經簡單很多了呢,舉個例子看就了,比如說想取得AS上的所有Database
  • XMLA Query
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
     <RequestType>DBSCHEMA_CATALOGS</RequestType>
     <Restrictions>
         <RestrictionList>
         </RestrictionList>
     </Restrictions>
     <Properties>
         <PropertyList>
              <Content>Data</Content>
         </PropertyList>
     </Properties>
</Discover>

  • MDX Query
--List All Databases
SELECT * FROM $SYSTEM.DBSCHEMA_CATALOGS


        比較一下XMLA Query與MDX Query,同樣使用DBSCHEMA_CATALOGS這個Schema Rowset,MDX Query只要一行較熟悉的Select,就解決了,而就結果集來說,MDX Query回傳的是容易讀取與複製的資料表格式呢,比較起來是不是簡單很多

         下面示範取得Measures與Dimension的Metadata

         Measures的

-- Measures details
SELECT  [CUBE_NAME],
        [CATALOG_NAME],
         [MEASUREGROUP_NAME],       
         [MEASURE_UNIQUE_NAME],
        [MEASURE_NAME],
        [MEASURE_UNIQUE_NAME],
        [MEASURE_CAPTION],
        [DESCRIPTION] + [EXPRESSION] AS [Description]
FROM $SYSTEM.MDSCHEMA_MEASURES
WHERE  [CUBE_NAME]= 'Adventure Works'
ORDER BY [MEASUREGROUP_NAME]


         Dimension的

-- Dimensions details
SELECT  [CUBE_NAME],
        [CATALOG_NAME],
        [DIMENSION_UNIQUE_NAME] AS Dim_Name,
        LEVEL_NAME AS Attribute_Name,
        [LEVEL_UNIQUE_NAME] AS Dimension_Attribute_Level,
        [LEVEL_CAPTION],
        [DESCRIPTION] AS [Description]
FROM $SYSTEM.MDSCHEMA_LEVELS
WHERE
--[LEVEL_NUMBER] <> 0
--AND  
[LEVEL_IS_VISIBLE]
AND  [CUBE_NAME]= 'Adventure Works'


        看到這有沒有覺得取得Cube的Metadata很容易啊,這對於要出Cube的文件會方便,下面提供幾個很有參考價值的連結

0 意見:

張貼留言