【问题标题】:Tableau concatenate fields that match a conditionTableau 连接符合条件的字段
【发布时间】:2019-03-06 19:00:21
【问题描述】:

我需要通过连接 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 组合,我可以在一次计算中完成所有操作吗?没有这么多字段就好了。

【问题讨论】:

    标签: tableau-api


    【解决方案1】:

    这是一个基于“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() 删除任何尾随空格,如果您的最后一个单词不是“黄色”,则可能出现这些空格。环绕整个语句的 REPLACE() 在每个单词后添加一个逗号 - 将空格替换为逗号和空格。

    希望对您有所帮助。

    【讨论】:

    • 谢谢!我知道必须有办法做到这一点。我似乎无法找到正确的关键字来查找参考文献中的语言。我将在帮助参考中反向查找您的函数,以确定它们的列出位置。抱歉,我无法为你的答案投票,显然我太新了。
    • @EugeneCarroll 您可以接受任何级别的答案。如果可以为您解决问题,请单击向上/向下投票箭头下方的复选标记。
    猜你喜欢
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多