Как сделать STRING_AGG строк из UNNEST? - PullRequest
0 голосов
/ 25 марта 2020

По сути, я новичок в BigQuery, и я попытался получить данные, используя STRING_AGG и UNNEST.

I have an object:

Что я я пытаюсь получить для каждого PricingModel PriceOptions в следующем формате: $m/nm, где n обозначает PriceOption duration и m для PriceOption price.

Однако я хочу объединить результаты, то есть $m/nm каждого PriceOption для каждого PricingModel, чтобы получить вывод типа:

Row     PriceOptions
__________________________
1       $1/5m,$2/10m,$3/20m
2       $5/25m,$6/40m,$7/60m

То, что я пробовал, это следующий запрос:

SELECT STRING_AGG((select concat(concat(concat('$', price), '/'), concat(duration, 'm')) from unnest(pricingmodel.priceoptions))) as priceOptions
from `mytable.event` limit 100;

Но я получаю следующую ошибку:

Scalar subquery produced more than one element

1 Ответ

1 голос
/ 25 марта 2020

Используйте ниже вместо этого (очень легкая настройка для вашего исходного запроса)

#standardSQL
SELECT 
  ( SELECT STRING_AGG(CONCAT(CONCAT(CONCAT('$', price), '/'), CONCAT(duration, 'm'))) 
    FROM UNNEST(pricingmodel.priceoptions)
  ) AS priceOptions
FROM `mytable.event` 
LIMIT 100

Кроме того, попробуйте использовать сокращенную версию всех этих КОНКАТОВ как

STRING_AGG('$' || price || '/' || duration || 'm')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...