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

How to create a calculated column by comparing string values from another column in Tibco spot fire

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

考虑 table

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

我需要一个计算列,其中显示 'success' 如果 col3 上至少存在一个 'C' 用于 col1 和 col2 组,否则 'fail'.

所以我的新 table 必须看起来像:

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',所以表达式结果为'success'
  2. 对于col1和col2的1和'y'组合,col3处没有'c',所以表达式结果为'fail'
  3. 对于col1和col2中的2和'y'的组合,在col3处至少有一个'c',所以表达式结果为'success'
  4. 对于col1和col2中的2和'z'的组合,col3处没有'c',所以表达式结果为'fail'

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

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

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

它不是特别可靠,但是:如果您在 col3 中有任何其他值包含“C”,则此表达式的计算结果将是 "success"!