日期:2014-05-17  浏览次数:20576 次

SSAS 计算成员 如何 针对维度成员给定不同公式
各位达人们,这里请教你们一个关于计算公式根据成员会有变更的问题.
财务科目维(父子): [F_Subj].[Subj] (640301是6403下级)
地区维度:[Area].[Area]
产品维度:[Product].[Product]
时间维度:[date].[date]

事实表与四个维表关联,一个度量值 value

财务指标公式: (A-B*m)/n   m,n为系数 (为给定值,无数据来源)
[Result]=
( ([F_Subj].[Subj].&[6403],[Measures].[VALUE]) - ([F_Subj].[Subj].&[640301],[Measures].[VALUE])*1.12 )/0.12

在某几个地区成员中,公式的系数有变化
[Result]=
( ([F_Subj].[Subj].&[6403],[Measures].[VALUE]) - ([F_Subj].[Subj].&[640301],[Measures].[VALUE])*1.11 )/0.11


MDX语句为: 只查看产品维上的结果. 
select 
[Result]
on 0 , 
[Product].[Product]
on 1 
from  [cube]
where [date].[date]

在计算成员中使用 case  iif 等逻辑判断是无效的,因为[area]维度没有出现在MDX语句中,拿不到当前成员.
我用scope  ([area],[result])  定义作用域,貌似对计算成员不起作用.
VALUE值是不能用定义作用域去做更改的,因为其他计算成员会用到 .&[6403]的原始值.

求解.
------解决方案--------------------
帮顶

“在计算成员中使用 case  iif 等逻辑判断是无效的,因为[area]维度没有出现在MDX语句中,拿不到当前成员.”

顺便问一句,既然拿不到当前成员,怎么知道该用哪个系数?