Вставка в таблицу 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 BYs в образце вопроса. Воспроизведение здесь с общедоступными данными, чтобы показать, как создавать массивы массивов в 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

Другие вопросы по тегам