1. 概念
1.1 版本
FineBI 版本 | JAR 包版本 | 功能變動 |
---|---|---|
5.1 | - | - |
5.1.6 | 2020-09-30 | 增加「結果通知」功能 |
1.2 應用場景
在進行大數據量資料更新時,往往需要在固定時間按計劃重複進行資料更新,以便能夠顯示最新的資料庫資料。
在更新後,普通使用者需要知道自己的資料集更新失敗的錯誤原因,且需要通知使用者更新的結果資訊,以便他們知道資料已經成功更新。
注:在進行資料更新前需要是管理者或者擁有對應資料業務包的管理權限。
1.3 功能介紹
FineBI 提供定時更新功能,可以設定時間,將業務包中的非實時資料表更新到本地。
定時更新可以設定「全局定時更新」、「業務包定時更新」和「單表定時更新」。
同時支援「更新結果通知」,使用者能及時瞭解更新結果。
注:不建議設定過於頻繁的更新頻率。過於頻繁容易帶來資料還沒更新完,系統就開始下一次更新的情況,而這樣的情況會帶來當機風險。
2. 全局定時更新
2.1 建立定時更新任務
注:只有超級管理者可以全局更新,其他使用者不具備全局更新的功能。
1)進入「資料準備>全域性更新」,如下圖所示:
2)點選定時設定,如下圖所示:
2.2 設定定時更新內容
1)自動彈出定時更新設定框,可以對定時更新進行具體的設定。
任務名稱:點選可以更改定時更新任務的名稱。
開始時間和結束時間:是指更新任務開始和結束的時間,並不是指更新的時長。開始和結束的時間粒度可細化到時分秒。點選image.png可選擇開始時間。
執行頻率:「只執行一次」、「簡單重複執行」有「明細頻率設定」、「表式設定」四種執行頻率方式。
結果通知:可選擇「通知時機」、「通知物件」、「通知方式」。
範例設定如下圖所示:
「執行頻率」以及對應的「結束時間」設定如下所示:
執行頻率 | 說明 | 對應結束時間 |
---|---|---|
只執行一次 | 在設定的開始時間開始後,該定時更新任務只執行一次更新 | 無需設定結束時間 |
簡單重複執行 | 可設定四種時間粒度,分別是:「分鐘、小時、天、週」,可進行簡單的間隔時間設定。例如:每隔1天執行一次 | 執行頻率選擇「簡單重複執行」後,結束時間有三種選項: 無限期:無結束時間,定時更新任務會一直定時執行 設定結束時間:和開始時間設定方法一致,當設定的結束時間到了後,將不再執行該定時更新的任務 額外重複執行次數:在設定的開始時間執行了定時任務之後會在間隔時間達到後再執行任務的次數,可手動設定次數 |
明細頻率設定 | 可進行細化的間隔時間設定。 執行時間:細化到分鐘,小時需要輸入 0-23 內的整數;分鐘需要輸入 0-59 內的整數 執行日:可選每天、每週和每月。其中每週可在週一至週日之間單選或多選,每月可在 1 號到 31 號之間單選或多選 執行月:可在一年中的 1 月到 12 月單選或多選 | 執行頻率選擇「明細頻率設定」後,任務結束時間只能選擇兩種:「無限期」或「設定結束時間」: 無限期:無結束時間,定時更新任務會一直定時執行 設定結束時間:和開始時間設定方法一致,當設定的結束時間到了後,將不再執行該定時更新的任務 |
表式設定 | 指設定一些「特定時間」的更新頻率。 系統中的預設表式包含五種 自訂表式設定 填入時間頻率的 Cron 表式,需填寫正確的表式才能進行定時更新 | 執行頻率選擇「自訂表式」後,任務結束時間只能選擇兩種:「無限期」或「設定結束時間」,可參考本章「明細頻率設定」 注:Cron表式的詳細使用方法可參考本章「5. Cron表式」 |
通知內容選項如下所示:
通知內容 | 說明 |
---|---|
通知時機 | 可勾選「僅在任務報錯時通知」,若勾選則在更新任務中有更新失敗情況才會傳送通知。 |
通知對象 | 支援設定通知對象:「部門」、「角色」、「使用者」 注:只要將使用者選擇至「部門」、「角色」、「使用者」中的任意一個,被設定使用者即可收到訊息 |
通知方式 | 可選擇「平台通知」、「郵件通知」、「簡訊通知」 注:郵件通知和簡訊通知都需要在管理系統對應位置進行設定 |
4)點選「確定」,可以看到設定好的定時更新任務出現在更新任務框中。可以建立多個定時任務,並且對定時任務進行編輯和刪除。如下圖所示:
2.3 查看更新結果
由於根據範例的設定,「技術支援」部門 Anna 登入數據決策系統,點選「訊息提示>查看訊息」,即可看到更新任務執行結果詳情,如下圖所示:
若使用者點選「處理」,可進入更新任務管理介面查看詳細更新情況,詳情參見:管理更新情況,如下圖所示:
點選處理后:
注:若需要處理更新任務執行情況,需要有對應「更新任務管理權限」。
3. 業務包定時更新
進入「資料準備>業務包」,點選「業務包更新」,點選「定時設定」,如下圖所示:
彈出定時設定框,設定方法與介面與全局定時更新一致(參考第二節全局定時更新),設定通知物件為「技術支援」部門,點選「確定」,通知方式為「平台通知」,如下圖所示:
4. 單表定時更新
4.1 自助資料集定時更新
使用者對自助資料集使用到的基礎表進行定時更新,基礎表的更新會觸發自助資料集的更新,進而實現自助資料集的定時更新。
4.2 單表更新操作方法
1)進入「資料準備」,選擇需要定時更新的單表,點選「更新資訊>單表更新」。如下圖所示:
2)點選「定時設定」,如下圖所示:
3)彈出定時設定框,設定方法與介面與全局定時更新一致,但「單表更新」支援設定更新方式,可選擇「全量更新」和「增量更新」,如下圖所示:
4)點選「確定」,可以看到設定好的定時更新任務出現在更新任務框中。可以建立多個定時任務,並且對定時任務進行編輯和刪除。如下圖所示:
5. Cron表式
Cron表式為一個字串,由 5 個或 6 個空格隔開,分為 6 或 7 個域,每一個域代表一個時間範圍。Cron有如下兩種文法格式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year。
Seconds Minutes Hours DayofMonth Month DayofWeek。
從左到右(用空格隔開):秒 分 小時 月份中的日期 月份 星期中的日期 年份(可選)。
5.1 域
每一個域可出現的字元如下:
域 | 允許值 | 允許的特殊字元 |
---|---|---|
秒(Seconds) | 0~59的整數 | , - * / 四個字元 |
分(Minutes) | 0-59的整數 | , - * / 四個字元 |
小時(Hours) | 0-23的整數 | , - * / 四個字元 |
日期(DayofMonth) | 0-31的整數(但是需要考慮月的天數) | ,- * ? / L W C 八個字元 |
月份(Month) | 1-12的整數或英文JAN-DEC | , - * / 四個字元 |
星期(DayofWeek) | 1-7的整數或英文SUN-SAT(1=SUN, 2=MON,...) | , - * ? / L C # 八個字元 |
年份(Year) | 1970-2099 | , - * / 四個字元 |
每一個域除了使用數字還可以出現特殊字元,其中特殊字元的含義如下:
字元 | 含義 |
---|---|
* | 表示匹配該域的任意值,假如在 Minutes 域使用 *,即表示每分鐘都會觸發事件 |
? | 只能用在 DayofMonth(日期)和 DayofWeek(星期)兩個域。它也匹配域的任意值,但實際不會。因為 DayofMonth 和 DayofWeek 會相互影響。例如想在每月的 20 日觸發調度,不管 20 日到底是星期幾,則只能使用如下寫法: 13 13 15 20 * ?,其中最後一位只能用 ?,而不能使用 *,如果使用 * 表示不管星期幾都會觸發,實際上並不是這樣 |
- | 表示範圍,例如在 Minutes 域使用 5-20,表示從 5 分到 20 分鐘每分鐘觸發一次 |
/ | 表示起始時間開始觸發,然後每隔固定時間觸發一次,例如在Minutes域使用 5/20,則意味着 5 分鐘觸發一次,而 25,45等分別觸發一次 |
, | 表示列出枚舉值。例如:在Minutes域使用 5,20,則意味着在 5 和 20 分每分鐘觸發一次 |
L | 該字元只在 DayofMonth(日期)和 DayofWeek(星期)域中使用,代表“Last”的意思,但它在兩個欄位中意思不同。L在日期欄位中,表示這個月份的最後一天,如一月的 31 號,非閏年二月的 28 號;如果L用在星期中,則表示星期六,等同於7。但是,如果 L 在前面有一個數值 X ,它就具有其他含義了。例如,月份中的 6L 表示該月的倒數第六天;星期域中的 FRIL 表示這個月的最後一個星期五 |
W | 該字元只能出現在 DayofMonth(日期)域裏,是對前導日期的修飾,表示離該日期最近的工作日(週一到週五)。例如 15W 表示離該月15 號最近的工作日(週一到週五),如果該月15 號是星期六,則匹配 14 號星期五;如果15 日是星期日,則匹配 16 號星期一;如果 15 號是星期二,那結果就是15 號星期二。但必須注意聯動的匹配日期不能夠跨月,如你指定 1W,如果 1 號是星期六,結果匹配的是 3 號星期一,而非上個月最後的那天。W 字串只能指定單一日期,而不能指定日期範圍 |
LW | 在 DayofMonth 欄位可以組合使用 LW,它的意思是當月的最後一個工作日(週一到週五)。 |
C | 該字元只在 DayofMonth(日期)和 DayofWeek(星期)域中使用,代表“Calendar”的意思。它的意思是計劃所聯動的日期,如果日期沒有被聯動,則相當於日曆中所有日期。例如:5C 在日期欄位中就相當於日曆 5 日以後的第一天;1C 在星期欄位中相當於星期日後的第一天 |
# | 該字元只能在 DayofWeek(星期)域中使用,表示當月某個工作日(週一到週五)。如 6#3 表示當月的第三個星期五( 6 表示星期五,#3表示當前的第三個);而 4#5 表示當月的第五個星期三,假設當月沒有第五個星期三,忽略不觸發 |
5.2 範例
Cron表式範例如下:
注:使用者可參考 Cron 表式線上生成工具 檢查寫的表式是否正確,確定正確以後填入。
表式 | 含義 |
---|---|
*/5 * * * * ? | 每隔 5 秒執行一次 |
0 */1 * * * ? | 每隔 1 分鐘執行一次 |
0 0 */1 * * ? | 每隔 1 小時執行一次 |
0 0 12 * * ? | 每天中午十二點觸發 |
0 0 0,13,18,21 * * ? | 每天的 0 點、13 點、18 點、21 點都觸發一次 |
0 0 0-8 * * ? | 每天的 0-8點,每整點觸發一次 |
0 15 10 ? * * | 每天早上 10:15 觸發 |
0 15 10 * * ? | 每天早上 10:15 觸發 |
0 15 10 * * ? * | 每天早上 10:15 觸發 |
0 15 10 * * ? 2005 | 2005 年的 每天早上 10:15 觸發 |
0 * 14 * * ? | 每天從下午 2 點開始到 2 點 59 分每分鐘一次觸發 |
0 0/5 14 * * ? | 每天從下午 2 點開始到 2 點 55 分結束每 5 分鐘一次觸發 |
0 55/10 14,18 * * ? | 每天的下午 2 點 55 和 6 點 55 分觸發 |
0 10,44 14 ? 3 WED | 三月的每週三的14:10和14:44觸發 |
0 15 10 ? * MON-FRI | 每個週一、週二、週三、週四、週五的10:15觸發 |
0 15 10 15 * ? | 每月 15 號的 10:15 觸發 |
0 15 10 L * ? | 每月的最後一天的 10:15 觸發 |
0 15 10 ? * 6L | 每月最后一个周五的 10:15 触发 |
0 15 10 ? * 6L 2002-2005 | 2002 年至 2005 年的每月最後一個週五的 10:15觸發 |
0 15 10 ? * 6#3 | 每月的第三個週五的 10:15 觸發 |
0 0 0 L-2 * ? * | 每月倒數第二天(支援 FineReport 10.0,不支援 FineReport 9.0) |