【问题标题】:WHERE clause in calculated member计算成员中的 WHERE 子句
【发布时间】:2013-10-28 13:04:19
【问题描述】:

我在通过比较维度的值来计算值时遇到了一些问题。我有 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';

【问题讨论】:

    标签: ssas mdx


    【解决方案1】:

    您似乎刚刚开始使用 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';
    

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

    【讨论】:

    • 你好,我先用这种方式试过了,但是没有结果,CREATE MEMBER CURRENTCUBE.[Measures].Forecast_Gross_Sales AS ([Chain].[Customer ID], [Data Type] .[ID].[ID].[2], [Measures].[Gross Sale]), VISIBLE = 1, DISPLAY_FOLDER = 'Forecast' , ASSOCIATED_MEASURE_GROUP = 'Data Types';根据您的建议,我将不得不从 Measure 获取 GeossSale,其中 [Chain].[Customer ID] = [Measures].[Customer ID]。所以我正在寻找如何编写 MDX 查询或如何解决它!如果你能帮忙!
    • 你想用 [Chain].[Customer ID] = [Measures].[Customer ID] 实现什么?
    • 嗨,我正在尝试实现 GlossSale(来自 Measure)。这里 Customer(PK) 表与 Measure(FK) 表有关系,但 Measure 与 Chain 表没有关系,当然 Chain(FK) 表和 Customer(PK) 表有关系。希望现在清楚
    • Chain 维度和度量值组之间没有关系是否有原因?听起来您可能想研究一下,而不是尝试编写一些复杂的计算成员来解决它。
    • 我对那个声明感到困惑,因为上面你指出链和度量组都有某种客户 ID。此外,它不必是常规的维度关系。查看此链接,看看引用或多对多是否可能是您正在寻找的:technet.microsoft.com/en-us/library/ms175669.aspx
    猜你喜欢
    • 2013-10-25
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多