如何运行 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 中,如何检查我通过子查询获取的列表中是不是存在数组中的元素

数组元素查找(查找指定元素第一次在数组中出现的索引)

Presto 查询行数组

Google Dataproc Presto:如何使用 Python 运行查询

FLASH AS3 二维数组如何查找某个元素的索引?

如何在 int 数组中查找元素的索引?