DAX 按日期排名

DAX Rank by Date

我指望列中的不同 ID - 这导致小计总和不等于总计,如下所示:

我想做的是按时间顺序排列付款日期,select 只显示最晚的日期。在上面的示例中,总计不会改变,但 Townville 行不会显示不同的学生计数。

这是一个非常具体的要求,我假设在 DAX 中有一种简单的方法可以做到这一点 - 我已经尝试过 RANKXMAX 但我离解决这个问题。

最后一件事 - 排名必须与用户 select 编辑的时间过滤器相关(因此,如果他们 select 2015 它将给出第二个记录排名 1 和最高记录不会显示。如果他们 select 2015 年 5 月,它会给最高记录排名 1,第二个记录不会显示)

我想这就是您要查找的内容 - 我向 PowerPivot 模型添加了一个计算列,该模型提供基于最后付款日期和学生姓名的排名。它将任何学生的最早付款排名为 1。

专栏代码如下:

=RANKX(FILTER(Table1, [Student Name] = EARLIER([Student Name])), [Last Payment Date])

...假设您的 table 被命名为 "Table1"!

FILTER 是将排名限制为仅属于具有该姓名的学生的日期的关键。

更新多个 tables

要设置 table 之间的关系,请转到模型的 "Diagram View",可在 Power Pivot window 的主页选项卡中找到。

您可以将字段从一个 table 拖到另一个以创建关系。这仅在至少一个字段是唯一的情况下才有效 - 将模型视为维度模型是个好主意,其中 tables 表现得像事实,而其他 tables 周围它就像尺寸一样。

根据评论,我会尝试让付款像事实一样,并将其 link 交给社区和学生 table。在这种情况下,您可以使用以下代码:

=RANKX(FILTER(Table1, Related('Students'[Student Name]) = EARLIER('Students'[Student Name])), [Last Payment Date])

此计算列将在您的付款资料中 table,并且它使用对相关字段的查找。

请注意,在这种特定情况下,仅 运行 筛选用于查找学生姓名的学生 ID 字段会更容易。