2016-08-04 86 views
0

我在一列上鲜明的ID的计数 - 这是导致不等于总计分类汇总的总和如下:DAX排名按日期

enter image description here

我想要做的就是排名付款日期按照时间顺序排列,并仅选择要显示的最高日期。在上面的例子中,Grand Total不会改变,但Townville排不会显示Distinct Student Count。

这是一个非常具体的要求,我假设有一个简单的方法来做到这一点在DAX - 我试过玩RANKXMAX,但我没有接近解决这个问题。

最后一件事 - Rank必须是用户选择的时间过滤器的上下文(因此,如果他们选择2015,它会给出第二条记录的排名1,并且最高记录不会显示。如果他们选择2015年5月它会给最高的记录秩1和第二条记录不会显示)

回答

1

我认为这是你在找什么 - 我添加了一个计算列PowerPivot模型,提供基于最后付款日期和学生的姓名。它的排名将任何学生最早的支付为1

守则列如下:

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

...假设你的表被命名为“表1”!

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

更新多个表

要设置表之间的关系,去的模式,在电力透视窗口的主页选项卡中提供的“图表视图”。

您可以将字段从一个表拖到另一个表以创建关系。这只有在至少有一个字段是唯一的时才有效 - 将模型看作维度模型是个好主意,其中一个表格像一个事实,其他表格的行为就像维度一样。

从评论中,我会尝试让支付行为像事实一样,并将其链接到社区和学生表。在这种情况下,然后你可以有下面的代码:

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

该计算列将是对你的付款事实表,并使用查找到相关行业。

请注意,在这种特定情况下,只需在用于查找学生姓名的学生ID字段上运行过滤器就会更容易。

+0

谢谢Stewart,我应该补充一点,对我们来说,这些数据都在不同的表格中。我们有一个社区表,一个支付/支付表和一个学生表。有没有办法在多个信息表中以这种方式使用Filter? – mwan

+0

我已经为相关表格案例添加了一个更新 - 如果它还不够完善,最好用更多的PowerPivot模型的更多细节来更新您的问题。不过希望它有帮助! –

+0

这非常有帮助!谢谢!为了让其他人磕磕绊绊,我会花一些时间用最终解决方案更新我的问题。 – mwan