Как я могу выполнить запрос Presto, чтобы найти индекс элемента в массиве строк

#sql #google-analytics #presto

#sql #google-аналитика #presto

Вопрос:

У меня есть следующие столбцы в таблице Presto

sku продукт
012345 [‘(productsku=’012345′, название=’это название’, …)’]

где столбец продукта представляет собой массив строк

Как я могу написать SQL-запрос, чтобы найти индекс артикула в списке продуктов (например, в позиции ProductList)?

Ответ №1:

Одним из подходов было бы преобразовать массив строк в массив продуктов и использовать 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 -gt; r.productsku), sku) from dataset  

Выход:

_col0
1
2
0