首页 > 解决方案 > 根据日期维度值过滤的 TopCount

问题描述

我正在尝试从贴现率为 -20 的任何衡量标准以及特定日期获得前 10 个国家/地区的价值。我创建了一个简单的动态集,定义为:

CREATE DYNAMIC SET CURRENTCUBE.[Top10CountryBy20Disc]
 AS 

TopCount
        ( [Customer].[Country].members, 
                10,   [Discount].[Discount].&[-20%])
      ;

这为我提供了按总体度量值求和的前 10 名客户,但我需要过滤到特定日期。总体前 10 名与特定日期的前 10 名不同,因此我需要包含一些日期上下文。目前,我为每个国家/地区返回的数字都是正确的,但国家列表(前 10 名)是不正确的。

我在许多其他报告中使用下面列出的集合 [最新],这很好用,但是在使用上述集合时很难将其结合起来。

CREATE DYNAMIC SET CURRENTCUBE.[Latest]
 AS FILTER( 
            [Date].[Date Key].[Date Key].members, IsDate([Date].[Date Key].currentmember.membervalue) 
AND (

            DateDiff("d", [Date].[Date Key].currentmember.membervalue,  IIF(Weekday(Now()) = 2, 3, 1)
            
    );

从逻辑上讲,我正在尝试按照以下方式做一些事情,这是无效的语法:

TopCount
        ( [Customer].[Country].members, 
                10,   ([Discount].[Discount].&[-20%], [Latest]))
      ;

将不胜感激对此的一些建议/方向。

标签: ssasmdx

解决方案


这种方法解决了我的问题:

GENERATE ( [Latest],
             {TopCount
                ( descendants([Customer].[Country],,AFTER), 
                    10,   
                    VBA!Abs(([Discount].[Discount].&[-20%], ([Measures].[MeasureName],[Date].[Date Key].currentmember)))
                )
            }
         );

推荐阅读