如何通过比较Tibco spot fire中另一列的字符串值来创建计算列

时间:2016-04-04 12:27:38

标签: tibco spotfire

有人可以帮我创建一个计算 专栏如下所述?

考虑表

col1 | col2 | col3
   1 |   x  |  ER
   1 |   x  |  IG
   1 |   x  |  C
   1 |   y  |  ER
   1 |   y  |  ER
   2 |   y  |  IG
   2 |   y  |  C
   2 |   y  |  ER
   2 |   z  |  ER
   2 |   z  |  IG

我需要一个计算列,如果col3上的col1和col2组中至少有一个'C',则表示'成功',否则'失败'。

所以我的新表必须如下:

col1 | col2 | col3 | calculated_col
   1 |   x  |  ER  |  success
   1 |   x  |  IG  |  success
   1 |   x  |  C   |  success
   1 |   y  |  ER  |  fail
   1 |   y  |  ER  |  fail
   2 |   y  |  IG  |  success
   2 |   y  |  C   |  success
   2 |   y  |  ER  |  success
   2 |   z  |  ER  |  fail
   2 |   z  |  IG  |  fail

即:

  1. 对于col1和col2分别为1和'x'的组合,col3处有一个'c',表达结果为'成功'
  2. 对于col1和col2的1和'y'的组合,col3上没有'c',因此表达式结果为'fail'
  3. 对于col1和col2分别为2和'y'的组合,col3上至少有一个'c',表达结果为'成功'
  4. 对于col1和col2中2和'z'的组合,col3上没有'c',因此表达式结果为'fail'

1 个答案:

答案 0 :(得分:0)

您可以使用Intersect OVER函数根据您定义的层次结构(在本例中为col1> col2)收集单元格中的值。

以下表达式产生您想要的结果:

If(
  Find("C", UniqueConcatenate([col3]) OVER (Intersect([col1], [col2]))) > 0,
   "success","fail"
)

它不是特别健壮,但是:如果col3中包含“C”的任何其他值,则此表达式将评估为“成功”!