如何解决Amazon QuickSight使用计算字段从逗号分隔的未排序字符串中提取字符串
我正在处理QuickSight表图,其中数据集具有一个字段,该字段是一组用','(逗号)分隔的单词。这些单词没有以任何顺序排序,但是对于数据集的每一行,可能会有1个或多个单词,并且它们可以在各行中重复,但不能在同一数据行中重复。
giraffe,lion,apple,mango,dog,frog,banana
lion,apple
banana,giraffe,dog
giraffe,banana,apple
mango,apple
frog
giraffe
lion,dog
我想将它们分成单独的“计算字段”,如果要显示的行中只包含该单词,如果该单词不在该完整行中,则只需要NULL。我正在使用以下构造:
calculated field name:
"giraffe"
value to calculate the field:
ifelse(
(
(split({AnimalFruit},',1) = "giraffe") OR
(split({AnimalFruit},2) = "giraffe") OR
(split({AnimalFruit},3) = "giraffe") OR
(split({AnimalFruit},4) = "giraffe") OR
(split({AnimalFruit},5) = "giraffe") OR
(split({AnimalFruit},6) = "giraffe") OR
(split({AnimalFruit},7) = "giraffe") OR
(split({AnimalFruit},8) = "giraffe") OR
(split({AnimalFruit},9) = "giraffe") OR
(split({AnimalFruit},10) = "giraffe")
),"giraffe",NULL
)
但是上面的代码仅给出了“长颈鹿”是第一个单词的行,而不是行中可能是第二或第三或更高版本的行。
我不确定我在做什么错,因为逻辑似乎对我来说是正确的。还有什么我可以做得到这个结果的吗?
我期望的输出是:
但是我得到了
我还尝试使用AWS页面中为“ ifelse”指定的以下构造:
https://docs.aws.amazon.com/quicksight/latest/user/ifelse-function.html
ifelse(
(split({Flags},1)) = "giraffe",(split({Flags},2)) = "giraffe",3)) = "giraffe",4)) = "giraffe",5)) = "giraffe",6)) = "giraffe",7)) = "giraffe",8)) = "giraffe",9)) = "giraffe",10)) = "giraffe",NULL
)
解决方法
已解决了该问题。 CSV数据集的创建方式存在问题,它允许在“,”(逗号)和下一个单词之间使用“”(空格)。
当我第一次搜索该单词时,它没有那个空格,但是对于随后的每个单词,都有一个空格,必须在查询构造中满足该要求:
ifelse(
(
(split({AnimalFruit},',1) = "giraffe") OR
(split({AnimalFruit},2) = " giraffe") OR
(split({AnimalFruit},3) = " giraffe") OR
(split({AnimalFruit},4) = " giraffe") OR
(split({AnimalFruit},5) = " giraffe") OR
(split({AnimalFruit},6) = " giraffe") OR
(split({AnimalFruit},7) = " giraffe") OR
(split({AnimalFruit},8) = " giraffe") OR
(split({AnimalFruit},9) = " giraffe") OR
(split({AnimalFruit},10) = " giraffe")
),"giraffe",NULL
)
这样做,解决了该问题,我得到了所需的输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。