2016-04-28 85 views
1

我是Spotfire的新手,所以我希望我能正确地问这个问题。Spotfire连续计数

我的表格包含Corp_ID,DateFlagged列。根据该日期是否有Corp_ID生产,标记的列为“1”或“0”。

我需要一个自定义表达式,如果被标记的列是“0”,将返回“0”,但如果被标记的列是“1”那么我需要它返回多少个连续的“1”该字符串为Corp_ID

Corp_ID Date   Flagged  New Column 
101  1/1/2016  1   1 
101  1/2/2016  0   0 
101  1/3/2016  1   4 
101  1/4/2016  1   4 
101  1/5/2016  1   4 
101  1/6/2016  1   4 
101  1/7/2016  0   0 
101  1/8/2016  0   0 
101  1/9/2016  1   2 
101  1/10/2016 1   2 
102  1/2/2016  1   3 
102  1/3/2016  1   3 
102  1/4/2016  1   3 
102  1/5/2016  0   0 
102  1/6/2016  0   0 
102  1/7/2016  0   0 
102  1/8/2016  1   4 
102  1/9/2016  1   4 
102  1/10/2016 1   4 
102  1/11/2016 1   4 

在此先感谢您的帮助! KC

+0

你可以在数据拉?如果这是来自某种形式的SQL,那么在Spotfire中执行操作可能更容易。 – Chelsea

回答

1

作为您用来返回数据的查询的一部分,这将更容易实现,但如果您必须在spotfire中执行此操作,我建议您这样做。

1-创建包含[Corp_ID]和[日期](命名“DateHr”)

2-添加名为“的毗连标记”计算的列,其串接所有以前的标志值的层级柱:串联([标记])OVER(Intersect(Parent([Hierarchy.DateHr]),allPrevious([Hierarchy.DateHr])))

3-添加一个计算列,它将在Concat Flags字段中返回0的数目(Named '[0]'):Len([Concat Flags]) - Len(替换([Concat Flags],“0”,“”))

4-添加包含[Corp_ID]和[# (命名为'CorpHr')

5-添加一个计算列以返回所需值:[标记] = 1时的情况然后总和([标记])OVER(相交([Hierarchy.CorpHr])) else 0 end

注意:以上假设您正在使用Spotfire 7.5版。在早期版本中,在计算列中使用层次结构的语法略有不同)。

+0

谢谢,我认为这将是我的解决方案,但我有7.0,当我尝试使用它需要很长时间才能运行。数据在spotfire中出现之前如何在SQL中执行此操作的任何想法? – Kimberly