如何在 C# 中从 mdx 查询中检索数据?

发布于 2024-12-25 20:32:34 字数 1691 浏览 5 评论 0原文

我正在尝试使用 Adomdclient 库从 MDX 查询获取数据。我依赖这个例子 http://www.yaldex.com/ sql_server/progsqlsvr-CHP-20-SECT-6.html

MDX 查询:

SELECT {[Measures].[Cantidad Vta],[Measures].[Monto Vta],[Measures].[ExistenciaHistorica],[Measures].[Valor Inventario historico]} DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS , NON EMPTY Hierarchize({DrilldownLevel({[DIM SUBMARCA].[Código].[All]})}) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS FROM (SELECT ({[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Bodega],[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Cadena],[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Outlet]}) ON COLUMNS FROM [JUGUETRONHQ]) WHERE ([DIM FECHA VENTA].[JERARQUIA FECHA VENTA].[Time].&[2012-01-01T00:00:00],[DIM FECHA EXISTENCIA].[JERARQUIA FECHA EXISTENCIA].[All]) CELL PROPERTIES VALUE

像 SqlClient 等其他命名空间一样,使用连接、命令和数据读取器:

using Microsoft.AnalysisServices.AdomdClient;

...

using (AdomdConnection con = new AdomdConnection(connection_string))
{
  con.Open();

  using (AdomdCommand command = new AdomdCommand(query, con)) 
  {
    using (AdomdDataReader reader = command.ExecuteReader()) 
    {
      while (reader.Read())
      {
        for (int i = 0; i < reader.FieldCount; i++)
          Console.Write(reader[i] + (i == reader.FieldCount - 1 ? "" : ", "));
          Console.WriteLine("");

      }
    }
  }
}

但是,此代码片段仅正确显示 5 列中的 4 列:

[DIM SUBMARCA].[Código].[All], , , 3, 825

它必须是:

115200081, , , 3, 825

也许需要强制转换,但我不知道该怎么做。

I am trying to get data from an MDX query using the Adomdclient library. I relied on this example http://www.yaldex.com/sql_server/progsqlsvr-CHP-20-SECT-6.html.

MDX query:

SELECT {[Measures].[Cantidad Vta],[Measures].[Monto Vta],[Measures].[ExistenciaHistorica],[Measures].[Valor Inventario historico]} DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS , NON EMPTY Hierarchize({DrilldownLevel({[DIM SUBMARCA].[Código].[All]})}) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS FROM (SELECT ({[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Bodega],[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Cadena],[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Outlet]}) ON COLUMNS FROM [JUGUETRONHQ]) WHERE ([DIM FECHA VENTA].[JERARQUIA FECHA VENTA].[Time].&[2012-01-01T00:00:00],[DIM FECHA EXISTENCIA].[JERARQUIA FECHA EXISTENCIA].[All]) CELL PROPERTIES VALUE

Like other namespaces such as SqlClient, use a connection, a command and a datareader:

using Microsoft.AnalysisServices.AdomdClient;

...

using (AdomdConnection con = new AdomdConnection(connection_string))
{
  con.Open();

  using (AdomdCommand command = new AdomdCommand(query, con)) 
  {
    using (AdomdDataReader reader = command.ExecuteReader()) 
    {
      while (reader.Read())
      {
        for (int i = 0; i < reader.FieldCount; i++)
          Console.Write(reader[i] + (i == reader.FieldCount - 1 ? "" : ", "));
          Console.WriteLine("");

      }
    }
  }
}

However, this snippet only shows 4 of 5 columns correctly:

[DIM SUBMARCA].[Código].[All], , , 3, 825

It must be:

115200081, , , 3, 825

Perhaps need a cast but I don't know how to do it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

地狱即天堂 2025-01-01 20:32:34

这看起来像是 MDX 查询的问题,而不是数据检索的问题。它没有正确约束 [DIM SUBMARCA].[Código] 维度。

This looks like a problem with the MDX query, not the retrieval of the data. It's not correctly constraining on the [DIM SUBMARCA].[Código] dimension.

人疚 2025-01-01 20:32:34

您的查询有 1 个 [ALL] 级别维度和 4 个度量:

[DIM SUBMARCA].[Código].[All], 
[Measures].[Cantidad Vta],
[Measures].[Monto Vta],
[Measures].[ExistenciaHistorica],
[Measures].[Valor Inventario historico]

这将检索 1 个 [ALL] 列和 4 个值:

[DIM SUBMARCA].[Código].[All], , , 3, 825

115200081 是键值吗?您可以使用“DIMENSION PROPERTIES MEMBER_HEY”获取此值。

Your query has 1 [ALL] Level Dimension and 4 measures:

[DIM SUBMARCA].[Código].[All], 
[Measures].[Cantidad Vta],
[Measures].[Monto Vta],
[Measures].[ExistenciaHistorica],
[Measures].[Valor Inventario historico]

This retrieves 1 [ALL] column and 4 Values:

[DIM SUBMARCA].[Código].[All], , , 3, 825

115200081 is a key value? You could get this value using "DIMENSION PROPERTIES MEMBER_HEY".

轮廓§ 2025-01-01 20:32:34

从 MDX 查询检索数据

添加了 Microsoft.AnalysisServices.AdomdClient.dll 的引用
Adomd连接步骤

AdomdConnection con = new AdomdConnection("connectionstring"); // connect DB con.Open(); AdomdCommand cmd = new AdomdCommand("MDX query", con); //query

AdomdDataReader reader = cmd.ExecuteReader(); //Execute query

    while (reader.Read())   // read
        {
            Data dt = new Data();  // custom class
            dt.Gender = reader[0].ToString();

            dt.Eid = reader[1].ToString();
            dt.salary = reader[2].ToString();
            data.Add(dt);
        }

Retrieve data from MDX query

added the reference for Microsoft.AnalysisServices.AdomdClient.dll
AdomdConnection steps

AdomdConnection con = new AdomdConnection("connectionstring"); // connect DB con.Open(); AdomdCommand cmd = new AdomdCommand("MDX query", con); //query

AdomdDataReader reader = cmd.ExecuteReader(); //Execute query

    while (reader.Read())   // read
        {
            Data dt = new Data();  // custom class
            dt.Gender = reader[0].ToString();

            dt.Eid = reader[1].ToString();
            dt.salary = reader[2].ToString();
            data.Add(dt);
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文