0

我正在做一个从 olap 多维数据集中提取维度、度量和 kpi 的项目。

此时来自 adomdclient 的原型询问维度:

 connection = new AdomdConnection(connectionString);
 connection.Open();

 Cubes = new List<Cube>();

 foreach (CubeDef def in connection.Cubes)
 {
     if (def.Name[0] == '$')
        continue;
     Cubes.Add(new Cube(def));
 }

以及来自 AnalysisServices.Server 的 KPI

 server.Connect(ConnectionString);
 Database db = server.Databases[Catalog];
 Cube cube = db.Cubes[catalog];
 foreach (MeasureGroup group in cube.MeasureGroups)
 {
    foreach (Microsoft.AnalysisServices.Measure measure in group.Measures)
    {
         //do the job
    }
}

因为第一个返回包含维度在内的所有元数据的 CubeDef,第二个返回包含 kpi 在内的所有数据的真实 Cube。

但是连接字符串是一样的!

那么有没有办法避免这种情况,打开一个连接并检索所有必要的数据?

4

1 回答 1

1

实际上,通过客户端连接获得的是客户端工具通常需要的(元数据和数据本身),而通过服务器连接获得的则与立方体定义有关(如您在 BIDS 中所做的配置)。并且不需要关于例如数据源视图或分区的详细信息,因此对客户端隐藏,因为这些只能通过服务器连接访问。

要从客户端访问 KPI,只需使用Kpis您的属性CubeDef,它会枚举所有 KPI。

于 2013-12-04T12:50:50.193 回答