Amazon QuickSight 使用计算字段从逗号分隔的未排序字符串中提取字符串

Amazon QuickSight extract a string from a comma separated unsorted string using calculated field

我正在处理 QuickSight table 图表,其中数据集有一个字段,该字段是一组由“,”(逗号)分隔的单词。这些词没有按任何顺序排序,但对于数据集的每一行,可能有 1 个或多个词,并且它们可以跨行重复,但不能用于同一数据行。

giraffe, lion, apple, mango, dog, frog, banana
lion, apple
banana, apple, giraffe, lion, mango, dog
giraffe, mango, dog, banana, lion, apple
mango, dog, frog, giraffe, banana, apple
frog
giraffe
lion, giraffe, dog

我想将它们分成单独的 'calculated fields',如果该词在要显示的行中,我只想要那个词;如果该词不在该完整的行中,我只想要一个 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
)

但是上面只给出了 'giraffe' 是第一个单词的行,而不是它可能是行中第二个或第三个或后面的行。

我不确定我在这里做错了什么,因为逻辑对我来说似乎是正确的。我还能做些什么来得到这个结果吗?

我期望的输出是:

但我得到:

我还尝试使用 'ifelse' 的 AWS 页面中给出的以下构造:

https://docs.aws.amazon.com/quicksight/latest/user/ifelse-function.html

ifelse(
    (split({Flags}, ',', 1)) = "giraffe", "giraffe",
    (split({Flags}, ',', 2)) = "giraffe", "giraffe", 
    (split({Flags}, ',', 3)) = "giraffe", "giraffe", 
    (split({Flags}, ',', 4)) = "giraffe", "giraffe", 
    (split({Flags}, ',', 5)) = "giraffe", "giraffe", 
    (split({Flags}, ',', 6)) = "giraffe", "giraffe", 
    (split({Flags}, ',', 7)) = "giraffe", "giraffe", 
    (split({Flags}, ',', 8)) = "giraffe", "giraffe", 
    (split({Flags}, ',', 9)) = "giraffe", "giraffe", 
    (split({Flags}, ',', 10)) = "giraffe", "giraffe", 
    NULL
)

已解决问题。 CSV 数据集的创建方式存在问题,它允许在“,”(逗号)和下一个单词之间使用“”(space)。

当我第一次搜索这个词时,它没有那个 space,但是对于随后的每个词,都有一个 space 并且必须在查询构造:

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
)

这样做,解决了问题,我得到了想要的输出。