Bigquery - json_array 从嵌套数组中提取和计算元素

作者:编程家 分类: arrays 时间:2025-04-22

使用 BigQuery JSON_ARRAY 从嵌套数组中提取和计算元素

在BigQuery中,JSON_ARRAY函数是一个强大的工具,可以帮助我们轻松地从嵌套的JSON数组中提取和计算元素。这对于处理包含复杂结构的数据特别有用,例如嵌套的数组。在本文中,我们将深入探讨如何使用BigQuery的JSON_ARRAY函数进行这些操作,并提供一些实际的案例代码,以帮助读者更好地理解。

### JSON_ARRAY 简介

在开始之前,让我们先了解一下JSON_ARRAY函数的基本概念。JSON_ARRAY函数用于创建包含给定值的JSON数组,这些值可以是任何合法的JSON表达式。这使得我们能够轻松地处理包含嵌套数组的复杂JSON结构。

### 从嵌套数组中提取元素

在许多实际场景中,我们需要从嵌套数组中提取特定元素以进行进一步的分析。假设我们有一个包含订单信息的JSON,其中包括一个嵌套的产品数组,我们想要提取每个订单中产品的名称和价格。以下是一个示例的JSON结构:

json

{

"order_id": 123,

"customer_name": "John Doe",

"products": [

{"product_name": "Product A", "price": 50},

{"product_name": "Product B", "price": 30},

{"product_name": "Product C", "price": 25}

]

}

使用JSON_ARRAY函数,我们可以编写如下的SQL查询来提取产品名称和价格:

sql

SELECT

JSON_EXTRACT_ARRAY_ELEMENT_TEXT(order_data, '$.products[*].product_name') AS product_name,

JSON_EXTRACT_ARRAY_ELEMENT(order_data, '$.products[*].price') AS price

FROM

`your_project.your_dataset.your_table`

这将返回一个结果集,其中包含每个产品的名称和价格。

### 计算嵌套数组元素的总和

除了提取元素之外,我们可能还希望对嵌套数组中的元素进行聚合计算,比如计算订单的总金额。以下是一个计算订单总金额的示例查询:

sql

SELECT

order_id,

customer_name,

(SELECT SUM(CAST(product->>'price' AS INT64)) FROM UNNEST(products) AS product) AS total_amount

FROM

`your_project.your_dataset.your_table`

这个查询使用UNNEST函数展开产品数组,并计算每个订单的总金额。

###

BigQuery的JSON_ARRAY函数为处理嵌套数组提供了强大的工具,使我们能够轻松提取和计算元素。通过适当的查询和操作,我们可以有效地处理复杂的JSON结构,从中提取有用的信息。希望本文提供的案例代码能够帮助读者更好地理解和应用这些技术。