2011-12-12 147 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数据服务简单和琐碎。

相关问题