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
)
这样做,解决了问题,我得到了想要的输出。
我正在处理 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
)
这样做,解决了问题,我得到了想要的输出。