【问题标题】:Spotfire - Sum() overSpotfire - Sum() 结束
【发布时间】:2016-05-25 21:48:39
【问题描述】:

我正在尝试按帐户对 DATE 过去 30 天 INDICATOR 列中的值求和。

我的表达是:Sum([INDICATOR]) over (Intersect([id],LastPeriods(30,[DATE]))) 但结果不准确。

感谢任何帮助。

下面的示例数据:

    DATE    30DAYSBACK  ID  INDICATOR   RUNNING30   EXPECTED
    3/2/16  2/1/16  ABC 1   3   3
    3/2/16  2/1/16  ABC 1   3   3
    3/2/16  2/1/16  ABC 1   3   3  
    3/7/16  2/6/16  ABC 1   7   7
    3/7/16  2/6/16  ABC 1   7   7
    3/7/16  2/6/16  ABC 1   7   7
    3/7/16  2/6/16  ABC 1   7   7
    3/8/16  2/7/16  ABC 1   10  10
    3/8/16  2/7/16  ABC 1   10  10
    3/8/16  2/7/16  ABC 1   10  10
    3/10/16 2/9/16  ABC 1   12  12
    3/10/16 2/9/16  ABC 1   12  12
    3/14/16 2/13/16 ABC 1   13  13
    3/15/16 2/14/16 ABC 1   14  14
    3/16/16 2/15/16 ABC 1   15  15
    3/21/16 2/20/16 ABC 1   16  16
    3/22/16 2/21/16 ABC 1   17  17
    3/23/16 2/22/16 ABC 1   19  19
    3/23/16 2/22/16 ABC 1   19  19
    3/25/16 2/24/16 ABC 1   20  20
    3/29/16 2/28/16 ABC 1   22  22
    3/29/16 2/28/16 ABC 1   22  22
    3/30/16 2/29/16 ABC 1   27  27
    3/30/16 2/29/16 ABC 1   27  27
    3/30/16 2/29/16 ABC 1   27  27
    3/30/16 2/29/16 ABC 1   27  27
    3/30/16 2/29/16 ABC 1   27  27
    3/31/16 3/1/16  ABC 1   29  29
    3/31/16 3/1/16  ABC 1   29  29
    4/1/16  3/2/16  ABC 1   31  31
    4/1/16  3/2/16  ABC 1   31  31
    4/4/16  3/5/16  ABC 1   32  29
    4/5/16  3/6/16  ABC 1   33  30
    4/13/16 3/14/16 ABC 1   34  27
    4/13/16 3/14/16 ABC 1   34  27
    4/13/16 3/14/16 ABC 1   34  27
    4/13/16 3/14/16 ABC 1   34  27
    4/15/16 3/16/16 ABC 1   35  24
    4/20/16 3/21/16 ABC 1   31  26
    4/20/16 3/21/16 ABC 1   31  26
    4/20/16 3/21/16 ABC 1   31  26
    4/25/16 3/26/16 ABC 1   31  25
    4/25/16 3/26/16 ABC 1   31  25
    4/25/16 3/26/16 ABC 1   31  25
    4/26/16 3/27/16 ABC 1   31  26
    4/27/16 3/28/16 ABC 1   34  29
    4/27/16 3/28/16 ABC 1   34  29
    4/27/16 3/28/16 ABC 1   34  29
    4/27/16 3/28/16 ABC 1   34  29
    4/28/16 3/29/16 ABC 1   35  30

【问题讨论】:

  • 你能附上一个样本数据集吗?
  • 感谢您的数据集,但它缺少[INDICATOR] 列
  • 对不起! [INDICATOR] 实际上只是一个 1 直下的值。 (上面贴错标签......在上面被视为“标识符”。)
  • 您的公式工作正常。您遇到的问题是您每天都没有排。当您将数据加载到 Spotfire 时,它​​会根据您的数据排序正确地执行过去 30 个 PERIODS 的 SUM()。很难提出替代方案,因为我不知道最终目标到底是什么。你能详细说明一下吗?
  • 我希望得到的是过去 30 天内发生的帐户指标的总和。因此,例如,如果我正在查看 2016 年 4 月 28 日,我想将开始并包括 2016 年 3 月 29 日(30 天回溯)到 2016 年 4 月 28 日(含)的指​​标相加。

标签: sum calculated-columns spotfire


【解决方案1】:

我无法在 Spotfire 中确定合适的解决方案。但是,我能够编写一些 R 代码,允许将日期和指标列传递给它,对过去 30 天的指标求和,然后将其作为列返回。

代码如下:

record.date <-as.Date(date.column, "%m/%d/%Y")
indicator.vector <- indicator.column

num.entry <- length(record.date)
running.thirty <- vector(length=num.entry)
count <- 0

for(i in 1:num.entry){
  date.test <- record.date[i]
  for(j in 1:num.entry){
    if(record.date[j] >= date.test-30 ){
      if(record.date[j] <= date.test){
        count <- count + indicator.vector[j]
      }
    }
  }
  running.thirty[i] <- count
  count <- 0  
}

output<-running.thirty

使用工具>>注册数据功能

(1) 插入脚本

(2)创建两个输入参数:

input parameters

(3) 创建输出参数:

output parameter

注意:我认为您的数据集末尾附近的预期值存在一些错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2014-09-21
    相关资源
    最近更新 更多