Как мне правильно использовать предложение String Aggregate в BigQuery? Отредактировано

#sql #google-bigquery

#sql #google-bigquery

Вопрос:

Я не могу заставить предложение STRING_AGG() работать. Я получаю сообщение об ошибке: «ВЫБЕРИТЕ выражение списка, ссылающееся на consignment_items.receiver_id, которое не сгруппировано и не агрегировано в [3:1]«

скриншот запроса

 SELECT
table1.field1 AS alias1,
table1.field2,
table1.field3,
table2.field4,
table2.field5 AS alias2,
STRING_AGG(table3.field9, '|') AS alias3
FROM database.table1 table1
JOIN database.table3 roles ON table1.field1 = table3.field6
JOIN database.table2 ON table1.field2 = table2.field7
  

Ответ №1:

Вам нужно GROUP BY . Это сработает:

 GROUP BY 1, 2, 3, 4, 5
  

Комментарии:

1. Спасибо! Это определенно сработало. Не могли бы вы, пожалуйста, рассказать мне, почему это сработало или почему это было необходимо в запросе для работы?

2. STRING_AGG() это функция агрегирования. Для этого требуется GROUP BY (если у вас есть неагрегированные столбцы). BigQuery позволяет использовать целочисленные аргументы позиции для GROUP BY ключей (аналогично ORDER BY ).