如何运行 Presto 查询查找行数组中元素的索引
Posted
技术标签:
【中文标题】如何运行 Presto 查询查找行数组中元素的索引【英文标题】:How can I run a Presto query find the index of an element in an array of rows 【发布时间】:2022-01-09 11:05:30 【问题描述】:我在 Presto 表中有以下列
sku | product |
---|---|
012345 | ['(productsku='012345', title='this title', ...)'] |
其中产品列是行数组
如何编写 SQL 查询来查找产品列表中 sku 的索引(例如 productListPosition)?
【问题讨论】:
【参考方案1】:一种方法是将行数组转换为 productskus 数组并使用array_position
:
WITH dataset(sku, product) AS (
values
(1, array[cast(ROW(1) as ROW(productsku INTEGER)),cast(ROW(2) as ROW(productsku INTEGER))]),
(2, array[cast(ROW(1) as ROW(productsku INTEGER)),cast(ROW(2) as ROW(productsku INTEGER))]),
(3, array[cast(ROW(1) as ROW(productsku INTEGER)),cast(ROW(2) as ROW(productsku INTEGER))])
)
select array_position(transform(product, r -> r.productsku), sku)
from dataset
输出:
_col0 |
---|
1 |
2 |
0 |
【讨论】:
以上是关于如何运行 Presto 查询查找行数组中元素的索引的主要内容,如果未能解决你的问题,请参考以下文章
在 Presto 中,如何检查我通过子查询获取的列表中是不是存在数组中的元素