我將在bigquery上維護數據庫的本地副本。我將使用API和tabledata:列表。這個數據庫不是我自己的,並且由維護人員通過附加新數據定期更新(比如每小時)。定期更新的bigquery數據庫中的記錄順序
首先,我可以假設的是,當這個數據被附加,它會肯定被添加到數據庫中的結束?
現在,我們假設當前數據庫有1,000,000行,現在我正在通過tabledata:list分頁來下載所有這些數據。另外,我們假設數據庫在中途更新(有10,000行)。通過使用頁面標記,我可以確信,只有當我按照它們在數據庫中的順序開始時,我纔會下載存在的1m行?
最後,現在讓我們說,我來更新我的副本。如果我啓動startIndex爲1,000,000的tabledata:list,並且使用1000的maxResults,那麼是否會得到10個包含我期望的更新數據的頁面?
我想所有這些問題歸結爲是否的BigQuery尊重數據的順序,這個順序是使用資料表:清單及附加數據是否保證遵循以前的數據。由於有一列的值是唯一的,我可以執行一個簡單的select count(1) from table
來獲取表的長度,我當然可以通過比較本地數據庫的長度和本地數據庫的長度來檢查我的本地副本是否完整但如果上述情況不能保證,並且數據中出現漏洞,則由於主鍵不是連續的(否則我可以只填寫缺失的行)和數據庫非常大。
您不能通過SELECT * FROM table WHERE firstcol> = 100來執行增量加載嗎? –
問題是每個查詢都會處理整個數據庫,所以每次更新(可能每10分鐘一次,因此每月超過4000次),我會處理當前415mb => 1.7tb/month,即使我只是略讀了前幾千名。最簡單,最快,最便宜的方法是使用tabledata:list,我只需要確認我的假設是有效的。 – nitrous