Ssas 创建计算成员以删除加载预计算度量值的需要

Ssas 创建计算成员以删除加载预计算度量值的需要,ssas,Ssas,我正在尝试将下面的sql语句复制到MDX中,这样我就可以使用基本加载的成员在多维数据集中创建一个计算成员,而不必在表中的多维数据集中计算它,然后再加载它 SUM(CASE WHEN ((A.SALES_TYPE_CD = 1) AND (A.REG_SALES=0)) THEN A.WIN_SALES ELSE 0 END) AS Z_SALES 我目前正在加载SALES\u TYPE\u CD作为维度,加载REG\u SALES和WIN\u SALES作为度量值。 我

我正在尝试将下面的sql语句复制到MDX中,这样我就可以使用基本加载的成员在多维数据集中创建一个计算成员,而不必在表中的多维数据集中计算它,然后再加载它

SUM(CASE WHEN ((A.SALES_TYPE_CD = 1) AND (A.REG_SALES=0)) 
     THEN A.WIN_SALES
     ELSE 0 
END) AS Z_SALES
我目前正在加载
SALES\u TYPE\u CD
作为维度,加载
REG\u SALES
WIN\u SALES
作为度量值。
我在多维数据集中还有一些其他维度,但为了简单起见,让我们假设我还有两个维度,
位置
项目

维度有
位置
有三个级别,
区域->“地区”->“门店”
,从上到下排序。
维度有
有三个级别,
“类”->“子类”->“SKU”
,从上到下排列。 维度有销售类型两个级别,
“销售类型组”->“销售类型光盘”
,从上到下排序。 我知道我不能在多维数据集中创建一个简单的计算成员,它将“SALES_TYPE”维度与另一个维度交叉连接以获得我想要的答案。 我认为这将是一个更复杂的MDX语句,类似于:

CREATE MEMBER CURRENTCUBE.[Measures].[Z_Sales]
 AS 'sum(filter(crossjoin(leaves(), [Sales Type].[Sales Type].
[Sales_Type_CD].&[1]), [Measures].[REG_SALES]=0),[Measures].
[WIN_SALES])', 
FORMAT_STRING = '#,#', 
VISIBLE = 1  ; 
但这似乎并没有返回预期的结果。
生成所需结果的正确MDX代码是什么?

我对数据进行了一系列测试,现在我知道,在这种情况下,仅使用MDX无法获得正确答案。就像“Greg”和“Tab”建议的那样,唯一的方法是将reg sales作为一个维度。由于这是一种度量,这是不可能的,因为数据类型为decimal(18,2)的值有很多可能
感谢您抽出时间回答此问题。

当前查询返回的结果有什么问题?需要在事实行右侧评估REG_SALES=0筛选器(而不是将一个月的产品小计汇总,然后检查小计是否为0)?在这种情况下,如果您将REG_SALES变为退化维度,那么您可以在MDX中高效地实现这一点。这是可能的吗?是的,我想说,我知道有FILTER()函数,但是如果你在Reg_Sales上添加一个维度,你的生活会轻松得多。