Spotfire on function - 创建具有不同表行之间差异的新计算列

问题描述 投票:0回答:1

1

我想计算来自 D 列(结束日期)的行与下面的行之间的值差异,但数据来自 C 列(开始日期)。

尝试了以下自定义表达式但不成功

MostCommon(\[Type\]) over (Intersect(\[END_Date\],\[START_Date\]))

我还尝试将 Type 添加到 Intersect 语句中,例如

Intersect(\[ID\],\[Type\], Previous(\[Date\])
,但我得到了类似的结果。

如何在不同线路之间执行此计算?

spotfire tibco intersect
1个回答
1
投票

我的理解有些差距,所以我会根据我的假设来回答

我猜你希望这个日期差异在每个新的 [id] 上重置。我不太明白[tipo]的作用,因为它似乎每行都不一样,所以我忽略了它。

你没有说这个日期差异应该是什么样子,所以我以天为单位计算它(但它可以更改为你喜欢的任何格式)。

Spotfire 有Lag 功能,但不适用于群组。所以我分两步计算了滞后:

首先创建一个 [rank] 变量以在每个 [id] 中分配一个运行索引:

DenseRank([data termino],[id])

然后创建一个滞后结束日期 [lag termino](即组中前一行的结束日期)为:

Max([data termino]) over (Previous([rank]))

然后创建 [lag termino] 和开始日期 [data initio] 之间的日期差异:

SN(DateDiff('day',[lag termino],[data inicio]),0)

SN() 函数将 0 分配给每个 [id] 组中的第一行,其中日期差异将是未定义的。

您可以将最后两个步骤组合为(跳过 [lag termino] 的定义):

SN(DateDiff('day',Max([data termino]) over (Previous([rank])),[data inicio]),0)

但是由于“over”后面不接受表达式,所以无论如何您都需要一个单独的列来表示 [rank]。

© www.soinside.com 2019 - 2024. All rights reserved.