如何在Tableau中有条件地选择一行而不是另一行

时间:2017-07-20 19:48:18

标签: tableau calculated-columns

我正在尝试创建一个计算字段,该字段将根据某些条件选择一行而不是另一行。这就是我的数据

           id   month   window         deviation2
     0102G116   0       
     0102G116   1                      NO
     0102G116   6       In Window   
     0102G116   12                     NO
     0102G116   12                     NO
     0102G116   18                     NO
     0102G116   24                     NO
     0114G101   0       
     0114G101   1       In Window   
     0114G101   6       In Window   
     0114G101   12      Out of Window  NO
     0114G101   12      Out of Window  YES
     0114G101   18      In Window   
     0114G101   24      In Window   
     0114G101   36      Out of Window  YES
     0116G103   0       
     0116G103   1       In Window   
     0116G103   6       In Window   
     0116G103   12                     NO
     0116G103   12                     NO
     0116G103   18      In Window   
     0116G103   24      In Window   
     0116G103   36      In Window   
     0116G103   48      In Window   
     0116G104   0       
     0116G104   1       In Window   
     0116G104   6       In Window   
     0116G104   12      Out of Window  NO
     0116G104   12      Out of Window  YES
     0116G104   18      In Window   
     0116G104   24      In Window   
     0116G104   36      In Window   
     0116G104   48      In Window   

WINDOW列中“窗口中”的所有内容都将以空白/ null作为其偏差中的相应值。窗外的一切都可能有3种可能的结果。 YES,NO或NULL(当它在WINDOW列中的“窗口中”时发生NULL)。此外,如果WINDOW列中没有条目,则偏差列中将为NO。

但是,每个id,month组合只能有一行,并且这里有多行的情况。在这种情况下,在它们之间进行选择的逻辑是

     if deviation = yes and deviation = no, then deviation = yes. (So only one row should stay with "Yes" as the deviation value)
     if deviation = no and deviation = no, then deviation = no. (So only one row should stay with "No" as the deviation value)
     if deviation = null and deviation = no/yes then deviation = null (So only one row should stay with "Null" as the deviation value)

我无法提出像deviation2这样的计算列,它将应用上述逻辑。在这种情况下,输出看起来像

          id    month   window         deviation
     0102G116   0       
     0102G116   1                      NO
     0102G116   6       In Window   
     0102G116   12                     NO
     0102G116   18                     NO
     0102G116   24                     NO
     0114G101   0       
     0114G101   1       In Window   
     0114G101   6       In Window   
     0114G101   12      Out of Window  YES
     0114G101   18      In Window   
     0114G101   24      In Window   
     0114G101   36      Out of Window  YES
     0116G103   0       
     0116G103   1       In Window   
     0116G103   6       In Window   
     0116G103   12                     NO
     0116G103   18      In Window   
     0116G103   24      In Window   
     0116G103   36      In Window   
     0116G103   48      In Window   
     0116G104   0       
     0116G104   1       In Window   
     0116G104   6       In Window   
     0116G104   12      Out of Window  YES
     0116G104   18      In Window   
     0116G104   24      In Window   
     0116G104   36      In Window   
     0116G104   48      In Window   

我试图尽可能详细,让我知道我能做些什么来提高清晰度。

感谢您的帮助。非常感谢

1 个答案:

答案 0 :(得分:2)

这是使用详细程度计算(LOD)的好情况。您正在使用以不同详细程度计算的值。

我假设您将字符串字段(“YES”,“NO”)转换为布尔字段(TRUE,FALSE),因为它使事情变得更简单。虽然不是绝对必要的。鉴于此,沿着以下行的公式应该起作用:

{ FIXED id, month : if count(deviation) = count(1) then max(deviation) end}

对于id和month的每个组合,如果任何行具有空偏差,则上述calc返回null。如果所有行都具有偏差的非空值,则其评估为最大值,其中考虑TRUE>假。 (因此,如果任何数据行具有真实偏差,则公式返回true。)