卡桑德拉 - 如何做分组和限制查询?
表格数据如下所示。表有时间戳集群顺序递减,并且主键(名字,时间戳):卡桑德拉 - 如何做分组和限制查询?
name - address - timestamp
John - J_Addr 1 - Jan 01, 2017
John - J_Addr 2 - Feb 05, 2017
Mark - M_Addr 1 - Jan 01, 2017
Mark - M_Addr 2 - Mar 05, 2017
是否有一种方式来获得最新的地址,每个名字? 在上述情况下,预期的结果将是:
name - address - timestamp
John - J_Addr 2 - Feb 05, 2017
Mark - M_Addr 2 - Mar 05, 2017
如果使用卡桑德拉版本> = 3.6则可以使用PER PARTITION LIMIT
实施例:
SELECT * FROM table_name PER PARTITION LIMIT 1;
否则如果您正在插入当前时间的每个时间戳值,然后您可以创建如下所示的另一个表格:
CREATE TABLE user_address (
name text PRIMARY KEY,
address text
);
无论何时插入到基表中,也会插入维护表中。如果你想维护这些表之间的原子性,你可以使用批处理。
因此,每次为用户插入地址时,地址都会被插入。所以,你会得到最新的地址
否则,您必须通过扫描限制的所有行和组从客户端
是的,物化视图将有助于我的情况。 – wittyameta
@wittyameta哎呀抱歉。物化视图主键必须包含基表的所有主键。所以在你的情况下,你不能创建物化视图,只有名称作为主键 –
任何其他解决方案,而不会限制它从客户端? – wittyameta
什么是你的表的分区键? –
@AshrafulIslam主键是(名称,时间戳) – wittyameta