我正在寻找一种在Microsoft PowerPivot 2010中使用的方法,该方法允许我执行动态排名,该排名将根据应用的过滤器和切片器值自动更新关联的排名值。
到目前为止,我看到的所有示例都使用了 Calculate() DAX 函数,该函数通过 All() 函数覆盖 PowerPivot 表中的现有过滤器,这会导致用户可能应用的预定义过滤器被忽略。
为了说明我的要求,请参考以下示例:
(PowerPivot 窗口中的源数据:)
-------------------------------------------------------------------------------------
Claim Number | Claimant Number | Transaction Date | Dollar Amount
------------------------------------------------------------------------------------
ABCD123456 4 1/1/2012 $145.23
ABCD123456 4 8/1/2012 $205.12
ABCD123456 4 9/1/2012 $390.74
VDSF123455 2 3/5/2012 $10.12
VDSF123455 2 9/5/2012 $50.12
VDSF123455 2 12/9/2012 $210.45
------------------------------------------------------------------------------------------
现在,我希望能够根据第一个交易日期仅显示每个索赔编号和索赔人编号的美元金额。我基本上希望只显示与每个索赔# 和索赔人编号组相关的第一笔交易相关的美元。
我的思考过程是为每个 [索赔编号 + 索赔人编号] 组创建一个动态排名,类似于“partition by - Row_Number()”函数。这样,每个包含排名值为 1 的 [索赔编号 + 索赔人编号] 组将代表与该值相关的第一个交易。
但是,如果用户对生成的数据透视表中的数据应用过滤器,我将需要更改此排名值。
这可以根据上面定义的示例数据在下面进行说明:
----------------------------------------------------------------------------------------------
Claim Number | Claimant Number | Transaction Date | Dollar Amount | Rank |
---------------------------------------------------------------------------------------------
ABCD123456 4 1/1/2012 $145.23 1
ABCD123456 4 8/1/2012 $205.12 2
ABCD123456 4 9/1/2012 $390.74 3
VDSF123455 2 3/5/2012 $10.12 1
VDSF123455 2 9/5/2012 $50.12 2
VDSF123455 2 12/9/2012 $210.45 3
------------------------------------------------------------------------------------------------
现在,如果用户通过切片器或通过数据透视表或 PowerPivot 表本身中的过滤器下拉列表应用过滤器,不包括 < 2012 年 2 月 1 日的评估日期,排名值应自动更新并反映如下:
(已应用过滤器)
=============================================================================
Claim Number | Claimant Number | Transaction Date | Dollar Amount | Rank |
============================================================================
ABCD123456 4 8/1/2012 $205.12 1
ABCD123456 4 9/1/2012 $390.74 2
VDSF123455 2 3/5/2012 $10.12 1
VDSF123455 2 9/5/2012 $50.12 2
VDSF123455 2 12/9/2012 $210.45 3
===========================================================================
如您所见,根据用户应用的过滤器,基于与索赔编号 ABCD123456 相关联的行之一被隐藏,第一个索赔组的排名值自动更新。
然后,我想在 PowerPivot 表中创建一个额外的度量,它只显示与包含 1 等级值的交易相关的美元金额,如下所示:
(应用了过滤器,添加了新措施)
===============================================================================================
Claim Number | Claimant Number | Transaction Date | Dollar Amount | Rank | Opening Dollar Amt|
================================================================================================
ABCD123456 4 8/1/2012 $205.12 1 $205.12
ABCD123456 4 9/1/2012 $390.74 2
VDSF123455 2 3/5/2012 $10.12 1 $50.12
VDSF123455 2 9/5/2012 $50.12 2
VDSF123455 2 12/9/2012 $210.45 3
==================================================== ==============================================
然后可以参考该数据创建相应的数据透视表,以便“Opening Dollar Amt”度量仅代表与上述每组第一个交易相关的美元。
如果有人能概述如何实现这一点,我将不胜感激。
我认为动态排名方法可能是一个好主意,但如果有人有更好的想法来实现我的最终结果/目标,即简单地获得与第一笔交易“可见”相关的美元金额(基于任何应用的用户过滤器)每组我会对你可能有的任何方法持开放态度。