创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的订单103106现在排名第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三月,四月,五月和六月时,结果如下: 在这里输入图像说明