首页 > 解决方案 > MDX:如何根据top count得到上一期?

问题描述

我必须计算出今年的前 10 名品牌,然后得到与去年相同的数字……但我发现这有点棘手。

我为今年迄今为止排名前 10 位的品牌提供了以下设置。

我的日期是一个参数(月-年),到目前为止一切正常。

filter(TopCount(
              ([10 - Brand].[Brand].Allmembers) * {STRTOMEMBER(@DATE)}
          ,10,
         [Measures].[Act YTD]
          ), [Measures].[Act YTD] <> null)

但是现在我必须使用这一套并获得上一年的数据。

预期的结果是在同一个查询中获得今年和之后的前 10 名,去年的数字:

Year | Quarter |   Month   | Brand | Act YTD
2019 | 20193   |  Aug 2019 | BR01  | 150
2019 | 20193   |  Aug 2019 | BR02  | 250
2019 | 20193   |  Aug 2019 | BR03  | 350
2019 | 20193   |  Aug 2019 | BR04  | 450
2019 | 20193   |  Aug 2019 | BR05  | 550
2019 | 20193   |  Aug 2019 | BR06  | 650
2019 | 20193   |  Aug 2019 | BR07  | 750
2019 | 20193   |  Aug 2019 | BR08  | 850
2019 | 20193   |  Aug 2019 | BR09  | 950
2019 | 20193   |  Aug 2019 | BR10  | 1150

2018 | 20183   |  Aug 2018 | BR01  | 100
2018 | 20183   |  Aug 2018 | BR02  | 200
2018 | 20183   |  Aug 2018 | BR03  | 300
2018 | 20183   |  Aug 2018 | BR04  | 400
2018 | 20183   |  Aug 2018 | BR05  | 500
2018 | 20183   |  Aug 2018 | BR06  | 600
2018 | 20183   |  Aug 2018 | BR07  | 700
2018 | 20183   |  Aug 2018 | BR08  | 800
2018 | 20183   |  Aug 2018 | BR09  | 900
2018 | 20183   |  Aug 2018 | BR10  | 1000

我需要指导:)

标签: ssasmdx

解决方案


我找到了解决方案。

现在我将它们显示为列,而不是按行显示结果。

由于行分组和列分组,我不得不重新设计报告。

这样,我可以根据今年的日期创建前 10 组并获得 Y-1 度量。

Year | Quarter |   Month   | Brand | Act YTD | Act YTD -1 | 
2019 | 20193   |  Aug 2019 | BR01  | 150     | 100        | 
2019 | 20193   |  Aug 2019 | BR02  | 250     | 200        | 
2019 | 20193   |  Aug 2019 | BR03  | 350     | 300        | 
2019 | 20193   |  Aug 2019 | BR04  | 450     | 400        | 
2019 | 20193   |  Aug 2019 | BR05  | 550     | 500        | 
2019 | 20193   |  Aug 2019 | BR06  | 650     | 600        | 
2019 | 20193   |  Aug 2019 | BR07  | 750     | 700        | 
2019 | 20193   |  Aug 2019 | BR08  | 850     | 800        | 
2019 | 20193   |  Aug 2019 | BR09  | 950     | 900        | 
2019 | 20193   |  Aug 2019 | BR10  | 1150    | 1000       | 

推荐阅读