【问题标题】:Top 5 and Bottom 5 records in Power PivotPower Pivot 中前 5 名和后 5 名的记录
【发布时间】:2015-02-26 07:43:50
【问题描述】:

我试图在 Power View 的两个单独的表中显示前 5 条记录和后 5 条记录。

我创建了一个计算度量来显示记录。

但它没有给我所需的结果。

我的数据集是:-

ID  Name    Rating  OverallRating   Ranking
1   A       124     
2   B       156     
3   C       123     
4   D       124     
5   E       125     
6   F       143     
7   G       124     
8   H       123     
9   I       156     
10  A       178     
11  B       187     
12  C       123     
13  H       123     
14  I       134     
15  D       138     
16  E        50     
17  F        90     
18  G        70     

我也有以下措施

[Count]=SUMX(SUMMARIZE('Details',[Name],"Value",COUNTA([ID])),[Value])

总体评分的计算依据是:- 每个名称的评分总和除以该名称的 [ID] 计数。

OverallRating=SUMX(SUMMARIZE('Details',[Name],"value2",([Rating])/[Count]),[value2])

然后我正在计算这个总体评分的排名。

Ranking=RANKX(ALL(Details),[overallRating],,0,Dense)

现在我想在 Power View 表中使用OverallRatings 排名前5 名和后5 名

对于前 5 条记录,我使用以下查询:-

Top 5 name:=CALCULATE(SUMX(SUMMARIZE('Details',[Name],"value2",(SUM([overallRating]))),[value2]),FILTER('Details',RANKX(ALL('Details'),[Ranking])<=5))

有人可以在我做错的地方帮助我吗?或者我是否需要尝试其他方法。

您的帮助将不胜感激。

【问题讨论】:

  • 您需要在示例数据中包含所有列。我无法重新创建您当前的计算:即OverallRating 的列 [Count] 列未包含在您的数据中。
  • hi @guitarthrower Count 只是按名称对 ID 组的计数。我使用的公式是 [Count]=SUMX(SUMMARIZE('Details',[Name],"Value",COUNTA([ID])),[Value])

标签: powerpivot dax powerview


【解决方案1】:

如果您使用的是数据透视报表,那么您可以使用过滤器选项来实现这一点。

【讨论】:

    【解决方案2】:

    我还没有使用过PowerView,但是获得正确的排名是您问题的关键。

    首先要注意,我没有添加任何计算列。取而代之的是,我使用了以下 4 项措施,它们相互促进以达到排名。

    CountByName(替换您的计数度量)

    CountByName:=CALCULATE(COUNTA(Details[Name]))
    

    RatingByName(对每个名称的评分求和)

    RatingByName:=CALCULATE(SUM(Details[Rating]))
    

    OverallRating(每个名称的评分/计数)

    OverallRating:=[RatingByName]/[CountByName]
    

    排名(基于总体评分的排名)

    Ranking:=RANKX(ALL(Details[Name]),[OverallRating])
    

    由于这些都是度量,您可以创建一个数据透视表来测试它们是否正常工作。 (他们确实根据我对您的数据的解释工作)。它按以下顺序排列名称

    1  2  3  4  5  6  7  8  9
    B  A  I  D  H  C  F  G  E
    

    根据我对 PowerView 的理解,您应该可以使用 [Ranking] 度量返回前 5 和后 5。

    【讨论】:

    • 嗨@guitarthrower,直到我已经完成排名,现在我想从中获得前5条记录,我正在使用TOPN函数编写查询,因为它是我需要总结的计算量度做了所有我没有得到想要的结果之后的结果。请查看我正在使用的查询。前 5 PM:=SUMX(TOPN(5,SUMMARIZE('Details',[Name],"Top PM", [Top 5 PM]),(SUM([OverallRating])/COUNTROWS(Details))),SUMX( '详情',[排名]))
    • 再说一次,不熟悉 powerview,但我的研究表明,您需要做的就是过滤前 5 名和后 5 名。请参阅此链接 powerpivotblog.nl/…
    • 这就是我现在正在使用的东西,但是如果两个名称具有相同的等级,我会遇到问题,那么我仍然只需要显示 5 而不是 6 或更多..但是这个解决方案对我不起作用
    • 这将是您提出问题的有用信息。您排除捆绑项目的标准是什么?排除与另一个具有相同等级的项目似乎具有误导性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    相关资源
    最近更新 更多