计算成员中的WHERE子句

log*_*cat 3 ssas mdx

我通过比较维度的值来计算值时遇到了一些问题.我有3个维度(数据类型,客户,产品)和一个度量(GrossSales).

如果我想要ProductID = 1,2,3和Dataype = 4,5,6的GrossSales,MDX查询会是什么?

这里Datatype与GrossSales有关系,Customer与GrossSales有关系,而Product与客户有关系.

我正在尝试这个,但不起作用

CREATE MEMBER CURRENTCUBE.[Measures].Forecast_Gross_Sales AS 
( 
    SELECT NON Empty [Measures].[Gross Sale] 
    FROM [Measures] 
    WHERE (
        [Data Type].[ID].[ID] = 4 
        AND [Chain].[Customer ID] = [Measures].[Customer ID]
    ) 
), VISIBLE = 1 
, DISPLAY_FOLDER = 'Forecast' 
, ASSOCIATED_MEASURE_GROUP = 'Data Types';
Run Code Online (Sandbox Code Playgroud)

mma*_*rie 12

看起来你刚刚开始使用MDX.有一些基本概念可以帮助您获得所需.SQL和MDX的这种比较可能会有所帮助.MDX使用where子句作为切片器(以选择某些维度成员)而不是过滤器.你不能把member = somevalue放在where子句中.而且你不能真正使用where子句来定义与其他表的关系.

相反,你的where子句会更像

[Data Type].[ID].[ID].&[4]
Run Code Online (Sandbox Code Playgroud)

由于我无法看到您的数据模型,我无法确定,但我猜是[链].[客户ID] = [度量].[客户ID]是您要定义维度用法的东西你的多维数据集,而不是在查询中.

编辑:现在问题已经编辑,看起来您正在创建一个计算成员.在这种情况下,没有select或where子句.它看起来更像是这样的:

CREATE MEMBER CURRENTCUBE.[Measures].Forecast_Gross_Sales AS 
Aggregate([Data Type].[ID].[ID].&[4], [Measures].[Gross Sale])
, VISIBLE = 1 
, DISPLAY_FOLDER = 'Forecast' 
, ASSOCIATED_MEASURE_GROUP = 'Data Types';
Run Code Online (Sandbox Code Playgroud)

从度量组到Customer维度到Chain维度的关系应该在维度用法中定义.这称为参考维度关系.