Tableau连接符合条件的字段

时间:2019-03-06 19:00:22

标签: tableau

我需要通过串联5个字段来生成标签字段,但这是窍门:我只想添加与值匹配的字符串,而不添加空字符串。在下面的示例中,四个字段分别命名为“红色,绿色,蓝色和黄色”。值可以是“ Y”,“ N”或“ Null”。我需要从所有“ Y”值中构建标签:

Red, Green, Blue, Yellow
Y, N, Y, Null --> resultant string would be "Red, Blue"
Y, Y, Null, N --> resultant string would be "Red, Green"
N, Null, N, Y --> resultant string would be "Yellow"

我目前正在做的是一系列计算字段的级联,在其中检查两个字段,并将其放在一个临时字段中,然后根据下一列检查该临时字段并创建一个新的临时字段,等等。因此(缩写代码):

If Red is Y and Green is Y then Temp1 = "Red, Green"
Elsif Red is Y and Green <> Y  then Temp1 = "Red"
elsif Green is Y and Red <> Y then Temp1 = "Green"
Else Temp1 is 'empty'

下一个计算将每个条件的Temp1与Blue进行比较,然后构建temp2,依此类推。

问题:这是最有效的方法吗?还是我缺少一些巧妙的代码?我可以在一次计算中完成所有操作,而不会出现大量的if / then组合吗?没有那么多字段会很好。

1 个答案:

答案 0 :(得分:0)

这是基于“ Y”的存在而串联的解决方案。如果值是“ N”,Null或其他不同的值,则ELSE不会为串联添加任何内容。

//Calculated field you will create
REPLACE(TRIM( STR(IF [Red] = "Y" THEN "RED " ELSE "" END)+
STR(IF [Green] = "Y" THEN "Green " ELSE "" END)+
STR(IF [Blue] = "Y" THEN "Blue " ELSE "" END)+
STR(IF [Yellow] = "Y" THEN "Yellow" ELSE "" END)), " ", ", ")

TRIM()删除所有尾随空格,如果您的最后一个单词不是'Yellow',则可能会出现尾随空格。环绕整个语句的REPLACE()在每个单词后添加一个逗号-用空格替换逗号和空格。

希望有帮助。