通过 ASHX 服务查询 OLAP Cube

Posted

技术标签:

【中文标题】通过 ASHX 服务查询 OLAP Cube【英文标题】:Querying OLAP Cubes via ASHX Service 【发布时间】:2016-08-25 18:49:31 【问题描述】:

我正在使用以下代码在 C# 中执行查询:

        // Create Connection String
        AdomdConnection testConnection = new AdomdConnection("Data Source=*****;User ID=******;Provider=MSOLAP.6;Persist Security Info=True;Impersonation Level=Impersonate;Password=******");

        // Test Open
        testConnection.Open();

        // Make Query
        AdomdCommand cmd = new AdomdCommand(@"SELECT  [Measures].[Payment Amount]  ON COLUMNS,
                                              [Charging Low Orgs].[Charging Division].[Charging Division]  ON ROWS 
                                              FROM [Payments]", testConnection);

        AdomdDataReader dataReader = cmd.ExecuteReader();

        // Close Connection
        testConnection.Close();

我在 cmd.ExecuteReader() 调用中不断收到此错误:

"用于分析解析器的 XML:未指定 CurrentCatalog XML/A 属性。"

我能找到的唯一与此相关的文献是查询未解析,因为未设置模拟,但我在连接字符串中指定了这一点。

另一篇我认为不相关的文章说在 Excel 上启用 BAM,但我在 Excel 中没有该选项,我看不出这会对 Web 服务产生什么影响。

请帮忙!

【问题讨论】:

【参考方案1】:

以下示例在连接字符串中包含一个目录参数:

static void Main(string[] args)
        
            AdomdConnection conn = new AdomdConnection(
                "Data Source=localhost;Catalog=Adventure Works DW Standard Edition");
            conn.Open(  );

            string commandText = "SELECT [Measures].[Sales Amount], " +
                "[Measures].[Gross Profit Margin] ON COLUMNS, " +
                "[Product].[Product Model Categories].[Category] ON ROWS " +
                "FROM [Adventure Works] " +
                "WHERE ([Sales Territory Country].[United States])";

            AdomdCommand cmd = new AdomdCommand(commandText, conn);
            AdomdDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

【讨论】:

谢谢!我稍微混淆了连接字符串,但我认为目录将假定为在数据源中带有“\”。

以上是关于通过 ASHX 服务查询 OLAP Cube的主要内容,如果未能解决你的问题,请参考以下文章

在 Excel 中使用 VBA,如何获取服务器上所有 OLAP Cube 的名称?

查看 OLAP Cube 的最佳软件 [关闭]

在 Snowflake 中构建 OLAP Cube

如何从 Mondrian OlapConnection 获取 org.olap4j.metadata.Cube

Where - OLAP Cube 中的 In 子句

使用 Python 连接到 SSAS OLAP Cube