【问题标题】:Spotfire : formula for calculated column based on the other columnsSpotfire:基于其他列的计算列的公式
【发布时间】:2017-06-16 09:50:34
【问题描述】:

我需要创建一个计算列,该列根据其他两列的值计算一个值与前一行的差异。

FOR 示例。考虑如下所示的 4 列。 Col B 和 Col C 具有日期值,Col A 作为一些唯一值,Col D 将具有一些数值,这些数值将用于计算所需的列,因此当 Col B=Col C 时,Col D 的对应值必须是取并减去 Col D 值,直到下一次 Col B=Col C 出现。

表格的图像(PS:我无法以可复制的方式复制整个表格,因为格式会变得混乱)

我需要如下输出:即当日期值相等时,[COL B]=[COL C](即 20-12-2016 15:40),那么我必须考虑对应的 COL D 值并用 138 减去,直到发生下一次类似的事件。下一次出现的值是 12-01-2017 15:40 ,然后应该用 161 减去它,这样会继续下去,并且是动态的。

请注意:对于 [COL B]=[COL C] 之前的值,那些对应的值应与 COL D 相同,或者如果 COL C 的值为 NULL 或 BLank,则其也应与突出显示的 COL D 相同在绿色。

输出要求(如黄色)

我在spotfire中使用了如下代码

if([COL B] is Not NULL,If([COL B]=[COL C],First[COL D] - [COL D]),[COL D])

,但是由于要减去的值是动态的,所以我无法实现它。 任何帮助表示赞赏

@Ksp585 : 请在下面的屏幕截图中找到计算错误的地方:在绿色链接之后,下一个值应该是 751 (2638-3389),而不是根据之前的计算 (3389-22=3367) 计算为 3367,即错误:

【问题讨论】:

  • 我什至在下面也尝试过:但它给出的错误如“invalid after” if([COL C] is Not NULL=, First(If([COL B]=[COL C],[ COL D]),"NA")) ) OVER ([COL A, COL B, COL C , COL D]))), "NA")OVER""

标签: spotfire


【解决方案1】:

@Nischey Anand- 请尝试以下解决方案。

第 1 步:添加“row_id”列

RowId()

第 2 步:使用以下自定义表达式插入计算列

If([Column C] is not null,Sum([Column D]) over ([row_id]) - first([Column D]) over ([Column C]),[Column D])

这是最终输出:

希望这会有所帮助!

已根据提供的其他详细信息更新答案:

使用以下自定义表达式添加计算列。

If(Sum(If([Column B]=[Column C],[Column D])) over ([Column C]) is not null,[Column D] - Sum(If([Column B]=[Column C],[Column D])) over ([Column C]),[Column D])

这是更新后的最终输出表:

希望这能解决您的问题!

【讨论】:

  • 逻辑上看起来不错,但我仍然收到相同的错误“第 1 行字符上的 'over' 后表达式无效”,这是越来越早,这个错误是最后一个即对于“ over ([Column C]),[Column D])”这部分...请帮助
  • @Nischey Anand- 我在 Spotfire 的 6.0 和 7.8 版本中测试了这个解决方案,它运行良好,没有错误。请捕获您输入的错误公式并将其发布在您的问题中吗?
  • @Nischey Anand- 快速澄清一下 - 最后的 [Column D] 不是 over 函数的一部分,它是 if() 条件的一部分。
  • 这部分帮助我解决了我之前提到的问题“最后的 [Column D] 不是 over 函数的一部分,它是 if() 条件的一部分。”.. ..有一个括号差异。但是我观察到我们没有考虑不考虑条件的部分:“因此,当 Col B=Col C 和 Col D 的相应值必须取并减去 Col D 值,直到下一次 Col B=Col C发生。”因此,它只是按 Col C 分组,给出了错误的计算......我已经更新了我在生产中得到的值
  • @Nischey Anand- 抱歉,我有点忙,无法尽快回复您。我已根据您提供的其他详细信息更新了我的答案。希望能解决您的问题。
猜你喜欢
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 2015-06-02
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
相关资源
最近更新 更多