【问题标题】:Spotfire: Select data from column based on criteriaSpotfire:根据条件从列中选择数据
【发布时间】:2016-06-06 20:42:57
【问题描述】:

我在 Spotfire 中有一个数据表,其中包含我感兴趣的两列:Time(例如 31/01/2015)和Value(整数)。

我希望将最近的日期(例如 2015 年 12 月)设置为当前时间。然后我想根据前 1 个月、3 个月、6 个月等选择 Value。所以如果我想要过去 6 个月的所有值,它应该 Sum(Values) 用于 2015 年 12 月、2015 年 11 月、2015 年 10 月, 2015 年 9 月、2015 年 8 月并返回。

到目前为止,我只能通过在将任务插入 Spotfire 之前在 Excel 中手动执行任务来完成此任务,所以有没有办法为我想要的每个时间段创建一个计算列? (上个月、3 个月等)

【问题讨论】:

  • 你到底想做什么?为所有行中具有相同数据的表添加列“前 1 个月”...,或者获取使用这些结果的可视化?
  • 我宁愿只获得一个可视化 - 它不必使用前 1 个月或上一年等填充新列,但如果创建计算列更容易以便放置像图表或表格这样的可视化答案,那么任何一种方法都足够了。关键是我不想在 excel 中手动执行计算 - 我希望这个过程是自动化的,所以当我更新基础表时,我不必重复这个过程。

标签: calculated-columns spotfire


【解决方案1】:

可能有多种方法可以解决此问题,但我将给出一个建议,我们将看看它如何适合您的具体情况。

您可以为您感兴趣的每个时间跨度添加一个计算列,定义如下:

Sum(if (DateAdd('month', 3, [Time]) >= Max([Time]), [Value], null))

此示例将为您提供一个包含过去 3 个月内发生的所有值的列,替换其中的数字 3 以修改您感兴趣的时间跨度。计算列的全部总和将为您提供该时间跨度的总计。

使用布尔列而不是复制值列可能会更好。那么您的计算列将被定义为:

DateAdd('month', 3, [Time]) >= Max([Time])

在计算总计时,您将使用 if 语句使用计算列,如下所示:

Sum(if([3Months],[Value],null))

其中 [3Months] 是一个布尔列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    相关资源
    最近更新 更多