'Tagging' 使用多个条件的记录
'Tagging' a record using multiple criteria
我正在使用 Presto。我想使用不互斥的不同标准分配具有多个 'tags' 的行。
例如,假设有一个包含 4 列的 table:
| food | color | type | on_sale |
|------------+--------+-------------+---------|
| apple | red | fruit | TRUE |
| banana | yellow | fruit | FALSE |
| cornbread | yellow | baked goods | TRUE |
| apple pie | brown | baked goods | TRUE |
我想用我定义的标签来标记每种食物,例如 red food
、red food on sale
、yellow baked goods
、yellow food on_sale
。在示例中,apple 匹配两个标签:red food
和 red food on sale
.
我不能使用 CASE
(如下所示),因为我只会在我真正想要将其标记为两者时返回 'red food'。
CASE
WHEN color = 'red' THEN 'red food'
WHEN color = 'red' AND `on_sale` = TRUE THEN 'red food on sale'
(and so on)
理想情况下,我想 return 一个可以捕获超过 1 个 'tag' 的数组或每个标签一行的重复列,但我不知道该怎么做。有什么想法吗?
提前致谢!
您可以使用字符串连接:
LTRIM(CASE WHEN color = 'red' THEN ' red food' ELSE '' END ||
CASE WHEN `on_sale` = TRUE THEN ' on sale' ELSE '' END
END)
我正在使用 Presto。我想使用不互斥的不同标准分配具有多个 'tags' 的行。
例如,假设有一个包含 4 列的 table:
| food | color | type | on_sale |
|------------+--------+-------------+---------|
| apple | red | fruit | TRUE |
| banana | yellow | fruit | FALSE |
| cornbread | yellow | baked goods | TRUE |
| apple pie | brown | baked goods | TRUE |
我想用我定义的标签来标记每种食物,例如 red food
、red food on sale
、yellow baked goods
、yellow food on_sale
。在示例中,apple 匹配两个标签:red food
和 red food on sale
.
我不能使用 CASE
(如下所示),因为我只会在我真正想要将其标记为两者时返回 'red food'。
CASE
WHEN color = 'red' THEN 'red food'
WHEN color = 'red' AND `on_sale` = TRUE THEN 'red food on sale'
(and so on)
理想情况下,我想 return 一个可以捕获超过 1 个 'tag' 的数组或每个标签一行的重复列,但我不知道该怎么做。有什么想法吗?
提前致谢!
您可以使用字符串连接:
LTRIM(CASE WHEN color = 'red' THEN ' red food' ELSE '' END ||
CASE WHEN `on_sale` = TRUE THEN ' on sale' ELSE '' END
END)