В BigQuery мне нужно заполнить поле строкой, содержащей последние пять уникальных продуктов, купленных клиентом. Ранее я использовал функцию STRING_AGG
, но не как упорядочивание, так и различие, и именно здесь у меня возникает проблема. Поэтому я пытаюсь следующее (что работает, если DISTINCT
удалено):
SELECT ps.customerID, STRING_AGG( DISTINCT ps.productId ORDER BY ps.orderDate DESC LIMIT 5 ) AS lastFiveProducts
FROM view.purchases AS ps
WHERE ps.market = 'SE'
GROUP BY ps.customerID
limit 100
Где бы я хотел, чтобы STRING_AGG
приводил к строке типа: "23423,63764,62345,00787, 91228 "
Bigquery выдает ошибку:
" Агрегатная функция, имеющая аргументы DISTINCT и ORDER BY, может только выражения ORDER BY, являющиеся аргументами функции в [1:67] "
, поэтому их нельзя объединить.
Какими еще способами можно построить поле такого типа? Подзапрос?