AVG(EXISTING())语法错误

时间:2016-10-05 08:35:35

标签: ssas mdx business-intelligence

我想计算使用它的促销活动的日期。我需要3个措施,从促销开始日期前21天的平均销售,促销的开始和结束日期之间的销售,以及促销结束日期后21天的销售。 为什么Visual Studio在下面的代码中突出显示平均值?

CREATE MEMBER CURRENTCUBE.[Measures].[Sales in promotion]
 AS Avg(Existing([Promotion].[Promotion name].[Promotion name]),[Measures].[Sales]), ... 

同样在这里:

CREATE MEMBER CURRENTCUBE.[Measures].[Sales before promotion]
 AS (EXISTING([Promotion].[Promotion name].[Promotion name]), AVG(strtomember("[Date].[Date].&["+ [Promotion].[Date].currentmember.member_key+"]").lag(21) : strtomember("[Date].[Date].&["+ [Promotion].[Date From].currentmember.member_key+"]"),
[Measures].[Sales])) ...

如果我在第一个度量中对sum(existing())求和,则正确计算总和,但它不能让我得到平均值。

1 个答案:

答案 0 :(得分:1)

EXISTING仅在[Promotion]WHERE条款中SELECT成为您查询的一部分时才有用。如果它们未包含在这两个条款中,则EXISTING将找到1个成员 - All成员。

你可以尝试NonEmpty并将句点逻辑移动到自定义集中吗?

WITH
  SET [PERIOD] AS
     STRTOSET(
        "[Date].[Date].&["+ [Promotion].[Date].currentmember.member_key+"].lag(21) 
        : 
     [Date].[Date].&["+ [Promotion].[Date From].currentmember.member_key+"]"
     )

根据您发布的代码,我无法判断您是想要每日平均值还是平均每次促销?假设在21天内有2次促销这是否意味着你想要(总计/ 2/21)?