3

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

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

这里 Datatype 与 GrossSales 有关系,Customer 与 GrossSales 有关系,Product 与 Customer 有关系。

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

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';
4

1 回答 1

12

看起来您刚刚开始使用 MDX。有一些基本概念可以帮助您获得所需的东西。SQL 和 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';

从度量组通过客户维度到链维度的关系应该在维度使用中定义。这称为参考维度关系。

于 2013-10-28T16:09:59.537 回答