資料庫中有一張表,每天都會新增當天資料。這張表資料量很大,如果每天更新整張表的話,需要更新很長時間。
使用「增量更新」,只將每天新增的資料更新到 FineBI 中。這樣就不需要更新整張資料表,節省了更新時間和更新資源。
由於增量增加過程中經常需要將資料庫中的資料和系統更新時間做比較,所以有時間戳的表更適合做增量更新。
把 SQLite 資料庫中的「設備生產明細表」新增到 FineBI ,詳細操作請參見:新增資料庫表
如下圖可看到該表中有時間戳欄位「時間」。
1)在 FineBI 中找到「設備生產明細表」,選擇「更新資訊>單表更新」。如下圖所示:
2)進入到單表更新設定頁面,選擇「增量增加」,輸入取數的 SQL 語句,如下圖所示:
輸入 SQL 語句需要與使用的資料庫語言同步,本範例使用的是 SQLite 。
SELECT * FROM 設備生產明細表 WHERE 時間 > strftime('%Y-%m-%d %H:%M:%S','上次更新時間')
該 SQL 語句取出「時間」大於「上次更新時間」的資料後,系統會再將資料增加到 FineBI 中,實現增量更新。其中 strftime 函式用於將「上次更新時間」從字串轉化為日期型別。若使用的是其他資料庫,需要使用其他資料庫適配的函式。
上次更新時間
表示上一次更新開始的時間
該參數為正文型別的年月日時分秒(例如:2017-12-22 12:00:00),需要透過函式將其轉化為時間型別,才能與其他時間型別的欄位做對比
「上次更新時間」必須點選新增,不能複製新增
可用 ${_last_update_time_}代替,本範例的 SQL 語句可寫為
SELECT * FROM 設備生產明細表 WHERE 時間 > strftime('%Y-%m-%d %H:%M:%S','${_last_update_time_}')
表示本次更新的開始時間
該參數為正文型別的年月日時分秒(例如:2019-12-22 12:00:00),需要透過函式將其轉化為時間型別,才能與其他時間型別的欄位做對比
可用 ${_current_update_time_} 代替
注:「增量更新」是以行為單位的,增量增加是對 FineBI 中儲存的資料表直接新增行。
3)點選「預覽」,可以查看到 SQL 語句中取出來的資料,如下圖所示:
若是預覽失敗,可以將 SQL 語句中的「系統參數」更換為固定日期值,在自己的資料庫中測試一下語句是否正確。
4)點選「增量更新>確定」,可以立即對資料進行增量更新,如下圖所示:
更新完成後查看「設備生產明細表」的更新資訊,增量更新後該表增加了兩筆資料,如下圖所示:
在資料預覽介面,也可以看到增量更新增加的資料,如下圖所示:
若使用者希望可以設定定時增量更新,該如何操作呢?
重新進入更新設定介面,點選「定時更新」,更新方式設定「增量更新」,設定更新方式為每天更新一次。如下圖所示:
定時更新詳細設定方式可參見:定時更新