[英]Calculate column from a specific value from another column in Spotfire
我在计算当前星期的“一周的年龄”时遇到了麻烦。 我不想使用Week()表达式,因为我的数据使用了除Spotfire之外的其他周数(不能更改区域和位置)。 每天我的数据表都会刷新,因此我的计算列[Age_of_Day]计算了从当前(实际)日期开始的几天的时间。 现在,我要计算实际周的周龄。 我在这里有数据样本:
RowID Week Day Date Age_of_Day
12 20 do 17-5-2018 8
13 20 vr 18-5-2018 7
14 20 za 19-5-2018 6
15 21 zo 20-5-2018 5
16 21 ma 21-5-2018 4
17 21 di 22-5-2018 3
18 21 wo 23-5-2018 2
19 21 do 24-5-2018 1
20 21 vr 25-5-2018 0
21 21 za 26-5-2018 -1
22 22 zo 27-5-2018 -2
23 22 ma 28-5-2018 -3
24 22 di 29-5-2018 -4
25 22 wo 30-5-2018 -5
26 22 do 31-5-2018 -6
27 22 vr 1-6-2018 -7
现在,我想要一个新列[Age_of_Week],当[Age_of_Day] = 0时,该列计算[Week]的值与[Week]的值之间的每一行的差。 应该是这样的:
RowID Week Day Date Age_of_Day Age_of_Week
12 20 do 17-5-2018 8 1
13 20 vr 18-5-2018 7 1
14 20 za 19-5-2018 6 1
15 21 zo 20-5-2018 5 0
16 21 ma 21-5-2018 4 0
17 21 di 22-5-2018 3 0
18 21 wo 23-5-2018 2 0
19 21 do 24-5-2018 1 0
20 21 vr 25-5-2018 0 0
21 21 za 26-5-2018 -1 0
22 22 zo 27-5-2018 -2 -1
23 22 ma 28-5-2018 -3 -1
24 22 di 29-5-2018 -4 -1
25 22 wo 30-5-2018 -5 -1
26 22 do 31-5-2018 -6 -1
27 22 vr 1-6-2018 -7 -1
希望有人可以帮助我。 我想我必须使用OVER()语句和Intersect(),但在这种情况下我不知道如何。 不幸的是,在其他主题的帮助下我找不到答案。
从版本7开始,您可以使用嵌套聚合,因此此表达式应该有效。
First(case when [Age_of_Day]=0 then [Week] end) - [Week]
我找到了答案,而且非常简单。 [Age_of_Week]的表达式现在为:
If([Age of Day]>=0,Max([Week]) - [Week],If([Age of Day]<0,Min([Week]) - [Week],NULL))
仅当周数保持连续(如我的情况)且未从52重置为1时,此方法才能正常工作。否则,需要在表达式中添加Year()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.