Вставка в таблицу Bigquery с массивом массивов
Как вставить запись в таблицу BigQuery с вложенными массивами глубиной в 2 уровня.
В таблице ORDER есть массив ORDER_DETAIL, который имеет массив ORDER_DISCOUNTS.
Ниже не работает.
INSERT INTO ORDER (ORDER_ID, OrderDetail)
SELECT OH.ORDER_ID, ARRAY_AGG(struct(OD.line_id, OD.item_id, ARRAY_AGG(struct(ODIS.discounttype)) )
FROM ORDER_HEADER OH LEFT JOIN ORDER_DETAIL OD, ORDER_DISCOUNTS ODIS
ON OH.ORDER_ID = OD.ORDER_ID AND ODIS.ORDER_ID = OD.ORDER_ID and ODIS.LINE_ID = OD.LINE_ID
WHERE OH.ORDER_ID = 'ABCD'
1 ответ
Я не вижу GROUP BY
s в образце вопроса. Воспроизведение здесь с общедоступными данными, чтобы показать, как создавать массивы массивов в BigQuery:
WITH data AS (
SELECT *
FROM `fh-bigquery.wikipedia_v3.pageviews_2019`
JOIN UNNEST(['Andy_K%','Boys%','Catri%']) start
ON title LIKE start
WHERE DATE(datehour) = "2019-09-01"
AND wiki='en'
)
SELECT start, ARRAY_AGG(STRUCT(title, views) LIMIT 10) title_views
FROM (
SELECT start, title, ARRAY_AGG(STRUCT(datehour,views) LIMIT 3) views
FROM data
GROUP BY start, title
)
GROUP BY start