在BigQuery中,可以使用approx_top_count
函数来对数组进行GROUP BY操作。approx_top_count
函数用于估计数组中每个元素出现的频率,并返回出现频率最高的元素及其频率。
下面是一个示例,演示了如何使用approx_top_count
函数对数组进行GROUP BY操作:
WITH dataset AS (
SELECT 'A' AS group_id, [1, 2, 3, 1, 2, 1, 1] AS array_column UNION ALL
SELECT 'B' AS group_id, [4, 5, 6, 4, 5, 6, 4] AS array_column UNION ALL
SELECT 'A' AS group_id, [1, 2, 3, 1, 2, 1, 1] AS array_column UNION ALL
SELECT 'B' AS group_id, [4, 5, 6, 4, 5, 6, 4] AS array_column UNION ALL
SELECT 'A' AS group_id, [1, 2, 3, 1, 2, 1, 1] AS array_column
)
SELECT
group_id,
approx_top_count(element) AS top_elements
FROM dataset, UNNEST(array_column) AS element
GROUP BY group_id
在上面的示例中,我们有一个包含两列的表格,其中group_id
列表示组的标识,array_column
列包含数组。我们使用UNNEST
函数将数组展开为单独的元素,并将element
作为列名。
然后,我们使用approx_top_count
函数对element
列进行GROUP BY操作,并将结果命名为top_elements
。approx_top_count
函数返回一个结构化的数组,其中包含出现频率最高的元素及其频率。
最后,我们按group_id
进行分组,输出每个组的top_elements。
这是一个示例输出:
+----------+-----------------------+
| group_id | top_elements |
+----------+-----------------------+
| A | [{element: 1, count: 5}]|
| B | [{element: 4, count: 5}]|
+----------+-----------------------+
在上面的输出中,对于组A,出现频率最高的元素是1,出现了5次。对于组B,出现频率最高的元素是4,同样出现了5次。
请注意,approx_top_count
函数返回的结果是一个结构化的数组,包含了每个元素及其频率。