RestCloud ETL抽取動態庫表資料實踐

RestCloud發表於2022-06-24

RestCloud ETL社群版是一款資料整合工具,提供視覺化多資料管道構建、資料來源管理、執行監控及許可權管理功能。

 

1.場景說明:

對於一些業務系統每天執行自動產生一張新資料表,希望透過1條資料流程每天自動讀取當天的資料表。如2022年6月1日產生表名稱為“table_20220601”,2022年6月2日產生表名稱為“table_20220602”,以此類推;對於這樣的動態表,如何使用RestCloud ETL簡單、便捷實現資料抽取。

 

2.實現原理:

首先我們需要根據日期自動生成對於的表名稱,並做將該引數傳輸給庫表輸入元件。實現流程圖如下:

實現該業務的前提條件是庫表輸入元件支援接收變數傳輸,這個RestCloud ETL無與倫比的優勢。

 

3.實現步驟:

3.1配置"執行Java指令碼"

右鍵"執行Java指令碼",點選“節點屬性”開啟配置編輯頁面,點選下一步,編輯Java程式碼。程式碼中加入生成表名稱程式碼,輸出引數為: p_tablename  ,如下圖:

程式碼如下:

package cn.restcloud.etl.rule.ext;

 

import org.apache.commons.lang3.StringUtils;

import org.bson.Document;

import java.sql.Connection;

import cn.restcloud.framework.core.context.*;

import cn.restcloud.etl.base.IETLBaseEvent;

import cn.restcloud.etl.base.IETLBaseProcessEngine;

import cn.restcloud.framework.core.util.*;

import cn.restcloud.framework.core.util.db.rdb.*;

import java.util.*;

import java.text.SimpleDateFormat;

/**

indoc為流資料

執行成功必須返回字元1,返回0表示終止流程

*/

 

public class ETL_T00005_1INWBJPUXVB implements IETLBaseEvent {

 

@Override

public String execute(IETLBaseProcessEngine engine, Document modelNodeDoc, Document indoc,String fieldId,String params) throws Exception {

   

    Date date = new Date();

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

        String table = "table_" + sdf.format(date);

        PrintUtil.o(table);

        indoc.put("p_tablename",table);

 

 

return "1";

}

 

}   

完成程式碼編輯,點選【編譯並儲存】退出配置。

 

3.2 庫表輸入配置

右鍵"庫表輸入",點選“節點屬性”開啟配置編輯頁面。

選擇源表資料來源,點選下一步:

編輯讀取資料SQL語句,select * from 表名稱,表名稱輸入接收引數,引數格式:${引數},${p_tablename},點選下一步:

點選【新增欄位】,輸入抽取資料表欄位,點選儲存完成配置。

 

3.3 庫表輸出配置

右鍵"庫表輸入",點選“節點屬性”開啟配置編輯頁面。

依次輸入配置,選擇資料來源,載入資料庫表,選擇資料庫表。

 

點選【從表中讀入】,勾選關鍵字(主鍵),點選下一步。

根據需要選擇對應的日記策略,點選儲存完成配置。

 

4.執行測試

點選【執行】

點選【開始執行】

 

5.檢視執行結果

點選庫表輸出,資料傳輸統計

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005218/viewspace-2902694/,如需轉載,請註明出處,否則將追究法律責任。

相關文章