创build一个服从filter上下文的RANKX()计算列
我正在对我们的客户进行一些分析,并且我有一个现有的专栏,它列出了每个客户按订购date排列的订单数量。 我的意思是,如果客户已经在4个不同的date上下了4个订单,我的“PersistantOrderCount”列将显示如下:
订单ID | OrderDate | CustomerID | PersistantOrderCount
101 | 01/01/2015 | 1 | 1
102 | 01/02/2012 | 1 | 2
103 | 01/03/2015 | 1 | 3
104 | 01/04/2015 | 2 | 1
105 | 01/05/2015 | 3 | 1
106 | 01/06/2015 | 1 | 4
正如你在这个例子中希望看到的那样,顾客订单是根据订单date排列的,第一个订单是1,在客户“1”的情况下,他们的最后一个订单是4。
我使用的公式是:
= RANKX ( FILTER ( 'DataSet', [CustomerID] = EARLIER ( [CustomerID] ) ), [OrderID], [OrderID], 1, DENSE )
订单的排名不会根据我select的任何筛选器使用此公式进行更改。
我现在需要的是一个类似的列,但排名是基于我已经应用的filter,特别是我需要能够按date过滤。 例如,如果我使用完全相同的数据,但只有过滤月份三月,四月,五月,六月我想看到以下内容:
订单ID | OrderDate | CustomerID | PersistantOrderCount
103 | 01/03/2015 | 1 | 1
104 | 01/04/2015 | 2 | 1
105 | 01/05/2015 | 3 | 1
106 | 01/06/2015 | 1 | 2
请注意,先前分别排名第3和第4的订单103和106现在排名第1和第2,因为在选定的date期间,它们是客户的第一和第二订单。
任何人都可以帮我做到这一点?
我试图重新组织我的公式使用CALCULATE()与使用其上下文敏感的filter的想法,但是这不起作用。 这对我来说非常令人沮丧,所以任何帮助表示赞赏。
谢谢。
而不是通过添加列来完成此操作,我的方法是为每个需要的字段添加一个度量:
[PersistantOrderCount]:=RANKX(FILTER(ALL('Dataset'),'Dataset'[CustomerID]=MAX('Dataset'[CustomerID])),FIRSTDATE('Dataset'[OrderDate]),,1,DENSE)
和
[FilteredOrderCount]:=RANKX(FILTER(ALLSELECTED('Dataset'),'Dataset'[CustomerID]=MAX('Dataset'[CustomerID])),FIRSTDATE('Dataset'[OrderDate]),,1,DENSE)
哪一个给你未经过滤的数据集的以下结果:
当你select三月,四月,五月和六月时,结果如下: