1. 概述
1.1 應用場景
若資料庫中有一張表,每天都會新增資料。這時候使用者可以使用「增量更新」,只將每天新增的資料更新到 FineBI 中。這樣就不需要更新整張資料表,節省了更新時間和更新資源。
1.2 功能簡介
滿足以下條件的資料表,比較適合使用增量更新
表內有「時間戳」欄位,可用來和「更新時間」做對比實現增量更新
歷史資料不會變動
增量更新的表常用於頻繁更新且資料量比較大的表。若是單表的資料量比較小,或者一個月才更新一回,那使用全量更新也沒問題。
1.3 注意事項
2. 操作簡介
選中要增量更新的表,在「更新資訊」下找到「單表更新」,如下圖所示:
進入到單表更新設定介面如下圖所示:
可以看到有兩種增量更新方式:增量增加、增量刪除
2.1 增量增加
在下方寫入 SQL 語句取數,「增量增加」會將從資料庫中取出來的資料加到 FineBI 引擎中,如下圖所示:
常用於需要定時新增資料的情況。詳細操作可參見:增量增加範例
2.2 增量刪除
在下方寫入 SQL 語句,系統會從 FineBI 引擎中取出該部分資料進行刪除,如下圖所示:
使用者可以透過「增量刪除」刪除 FineBI 引擎中不需要的資料。不過增量刪除很少單獨使用,通常情況下是用於修改資料,可參見本文 2.3 節。
2.3 增量修改
搭配使用「增量增加」和「增量刪除」,比如說先刪除 FineBI 中一部分資料後,再將資料庫中的資料加入到 FineBI 引擎中。
詳細操作可參見:增量修改範例
2.4 設定定時增量更新
FineBI 支援定時增量更新,詳細操作可參見 增量增加範例 2.3 節。
3. 注意事項
3.1 增量更新重複執行導致資料重複
若使用者增量更新時不小心重複更新,導致 FineBI 中資料重複怎麼辦?
這時候只需要執行一次全量更新,資料庫的資料會重新改寫 FineBI 引擎中的資料,進而保證 FineBI 引擎中的資料和資料庫保持一致。
3.2 增量刪除後磁碟空間不變化
使用者在進行增量刪除後,發現磁碟空間沒有相應減少。
這是因為 FineBI 在進行增量刪除後不會立即釋放磁碟空間,而是先將資料標記為刪除。
FineBI6.1環境下當標記刪除的資料量達到 BI 總資料量的 10%, 就會一起刪除釋放磁碟空間。
如果想每次都真實刪除資料,可以透過修改「finedb」的參數 「DistributedOptimizationConfig.spiderConfig.max_drop_row_ratio」進行配置,將取值範圍為「0,1」,預設為 0.1 。
3.3 資料庫與 BI 伺服器的系統時間不一致
當FineBI伺服器的系統時間與資料庫的時間不一致時,容易出現重複更新的情況
建議在設定增量更新語句時,設定為「where 時間 > 上次更新時間 and 時間 <= 當前更新時間 」。