编程AMO OLAP对象

时间:2014-03-25 16:27:22

标签: c# ssas mdx

我有以下Mdx代码

Scope (
        {[Dim PNL].[PNL].&[88]}
,[Measures].members


);       
this = iif( aggregate([Dim PNL].[PNL].&[12],[Measures].currentmember)<>0, 
aggregate([Dim PNL].[PNL].&[60],[Measures].currentmember)
/(-1* aggregate([Dim PNL].[PNL].&[12],[Measures].currentmember)),null
);       
End Scope;  

我尝试使用C#代码中的MDX ADOMD命令来修复它。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您无法通过ADOMD更改多维数据集结构,但可以使用AMO。但是,您必须自己对计算脚本进行所有解析,因为您可以访问的是包含完整计算脚本的一个大字符串。

假设您有一个名为cube的AMO Cube对象,您可以通过

访问计算脚本以进行读写。
cube.DefaultMdxScript.Commands[0].Text

完成更改后,您应该致电

cube.Update()

将更改写回正在运行的多维数据集。

如您所见,从技术上讲,多维数据集中可以有多个计算脚本。但BIDS将所有这些组合在一起阅读(至少我认为是这样),在写作时,BIDS再次将所有内容写入第一个脚本。