gpt4 book ai didi

Cassandra 相当于 group by

转载 作者:行者123 更新时间:2023-12-02 17:02:23 30 4
gpt4 key购买 nike

我正处于 Cassandra 应用程序数据建模的初始阶段。此应用程序具有现有的关系持久层,必须用 Cassandra 替换。

应用程序为用户使用一个名为login_log 的表,它提供所有应用程序中任何用户的最后登录时间。

这是我用来创建此表的 CQL

create table login_log (
user_id int,
application_name text,
login_date timestamp,
primary key (user_id, application_name, login_date)
) with clustering order by (application_name asc, login_date desc)

user_id 是分区键。 application_namelogin_date 是集群键。此表维护登录历史记录,其中的数据永远不会被删除。

我正在尝试在一个查询中为所有应用程序检索给定 user_id 的上次登录日期。

如果我正在编写一个 SQL 查询来做同样的事情,它看起来会像下面这样

select user_id, application_name, max(login_date) from login_log group by user_id, application_name

然而,它不能在 Cassandra 中完成,因为没有 group by 子句或聚合函数。可以说集群列已经分组,但我无法创建一个查询来检索一个查询中所有应用程序的最新 login_date

如果我们为一个应用程序做这件事,CQL 将如下所示

select * from login_log where user_id = ? and application_name = ? limit 1

由于集群已按 login_date 排序,因此不需要 order by。我需要扩展相同的查询以一次性检索所有应用程序的数据。

是否可以在 Cassandra 中执行此操作?如果没有,是否有一种数据建模技术可以让我做到这一点?

感谢任何提示。

最佳答案

从版本 3.10 开始支持 GROUP BY 检查改进票 here和 Cassandra official documentation .

关于Cassandra 相当于 group by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53453405/

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