2017-07-14 52 views
1

表格數據如下所示。表有時間戳集羣順序遞減,並且主鍵(名字,時間戳):卡桑德拉 - 如何做分組和限制查詢?

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 
+0

什麼是你的表的分區鍵? –

+0

@AshrafulIslam主鍵是(名稱,時間戳) – wittyameta

回答

1

如果使用卡桑德拉版本> = 3.6則可以使用PER PARTITION LIMIT

實施例:

SELECT * FROM table_name PER PARTITION LIMIT 1; 

否則如果您正在插入當前時間的每個時間戳值,然後您可以創建如下所示的另一個表格:

CREATE TABLE user_address (
    name text PRIMARY KEY, 
    address text 
); 

無論何時插入到基表中,也會插入維護表中。如果你想維護這些表之間的原子性,你可以使用批處理。

因此,每次爲用戶插入地址時,地址都會被插入。所以,你會得到最新的地址

否則,您必須通過掃描限制的所有行和組從客戶端

+0

是的,物化視圖將有助於我的情況。 – wittyameta

+0

@wittyameta哎呀抱歉。物化視圖主鍵必須包含基表的所有主鍵。所以在你的情況下,你不能創建物化視圖,只有名稱作爲主鍵 –

+0

任何其他解決方案,而不會限制它從客戶端? – wittyameta