我有一個數據的CSV:「更新」的好習慣?
ID, Name, Address, Date
1 , Paul, Fake 123,2017-01-01
我上傳文件到一個新的表(即「用戶」)
幾個月後,我收到一個CSV與該表的插入和更新。即
ID, Name, Address, Date
1 , Paul, Fake 999,2017-06-01
2 , Joe , Foo 123 ,2017-06-01
...
如果這是一個普通的SQL數據庫,我做了一個Upsert(就像在Mysql中替換一樣)。但是在BigQuery中做到這一點的最佳模式是什麼?更新的DML配額限制是96%的表,太小,無法:(。
我在「交易」表想了想,「最終」表。
當我有一個新的文件,我可以上傳到Transactional表中,然後我可以執行一個查詢,獲得每個「ID」的最後一個值,並將這些數據放入「Final」表中。顯然,查詢的選項是「writeDisposition:WRITE_TRUNCATE」擦除舊數據。
我認爲這是一個混亂的解決方案,但我不能找到一個更好的辦法,有人知道如何做到這一點更好?有什麼地方讀「設計模式」可供BigQuery?
我希望別人可以寫一個完整的答案,但常見的解決方案是每天有一個附加表和邏輯視圖。對於當天,邏輯視圖選擇每個維度中的最新值。在一天結束時,運行更新查詢來修復重複項,然後將邏輯視圖更改爲僅當天的「SELECT *」。確保爲視圖定義使用標準SQL。 –