C# 获取与给定度量值组关联的所有度量值

C# 获取与给定度量值组关联的所有度量值,c#,.net,ssas,olap,C#,.net,Ssas,Olap,我正在使用Microsoft.AnalysisServices编写c#应用程序,我想在其中从多维数据集中检索度量值组度量值 代码如下: Server server = new Server(); server.Connect(serverName); Database database = server.Databases.FindByName(databaseName); Cube cube = database.Cubes.FindByName(cubeName); 这是我的多

我正在使用Microsoft.AnalysisServices编写c#应用程序,我想在其中从多维数据集中检索度量值组度量值

代码如下:

Server server = new Server();
  server.Connect(serverName);
  Database database = server.Databases.FindByName(databaseName);
  Cube cube = database.Cubes.FindByName(cubeName);
这是我的多维数据集,然后:

    MeasureGroup sampleMeasureGroup = cube.MeasureGroups[0];
然后,我可以通过以下方式获得与sampleMeasureGroup关联的度量值:

    var measures = sampleMeasureGroup.Measures;

但在这种情况下,我得不到经过计算的度量,只有标准的度量。有什么方法可以获得计算的度量值吗?

您可以使用访问架构行集的低级API,如下所示:

AdomdClient.AdomdRestrictionCollection restrColl = new AdomdClient.AdomdRestrictionCollection();
restrColl.Add("CUBE_NAME", cube.Name);
DataSet ds = clientConn.GetSchemaDataSet("MDSCHEMA_MEASURES", restrColl);
foreach(DataRow row in ds.Tables[0].Rows) {
    string expr = row.Field<string>("EXPRESSION");
    if (string.IsNullOrEmpty(expr)) {
        // measure is a physical measure
    } else {
        // measure is a calculated measure, and 'expr' is its definition
    }
    // use other columns like MEASURE_NAME, MEASURE_UNIQUE_NAME, DATA_TYPE,
    // DEFAULT_FORMAT_STRING ... as you need them
}
AdomdClient.adomdcrestrictioncollection restrictcoll=new AdomdClient.adomdcrestrictioncollection();
restcoll.Add(“CUBE_NAME”,CUBE.NAME);
数据集ds=clientConn.GetSchemaDataSet(“MDSCHEMA_度量”,restcoll);
foreach(ds.Tables[0].行中的DataRow行){
字符串表达式=行字段(“表达式”);
if(string.IsNullOrEmpty(expr)){
//度量是一种物理度量
}否则{
//度量值是一个计算度量值,“expr”是它的定义
}
//使用其他列,如度量值名称、度量值唯一名称、数据类型、,
//默认\u格式\u字符串…根据需要
}
MDSCHEMA_MEASURES
行集列出了多维数据集中包含的所有度量值,并记录在此处: