TIBCO Spotifre Analyst v7.10:根据两个日期列的比较有条件地创建两个新的计算列

时间:2018-02-13 17:00:02

标签: date comparison conditional field spotfire

我目前在Spotfire Analyst 7.10中有下面的示例表。我想使用下面的数据创建两个新的计算列(Insert - > Calculated Column)。

Id      Date        cDate       Value         
--------------------------------------------
A       10/17/2017  10/18/2017     10               
A       10/17/2017  10/14/2017     15    
A       10/17/2017  10/8/2017      -2       
B       11/19/2017  11/19/2017     4      
B       11/19/2017  11/30/2017     3     

以下是我试图实施的逻辑:

一个。对于SAME Id值,找到等于OR的cDate,如果不相等,则最接近Date列中的日期

湾选择的cDate不能大于日期值

℃。创建具有日期满足条件的新列(Rel Date)" a"和" b"为与相同ID相关联的每一行列出

d。创建另一个新列(值),该列提取与标准中选择的日期相关联的值" c"

以下是实现上述逻辑后我想要的输出表:

Id      Date        cDate          Rel Date       Value                      
----------------------------------------------------------
A       10/17/2017  10/18/2017     10/14/2017     15               
A       10/17/2017  10/14/2017     10/14/2017     15 
A       10/17/2017  10/8/2017      10/14/2017     15  
B       11/19/2017  11/19/2017     10/19/2017     4 
B       11/19/2017  11/30/2017     10/19/2017     4

1 个答案:

答案 0 :(得分:1)

@ PineNuts0-这是你如何实现这一目标的。

第1步:使用下面的表达式添加计算列[diff],查找[Date][cDate][Id]列之间的差异。

If(Days([cDate] - Max([Date]) over (Intersect([Id],[Date])))>0,null,Days([cDate] - Max([Date]) over (Intersect([Id],[Date]))))

第2步:添加另一个计算列[MAX_diff],其下面的表达式会在[diff][Id]上找到[Date]列的最大值。

Max([diff]) over (Intersect([Id],[Date]))

第3步:现在,添加计算列[GET_VAL],根据[Date][cDate]之间的最大差异获取值。

Max([Value]) over (Intersect([MAX_diff],[Id]))

第4步:最后,根据我们在上一步中获得的值,创建一个计算列[Rel Date]以获取[cDate]

DateAdd("dd",max([diff]) over (Intersect([Id],[Date])),[Date])

注意:在步骤1和2中创建的计算列可以在后台运行,不需要在表格中显示它们。

这是最终输出:

enter image description here