如何通过ADOMD获取Analysis service数据库的所有的calculations成员?1)我通过元数据,如下代码,有两个问题,一是设计本身的measure和calculation混在一起无法判断哪个是哪个
二是,添加calculation的时候,设置visible为false,在数据库本身视图上看不到,代码也获取不到
foreach (Measure m in con.Cubes[7].Measures)
{
string s = m.Name;
}2)通过SELECT [Measures].ALLMEMBERS ON 0
FROM [SupplyChain]
和第一种情况记本类似
二是,添加calculation的时候,设置visible为false,在数据库本身视图上看不到,代码也获取不到
foreach (Measure m in con.Cubes[7].Measures)
{
string s = m.Name;
}2)通过SELECT [Measures].ALLMEMBERS ON 0
FROM [SupplyChain]
和第一种情况记本类似
{
conn.ConnectionString = "Provider=MSOLAP;Persist Security Info=false;Initial Catalog=TestOlap;Data Source=http://localhost/olap/msmdpump.dll";
conn.ShowHiddenObjects = true;
conn.Open();
string[] strRestriction = new string[] { "TestOlap", null, null };
System.Data.DataSet ds = conn.GetSchemaDataSet(AdomdSchemaGuid.Measures, strRestriction); return ds;
}关于隐藏的成员,常规办法貌似都是拿不到的,包括conn.ShowHiddenObjects = true;也没有用.
但是
conn.GetSchemaDataSet(AdomdSchemaGuid.XmlMetadata, strRestriction);这个参数返回的metadata中可以看到计算成员的定义,这个metadata作为整个xml放入datatable的一个字段中,你有必要的话可以分析这个字段的xml对象.