gpt4 book ai didi

min - PowerPivot DAX - 每组动态排名(每组最低)

转载 作者:行者123 更新时间:2023-12-04 15:35:09 25 4
gpt4 key购买 nike

我正在寻找一种在 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
------------------------------------------------------------------------------------------

现在,我希望能够根据第一个交易日期仅显示每个 claim 编号和 claim 人编号的美元金额。我基本上希望只显示与每个 claim #和 claim 人编号组相关的第一笔交易相关的美元。

我的思考过程是为每个 [ claim 编号 + claim 人编号] 组创建一个类似于“按 - Row_Number() 分区”函数的动态排名。这样,每个包含等级值为 1 的 [ claim 编号 + claim 人编号] 组将代表与该值相关联的第一个交易。

但是,如果用户对结果数据透视表中的数据应用过滤器,我将需要更改此排名值。

这可以根据上面定义的示例数据在下面说明:
----------------------------------------------------------------------------------------------
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 表本身的过滤器下拉菜单应用过滤器,不包括估值日期 < 2/1/2012,排名值应自动更新并反射(reflect)如下:

(已应用过滤器)
=============================================================================
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
===========================================================================

如您所见,根据用户应用的过滤器,根据与 claim 编号 ABCD123456 相关联的行之一被隐藏,为第一个 claim 组自动更新了排名值。

然后,我想在 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

================================================== ==============================================

然后可以引用该数据创建相应的数据透视表,以便“开盘美元金额”度量仅代表与上述每个组的第一笔交易相关的美元。

如果有人能概述如何实现这一点,我将不胜感激。

我认为动态排名方法可能是一个好主意,但如果有人有更好的主意来实现我的最终结果/目标,即简单地获取与第一笔交易“可见”相关的美元金额(基于任何申请的用户)过滤器)每组我都会倾听您可能采用的任何方法。

最佳答案

虽然这是一个写得很好的问题,您显然已经花时间制定了,但您应该 read this about cross posting in forum s。这是您同时在 MSDN 上发布的内容的明显重复。我已经回答了这两个问题,认为这是一个不错的问题。

首先,我创建了一个基本度量 [Amount] 来汇总美元金额列。然后我在 RANKX() 中使用它来创建以下内容:

[Rank] = RANKX(
FILTER(
ALLSELECTED(Table1),Table1[Claimant Number]=max(Table1[Claimant Number])
),
[Amount],
,1)

关键是 [Amount] 度量迭代的表 - ALLSELECTED() 只是将当前过滤器上下文中的内容发挥作用,而 FILTER() 中的表达式将表限制为当前 claim 编号。

之后根据[Rank]是否为1返回[Amount]就是一个简单的任务:
[Opening Balance] = if([Rank]=1,[Amount],BLANK())

希望这是有道理的,我在 SkyDrive 上发布了我的作品如果他们有帮助。

雅各布

关于min - PowerPivot DAX - 每组动态排名(每组最低),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15742186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com