在我的ETL作业期间,我正在考虑将Cassandra作为中间存储来执行重复数据删除。获取Cassandra中每个分区键的第一行
让我们想象一下,我有一系列事件,每个事件都有一些业务实体ID,时间戳和一些值。我只需要根据每个业务密钥的事件时间戳获取最新值,但事件可能无序。
我的想法是与业务ID创建临时表的分区键和时间戳作为聚集关键字:
CREATE TABLE sample_keyspace.table1_copy1 (
id uuid,
time timestamp,
value text,
PRIMARY KEY (id, time)
) WITH CLUSTERING ORDER BY (time DESC)
现在,如果我插入此表中的一些数据,我可以为某些给定分区获取最新值键:
select * from table1 where id = 96b29b4b-b60b-4be9-9fa3-efa903511f2d limit 1;
但这需要为每一个企业的关键我很感兴趣,发出这样的查询
有没有我可以做一些有效的方法它在CQL中?
我知道我们有能力列出所有可用的分区键(由select distinct id from table1
)。因此,如果我研究Cassandra的存储模型,为每个分区键获取第一行应该不会太难。
是否支持?