使用WCF数据服务访问SSAS多维数据集

使用WCF数据服务访问SSAS多维数据集,ssas,odata,wcf-data-services,Ssas,Odata,Wcf Data Services,我需要从SSAS多维数据集中检索数据并将其发送给OData。如何做到这一点?任何帮助都将不胜感激。任何指向示例代码的指针都将非常感谢 感谢和问候 文卡特什。我假设它是SSAS立方体。不确定是否有特定的框架可以这样做。 但有一种可能的解决办法: 使用存储过程包装多维数据集(MDX)。(从SP使用MDX访问SSA) 您可以创建WCF数据服务,添加EM并为EM指定存储过程。您应该能够将它们公开为oData。您可以使用ADOMD.Net执行查询并使用WCF发送结果。下面是我通常使用的类 class MD

我需要从SSAS多维数据集中检索数据并将其发送给OData。如何做到这一点?任何帮助都将不胜感激。任何指向示例代码的指针都将非常感谢

感谢和问候


文卡特什。我假设它是SSAS立方体。不确定是否有特定的框架可以这样做。 但有一种可能的解决办法: 使用存储过程包装多维数据集(MDX)。(从SP使用MDX访问SSA)
您可以创建WCF数据服务,添加EM并为EM指定存储过程。您应该能够将它们公开为oData。

您可以使用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;
    }
}
类MDXQueryEngine:IMDXQueryEngine
{
私有只读字符串_serverName;
私有只读字符串_initalCatalog;
公共MDXQueryEngine(字符串serverName,字符串initalCatalog)
{
_serverName=serverName;
_initalCatalog=initalCatalog;
}
公共TResult执行(MDXQuery查询,Func工作)
{
var connectionString=string.Format(“数据源={0};初始目录={1}”,_serverName,_initalCatalog);
结果结果;
使用(var conn=new AdomdConnection(connectionString))
{
conn.Open();
使用(var cmd=conn.CreateCommand())
{
cmd.CommandText=query.Expression;
使用(var reader=cmd.ExecuteReader())
{
结果=工作(读者);
}
}
}
返回结果;
}
}

您可以使用LINQ和ADO.NET实体框架查询SSAS多维数据集。 您需要SSAS实体框架提供程序才能做到这一点:


此选项使构建WCF数据服务变得简单明了。

有关如何通过存储过程访问MDX的详细信息:您可以使用openquery:SELECT*FROM openquery(链接的服务器olap、MDX查询),感谢您的快速响应。我更倾向于从WCF数据提供者的角度来看。是编写自定义提供程序还是反射提供程序来直接获取底层数据。嗨,Eric,你能详细说明你的答案吗?我是整个MDXQuery领域的新手,理想情况下,您能提供一个请求执行和填充模型的示例吗。假设我有一个模型结构,我定义了一个基于模型的查询。一个简单的样品就可以了。