我在比较维度值时会遇到一些问题。我有3个维度(数据类型,客户,产品)和一个度量(GrossSales)。
如果我想要ProductID = 1,2,3和Dataype = 4,5,6的GrossSales,MDX查询会是什么?
此处数据类型与GrossSales有关系,客户与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';
答案 0 :(得分:11)
看起来你刚刚开始使用MDX。有一些基本概念可以帮助您获得所需。这comparison of SQL and MDX可能会有所帮助。 MDX使用where子句作为切片器(以选择某些维度成员)而不是过滤器。您不能将 member = somevalue 放在where子句中。而且你不能真正使用where子句来定义与其他表的关系。
相反,你的where子句更像是
[Data Type].[ID].[ID].&[4]
由于我无法看到您的数据模型,我无法确定,但我猜是 [Chain]。[Customer ID] = [Measures]。[Customer 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';
从度量组到Customer维度到Chain维度的关系应该在维度用法中定义。这称为Reference dimension relationship.