我目前在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
答案 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中创建的计算列可以在后台运行,不需要在表格中显示它们。
这是最终输出: