基于另一列的排名日期-Spotfire

基于另一列的排名日期-Spotfire,spotfire,Spotfire,在使用自定义表达式时,是否有人知道如何绕过使用OVER函数对日期进行排序或排序的Spotfire限制 提供一点背景信息,我试图根据以下数据确定或标记租赁为1、2、3等。例如,由于我们在左栏中看到两次63,我想返回1和2以确定两个不同的租赁,从2016年1月1日和2016年8月1日开始。然后是1和2代表72,1代表140,依此类推。不幸的是,OVER函数只能与聚合方法一起使用,我不知道还有其他方法可以产生我正在寻找的结果 Tenant Lease_From Lease_To Tenant

在使用自定义表达式时,是否有人知道如何绕过使用OVER函数对日期进行排序或排序的Spotfire限制

提供一点背景信息,我试图根据以下数据确定或标记租赁为1、2、3等。例如,由于我们在左栏中看到两次63,我想返回1和2以确定两个不同的租赁,从2016年1月1日和2016年8月1日开始。然后是1和2代表72,1代表140,依此类推。不幸的是,OVER函数只能与聚合方法一起使用,我不知道还有其他方法可以产生我正在寻找的结果

Tenant Lease_From  Lease_To     Tenant_status
63     1/1/2016    1/31/2017    Current
63     8/1/2017    7/31/2018    Current
72     10/1/2016   7/31/2017    Current
72     8/1/2017    7/31/2018    Current
140    2/1/2017    7/31/2018    Current
149    8/1/2016    7/31/2017    Current
149    8/1/2017    7/31/2018    Current
156    1/15/2017   3/31/2018    Current
156    4/1/2018    3/31/2019    Current
使用以下命令:

Rank([Lease_From], [Tenant])
结果如下:

Tenant Lease_From  Lease_To     Tenant_status Rank([Lease_From], [Tenant])
63     1/1/2016    1/31/2017    Current       1
63     8/1/2017    7/31/2018    Current       2
72     10/1/2016   7/31/2017    Current       1
72     8/1/2017    7/31/2018    Current       2
140    2/1/2017    7/31/2018    Current       1
149    8/1/2016    7/31/2017    Current       1
149    8/1/2017    7/31/2018    Current       2
156    1/15/2017   3/31/2018    Current       1
156    4/1/2018    3/31/2019    Current       2

请考虑“布莱克福特的回答是正确的!”p> 也就是说,作为供参考,First被认为是一种聚合方法,OVER语句可以包含在If中!因此,您可以使用以下表达式完成相同的操作:

If([Lease_From] = First([Lease_From]) OVER ([Tenant]), 1, 2)
以这种方式组合If和OVER时,您可以获得一些非常酷和强大的可视化效果,但您确实失去了有效标记数据的能力。这是因为表达式是从If而不是OVER的上下文进行计算的;换句话说,将考虑所有行,而不是仅考虑选定的行

你可以用一些黑魔法数据函数来解决这个问题,但这有点做作


同样,在这种情况下,排名绝对是正确的解决方案。

谢谢你们,这非常有帮助!它还很好地设置了我们,这样我们就不必随着租约的增加而编辑表达式。非常感谢。很高兴你把它整理好了!一定要接受@blackeoft的回答:我们都是为了帮助社区,有用的感觉很棒,但最终,甜蜜的声誉点是一个不错的奖励;