从多个 table 行创建一个 JSON 列表

Creating a JSON list from multiple table rows

我在 BigQuery table 中有数据,其中每一行都是电子商务订单中的一个项目,例如,这里的行显示在两个订单中购买了三个项目:

Order number Product Quantity
001 ABC 1
001 DEF 2
002 GHI 1

我需要按以下格式为每个 订单 创建一个 JSON 列表,使用上面的示例数据对于订单 001 如下所示:

[ {product_id: "ABC", quantity:1},{product_id: "DEF", quantity:2} ]

如何在 BigQuery 中实现这种格式 SQL?

正如@aleix-cc 所指出的,这可以通过目前处于预览状态的 TO_JSON 函数轻松完成:

WITH orders as (
  SELECT "001" as order_number, "ABC" as product, 1 as quantity UNION ALL
  SELECT "001", "DEF", 2 UNION ALL
  SELECT "002", "GHI", 1
 )
 

SELECT 
  order_number, 
  TO_JSON(ARRAY_AGG(STRUCT(product, quantity))) json_value 
FROM orders
GROUP BY order_number

编辑: 由于这是一个预览功能,您应该使用 并使用 TO_JSON_STRING.

考虑以下

SELECT order_number, 
  TO_JSON_STRING(ARRAY_AGG(STRUCT(product as product_id, quantity))) json_value 
FROM orders
GROUP BY order_number          

如果应用于您问题中的示例数据 - 输出为