通常在大型选择上使用ORDER BY
在单个节点上运行,这是不可取的。为了解决这个问题,我可以对我的结果进行排序,以便特定用户的时间戳按升序排列,但不一定是全局的。
如何实现这一目标?
E.g。
SELECT *
FROM table
ORDER BY timestamp OVER (PARTITION BY user_id)
在一次考虑一个用户时,应该通过时间戳排序结果。
答案 0 :(得分:3)
试试这个:
ORDER BY user, timestamp
这将首先对用户进行排序,所有重复的user
将按timestamp
排序。
更新: 也可以为每列更改订单
ORDER BY user DESC, timestamp ASC
答案 1 :(得分:0)
问题不是很具体,所以很难给出具体的答案。您可以使用此表单的查询:
#standardSQL
SELECT
user_id,
ARRAY_AGG(
STRUCT(user_timestamp, user_event)
ORDER BY user_timestamp
) AS user_attributes
FROM UserTable
GROUP BY user_id
这将构建一个数组,其中包含每个用户ID的用户属性,按用户时间戳排序。