在BigQuery中,可以使用标准SQL来按数组中的唯一字段进行聚合。以下是一个包含代码示例的解决方法:
假设我们有一个包含数组的表格,每个数组包含多个对象,其中每个对象都有一个唯一的字段。我们的目标是按数组中的唯一字段对数据进行聚合。
首先,创建一个示例表格,并插入一些数据:
CREATE TABLE my_table (
id INT64,
items ARRAY>
);
INSERT INTO my_table (id, items)
VALUES
(1, [
STRUCT('A', 10),
STRUCT('B', 20),
STRUCT('C', 30)
]),
(2, [
STRUCT('A', 40),
STRUCT('B', 50),
STRUCT('C', 60)
]),
(3, [
STRUCT('A', 70),
STRUCT('B', 80),
STRUCT('C', 90)
]);
接下来,使用UNNEST
函数将数组展开,并按唯一字段进行聚合:
SELECT
id,
ARRAY_AGG(DISTINCT name) AS unique_names,
ARRAY_AGG(DISTINCT value) AS unique_values
FROM
my_table, UNNEST(items)
GROUP BY
id;
这将返回以下结果:
| id | unique_names | unique_values |
| --- | ------------ | ------------- |
| 1 | [A, B, C] | [10, 20, 30] |
| 2 | [A, B, C] | [40, 50, 60] |
| 3 | [A, B, C] | [70, 80, 90] |
注意,我们在ARRAY_AGG
函数中使用了DISTINCT
关键字,以确保只返回唯一的字段值。
通过按数组中的唯一字段进行聚合,我们可以将多个数组中的数据合并到单个记录中,并获得唯一的字段值。