2011-12-12 185 views
2

我有一個要求,我需要從SSAS多維數據集檢索數據並將其發送到OData。如何做到這一點?任何幫助將不勝感激。任何指向示例代碼的指針也將不勝感激。使用WCF數據服務訪問SSAS多維數據集

感謝和問候,

Venkatesh。 S

回答

0

我假定它是SSAS立方體。不確定這樣做的特定框架。 但是有一個可能的解決方案: 用存儲過程包裝多維數據集(MDX)。 (通過SP從MDX訪問SSAS) 您可以創建WCF數據服務,添加EM併爲EM指定存儲過程。你應該能夠將它們暴露爲oData。

+0

有關如何通過存儲過程訪問MDX的更多信息:可以使用openquery:SELECT * FROM OPENQUERY(linked_server_olap,mdx_query) – Lokeshwer

+0

感謝您的快速響應。我從WCF數據提供者的角度看更多。是否編寫自定義提供程序或反射提供程序以直接獲取底層數據。 – Venkatesh

1

您可以使用ADOMD.Net執行查詢並使用wcf發送結果。以下是我通常使用的課程。

class MDXQueryEngine : IMDXQueryEngine 
{ 
    private readonly string _serverName; 
    private readonly string _initalCatalog; 

    public MDXQueryEngine(string serverName, string initalCatalog) 
    { 
     _serverName = serverName; 
     _initalCatalog = initalCatalog; 
    } 

    public TResult Execute<TResult>(MDXQuery query, Func<IDataReader, TResult> work) 
    { 
     var connectionString = string.Format("Data Source={0}; Initial Catalog={1}", _serverName, _initalCatalog); 
     TResult result; 

     using (var conn = new AdomdConnection(connectionString)) 
     { 
      conn.Open(); 
      using(var cmd = conn.CreateCommand()) 
      { 
       cmd.CommandText = query.Expression; 
       using (var reader = cmd.ExecuteReader()) 
       { 
        result = work(reader); 
       } 
      } 
     } 

     return result; 
    } 
} 
+0

嗨,埃裏克,你能否詳細解答你的答案?我是整個MDXQuery世界的新手,最好能提供一個請求執行和填充模型的示例。 –

+0

只需補充一點,理想情況下,Iw應該考慮與EF集成的解決方案。比方說,我有一個模型結構,我定義了一個基於模型的查詢。一個簡單的例子可以做到。 –

1

您可以使用LINQ和ADO.NET實體框架查詢SSAS多維數據集。 您需要SSAS實體框架提供,以便能夠做到這一點: http://agiledesignllc.com/products

此選項使構建WCF數據服務簡單和瑣碎。

相關問題