2010-10-15 79 views
5

我在我的SSAS多維數據集中有許多對象,其中許多對象被創建爲不可見。例如:閱讀SQL分析服務元數據

CREATE MEMBER CURRENTCUBE.[Measures].[Latency Backcolor] 
AS CASE 
    WHEN [Average Latency] > [Web Alert] THEN 6384849 
    WHEN [Average Latency] > [Web Warn] THEN 4577517 
    ELSE IIF ([measures].[Query count] > NULL, 14876123, null) 
END, VISIBLE = 0; 

這是可見的:

CREATE MEMBER CURRENTCUBE.[Measures].[Average Latency] 
AS IIF ([Measures].[Query Count] > 0, [Measures].[Total Ms]/[Measures].[Query Count], null), 
     FORMAT_STRING = "#,##0.00000;-#,##0.00000", 
     BACK_COLOR = [Latency Backcolor], 
     VISIBLE = 1, 
     DISPLAY_FOLDER = 'Overall', 
     ASSOCIATED_MEASURE_GROUP = 'Fact Raw FD'; 

我試過兩種方法來詢問立方體。首先,使用Microsoft.AnalysisServices.AdomdClient命名空間。例如:

using Microsoft.AnalysisServices.AdomdClient; 

var _connection = new AdomdConnection 
{ 
    ConnectionString = "Data Source=localhost;User ID=me;Password=secret;Initial Catalog=dbname", 
    ShowHiddenObjects = true 
}; 

_connection.Open(); 

CubeDef _cube = _connection.Cubes["MyCube"]; 

// _cube.Measures 

我也嘗試了Microsoft.AnalysisServices命名空間。例如:

using Microsoft.AnalysisServices; 

Server server = new Server(); 
server.Connect("Data Source=localhost;User ID=me;Password=secret"); 

Database database = server.Databases.GetByName("dbname"); 

Cube cube = database.Cubes.FindByName("MyCube"); 

// cube.Dimensions 
// cube.MeasureGroups[].Measures 

以上所有內容都是直接從工作代碼中獲取的(儘管爲了提出問題而減少到最小值)。一切工作都完美地與任何代碼,唯一的例外,我不能「看到」我的任何隱藏的對象,如措施。我可能使用原始的MDX,我可以使用第二種技術從數據庫中檢索。 (嚴重)不利的一面是我必須自己解析它,這將是一個真正的嗡嗡聲。有得到是一種方式來達到實際的對象,而不必跳過這麼多的籃球。

謝謝!

回答

2

據我所知,無法通過ADOMD對象模型獲得隱藏措施。您必須使用XML/A並處理生成的XML。

我還建議的另一個解決方案是使用Perspectives而不是直接隱藏措施。正如您可能知道或猜到的,Perspectives用於通過隱藏成員來創建多維數據集的子集。通過這種方式,您可以使用ADOMD對象模型訪問所有度量,並讓用戶只能看到包含在當前Perspective中的多維數據集的成員。