我想计算使用它的促销活动的日期。我需要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())求和,则正确计算总和,但它不能让我得到平均值。
答案 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)?