3 回答

TA貢獻2011條經驗 獲得超2個贊
據我所知,這是正常的。CBT 存儲該行鍵的歷史記錄,您需要通過一個過濾器來獲取最新的行鍵。
bigtable.RowFilter(bigtable.LatestNFilter(1))
更新:這就是我使用該過濾器的方式
rowName := "myrow#key#id"
row, err := bt.Table.ReadRow(ctx, rowName, bigtable.RowFilter(bigtable.LatestNFilter(1)))
if err != nil {
// handle error...
}
if row == nil {
// check for 0 result...
}
更新2:
根據您的代碼,ReadRows改為使用,看起來您正在嘗試獲取多個行鍵。因此您的代碼應該為每個行鍵提取最新行。
如果您只想要圖像中顯示的一把鑰匙,那么我只會使用該ReadRow方法。
err = tbl.ReadRow(ctx,"1564:u2Sng4xbtG", bigtable.RowFilter(bigtable.LatestNFilter(1)))
否則...我想它在 CBT 中的存儲方式可能存在問題,但這有點超出了我的 CBT 技能范圍。希望 CBT 專家能為您提供幫助。

TA貢獻1815條經驗 獲得超13個贊
這里似乎有點混亂:
在任何情況下,ReadRows 都不應該返回重復的行鍵。假設電子表格中的行對應于客戶端庫在 func 回調中返回的行,那么這是客戶端庫中的錯誤。
Bigtable 確實允許單元格值的多個版本。它提供像LatestNFilter()這樣的過濾器來隱藏舊的單元格值,并提供gc規則來定期刪除它們。但是,這僅限于單元格值,與行鍵無關。換句話說,Bigtable 提供單元版本而不是行版本。
ApplyBulk 不是原子的,而且它不提供有關突變排序的任何保證。
- 3 回答
- 0 關注
- 164 瀏覽
添加回答
舉報