gpt4 book ai didi

德鲁伊查询从第三列获取 "latest"值

转载 作者:行者123 更新时间:2023-12-04 15:43:10 25 4
gpt4 key购买 nike

我在德鲁伊有一张 table ,像

Timestamp || UserId || Action

而且我需要为每个 UserId 获取最新的 Action。在 MySQL 中我会做类似的事情

Select * from users u1 inner join (
select UserId, max(Timestamp) as maxt from users group by UserId
) u2
on u1.UserId = u2.UserId and u1.Timestamp = u2.maxt

但是 Druid 不能进行连接,只能进行非常基本的子选择。

我知道“正确”的答案可能是在摄取时对数据进行非规范化,但不幸的是,这不是一个选项,因为我不“拥有”摄取部分。

到目前为止,我想出的唯一解决方案是在 Java 代码中检索两个查询的所有结果并手动执行连接,但我可以想象,当数据集增长时,我会遇到内存限制。

我试图查看物化 View ,但看起来它仍在孵化中并且需要一个 hadoop 集群,所以不太可行。

我试着做类似的事情

Select * from users u1 where concat(Timestamp, UserId) in (
select concat(UserId, max(Timestamp)) from users group by UserId
)

但它也不喜欢那样。

有什么建议吗?

最佳答案

LATEST(expr)

Returns the latest value of expr, which must be numeric. If exprcomes from a relation with a timestamp column (like a Druiddatasource) then "latest" is the value last encountered with themaximum overall timestamp of all values being aggregated. If exprdoes not come from a relation with a timestamp, then it is simply thelast value encountered.

https://druid.apache.org/docs/0.20.0/querying/sql.html

关于德鲁伊查询从第三列获取 "latest"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56970055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com