将结构数组中的数据聚合为字符串 - BigQuery

问题描述 投票:0回答:1

我有一些数据,简单来说是这样的:

我想要做的是将其汇总到一个表中,其中每个 ID 出现一次,并且各个部分以每列的某种形式的聚合字符串进行汇总,但重要的是每个聚合字符串都保持相同的顺序。例如:

对于单个列来说,这很容易,但是为了保证我保持顺序,我可能需要使用结构数组?在这种情况下,我可以使用一些 SQL 来聚合数据:

SELECT id, ARRAY_AGG(STRUCT(part_id AS ids, part_value AS values)) AS part FROM table

然而,在这个阶段,我坚持如何单独聚合 STRUCT 的每个元素并将其转回“正常”字段。

为清楚起见进行了编辑:替换了屏幕截图,因为前面的示例在 part_id 中具有唯一值并且它们已被订购。这些都不应该被假设。

sql google-bigquery
1个回答
0
投票

数据库系统可能以任何顺序返回结果,您需要使用

ORDER BY
子句来定义基于一列或多列的排序(例如,您可以使用唯一 ID 或日期(时间戳)列,或两者都使用) :

SELECT id, STRING_AGG(part_id, '|' ORDER BY ordering_column) as part_ids,
           STRING_AGG(CAST(part_value AS STRING), '|' ORDER BY ordering_column) as part_values
FROM mytable
GROUP  id
© www.soinside.com 2019 - 2024. All rights reserved.