【发布时间】:2019-09-05 11:49:52
【问题描述】:
如何将记录插入到具有 2 级深度嵌套数组的 BigQuery 表中。
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'
【问题讨论】:
-
您遇到的错误是什么?
-
仔细查看了您提供的 SQL 代码(重新格式化),似乎您也想加入 ORDER_DISCOUNTS ODIS 但省略了包含 JOIN 类型和带有字段名称的 ON 子句...“... FROM ORDER_HEADER OH LEFT JOIN ORDER_DETAIL OD, ORDER_DISCOUNTS ODIS ..."
-
我得到的错误是“在 [1:21] 不允许聚合聚合”。我更改了选择查询并使用如下。 SELECT OH.ORDER_ID, ARRAY_AGG(STRUCT(OD.LINE_ID, OD.ITEM_ID , OD.QUANTITY, ARRAY_AGG(STRUCT(ELIG.LOCATION_ID)))) 从 ORDER_HEADER OH LEFT JOIN ORDER_DETAIL OD on OH.ORDER_ID = OD.ORDER_ID LEFT JOIN ELIG ON elig.ORDER_ID = OD.ORDER_ID 其中 OH.ORDER_ID = 'ABCD' GROUP BY OH.ORDER_ID
标签: google-bigquery bigquery-standard-sql