我在列中列出了不同的ID - 这导致小计的总和不等于总计如下:
我想要做的是按时间顺序对付款日期进行排名,并仅选择要显示的最高日期。在上面的示例中,Grand Total不会发生变化,但Townville排不会显示出明显的学生数。
这是一个非常具体的要求,我假设在DAX中有一个简单的方法 - 我尝试过使用RANKX
和{{1}但是我没有接近解决这个问题。
最后一件事 - 排名必须与用户选择的时间过滤器相关联(因此,如果他们选择2015年,它会给第二个记录排名1,而最高记录不会显示。如果他们选择2015年5月它会给出排名第1的最高记录而第二个记录不会显示)
答案 0 :(得分:1)
我认为这就是你要找的 - 我在PowerPivot模型中添加了一个计算列,根据最后付款日期和学生姓名提供排名。它将对任何学生的最早支付列为1。
该列的代码如下:
=RANKX(FILTER(Table1, [Student Name] = EARLIER([Student Name])), [Last Payment Date])
...假设您的表名为“Table1”!
FILTER是将排名限制为仅属于具有该名称的学生的日期的关键。
多个表的更新
要设置表格之间的关系,请转到模型的“图表视图”,可在Power Pivot窗口的“主页”选项卡中找到。
您可以将字段从一个表拖到另一个表以创建关系。这只有在至少有一个字段是唯一的情况下才有效 - 将模型视为一个维度模型是个好主意,其中一个表格就像一个事实,而其他表格就像维度一样。
从评论中,我会尝试让付款像事实一样,并将其链接到社区和学生表。在这种情况下,您可以使用以下代码:
=RANKX(FILTER(Table1, Related('Students'[Student Name]) = EARLIER('Students'[Student Name])), [Last Payment Date])
此计算列将位于您的Payments Fact表中,并使用查找相关字段。
请注意,在这种特定情况下,只需在用于查找学生姓名的学生ID字段上运行过滤器就会更容易。