从多个 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
如果应用于您问题中的示例数据 - 输出为
我在 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
如果应用于您问题中的示例数据 - 输出为