Ssas 计算成员中的WHERE子句

Ssas 计算成员中的WHERE子句,ssas,mdx,Ssas,Mdx,我在通过比较维度的值来计算值时遇到了一些问题。我有3个维度(数据类型、客户、产品)和一个度量(Grossales) 如果我想要ProductID=1,2,3和DataType=4,5,6的Grossales,MDX查询是什么 在这里,数据类型与Grossales有关系,客户与Grossales有关系,产品与客户有关系 我正在尝试,但不起作用 CREATE MEMBER CURRENTCUBE.[Measures].Forecast_Gross_Sales AS ( SELECT NO

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

如果我想要ProductID=1,2,3和DataType=4,5,6的Grossales,MDX查询是什么

在这里,数据类型与Grossales有关系,客户与Grossales有关系,产品与客户有关系

我正在尝试,但不起作用

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

看起来您才刚刚开始使用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';

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

Hi,我首先尝试过这种方法,但没有结果,创建成员CURRENTCUBE。[Measures]。将销售总额预测为([Chain].[Customer ID],[Data Type].[ID].[ID].[2],[Measures].[Gross Sale]),VISIBLE=1,DISPLAY\u FOLDER='Forecast',ASSOCIATED\u Measures\u GROUP='Data Types';根据您的建议,我必须从Measure获取Geossale,其中[Chain].[Customer ID]=[Measures].[Customer ID]。因此,我正在寻找如何编写MDX查询或如何解决它!请帮忙!您想通过[Chain].[Customer ID]=[Measures].[Customer ID]实现什么?您好,我想通过Measures实现GlossSale。这里,客户(PK)表与度量(FK)表有关系,但度量与链表没有关系,当然链(FK)表和客户(PK)表也有关系。希望现在很清楚,在链维度和度量值组之间没有关系是有原因的吗?这听起来像是你可能想研究这个问题,而不是试图编写一些复杂的计算成员来绕过它。我被这句话弄糊涂了,因为上面你指出了链和度量值组都有某种类型的客户id。而且,它不必是常规维度关系。查看此链接,看看您要查找的是引用的还是多对多: