API API中每天有 20 多萬的資料,若落庫到同一張表中,隨着時間該表資料不斷累積,可能造成查詢慢的問題。
希望能按日期分表,每天建立一個新的資料表,儲存該天資料。
根據實際需要從 API API中取出今天資料,將資料落庫到臨時表中。
自訂每天的表名,建立表結構,將臨時表中的資料寫入建立立的表中。
清空臨時表,設定調度頻率。
FineDataLink 中的資料處理程式,詳情參見:https://demo.finedatalink.com/「API取數-資料每日落庫」。
API API中儲存着訂單資料,且每天新增;希望每天從 API API中取出當天包含部分「客戶ID」的資料,每天的資料單獨儲存。
本文範例中,使用 資料服務 建立的 API 模擬 API API,可以透過開始時間、結束時間、客戶ID從 API API取數。如下圖所示:
本節步驟,使用者可根據實際情況,從 API API中取出每天資料,儲存到臨時表中。
本文範例中,是取出每天包含部分「客戶ID」的訂單資料,所以需要向 API API中傳入每天的開始時間、結束時間、客戶ID參數。
1)建立定時任務,拖入「參數指派」節點,取出當天的開始日期和結束日期。如下圖所示:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00') AS start_time,DATE_FORMAT(NOW(), '%Y-%m-%d 23:59:59') AS end_time;
匯出參數start_time、end_time。如下圖所示:
2)由於要從 API API中取出當天特定「客戶ID」對應的訂單資料,需要將「客戶ID」取出,匯出為參數。
再次拖入「參數指派」節點,將「客戶ID」匯出為參數。如下圖所示:
1)拖入「循環容器」節點,「循環容器」節點中拖入「資料轉換」節點。
循環遍歷客戶ID,從 API API中取出客戶ID對應的當天資料。「循環容器」節點設定頁面如下圖所示:
2)「循環容器」節點中拖入「資料轉換」節點,進入「資料轉換」節點。
拖入「API輸入」算子,使用 2.2.1 節準備的參數,從 API API中取數,每次取出當天某客戶ID對應的訂單資料。
點選「資料預覽」,如下圖所示:
可發現,取出的訂單資料在 data 欄位中。
3)拖入「JSON解析」算子,解析 data 欄位,如下圖所示:
4)由於使用「客戶ID」透過「循環容器」節點遍歷訂單資料,若當天訂單資料中沒有該「客戶ID」對應的資料,臨時表中會新增一條空資料,需要把空資料刪除。
拖入「資料過濾」算子,過濾出「訂單ID」非空的資料。如下圖所示:
5)拖入「DB表匯出」算子,將取出的資料匯出到臨時表中。如下圖所示:
寫入方式選擇「追加寫入資料」。點選右上角「儲存」按鈕。
準備儲存每天資料的表名。
1)拖入「參數指派」節點,自訂表名並匯出為參數。
本文範例中,每天的表名是:test+當天日期,比如今天日期是2024-01-10,表名為:test20240110。
SELECT CONCAT('test', DATE_FORMAT(NOW(), '%Y%m%d'));
2)將表名匯出為參數。如下圖所示:
建立表,表名稱為${tablename},表結構與 2.2 節臨時表的表結構一樣,建議欄位順序也與臨時表的相同。
拖入「SQL腳本」節點,建立表結構。如下圖所示:
使用「SQL腳本」節點,將 2.2 節臨時表資料,插入到 2.4 節建立的表中。如下圖所示:
INSERT INTO ${tablename}SELECT * FROM linshi
每天需要將臨時表中的資料插入到每天建立的表中,所以每天資料落庫後,要清空臨時表,方便下次資料落庫。
拖入「SQL腳本」節點,清空臨時表資料。如下圖所示:
TRUNCATE TABLE linshi
點選右上角「儲存並運作」按鈕,任務執行成功後,今天特定客戶ID的訂單資料已被取出,如下圖所示:
點選「任務控制」,在「調度配置」Tab下配置執行頻率。如下圖所示:
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙