如何在 C# 中从 mdx 查询中检索数据?
我正在尝试使用 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这看起来像是 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.
您的查询有 1 个 [ALL] 级别维度和 4 个度量:
这将检索 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:
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".
从 MDX 查询检索数据
添加了 Microsoft.AnalysisServices.AdomdClient.dll 的引用
Adomd连接步骤
Retrieve data from MDX query
added the reference for Microsoft.AnalysisServices.AdomdClient.dll
AdomdConnection steps