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

时间:2016-03-31 03:02:35

标签: 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_TYPE_CD作为维度,REG_SALESWIN_SALES作为度量。
我在立方体中还有一些其他尺寸,但为简单起见,我只想说我还有其他两个尺寸,LOCATIONITEM
维度LOCATION有3个级别"Region"->"District"->"Store",从上到下排序 维度ITEM有3个级别"CLASS"->"SUBCLASS"->"SKU",从上到下排序。 维度SALES TYPE有2个级别"SALES_TYPE_GROUP"->"SALES_TYPE_CD",从上到下排序。 我知道我无法在多维数据集中创建一个简单的计算成员,它将“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代码?

1 个答案:

答案 0 :(得分:0)

我对数据进行了大量测试,现在我知道在这种情况下我无法单独使用MDX来获得正确的答案。就像“Greg”和“Tab”所建议的那样,唯一的办法就是将reg销售作为一个维度。由于这是一个度量,因为具有十进制数据类型的值的大量可能性,这是不可能的(18,2) 感谢您抽出宝贵时间回答这个问题。