作者:騰訊雲流計算 Oceanus 團隊
流計算 Oceanus 簡介
流計算 Oceanus 是大資料產品生態體系的實時化分析利器,是基於 Apache Flink 構建的具備一站開發、無縫連線、亞秒延時、低廉成本、安全穩定等特點的企業級實時大資料分析平臺。流計算 Oceanus 以實現企業資料價值最大化為目標,加速企業實時化數字化的建設程式。
本示例使用流計算 Oceanus 平臺的 ETL 功能,將 PostgreSQL 資料取出,經過時間轉換函式處理後存入 PostgreSQL 中。使用者無需編寫 SQL 程式碼,只用在介面上進行簡單的點選操作即可建立流計算 Oceanus ETL 作業。
前置準備
建立流計算 Oceanus 叢集
進入流計算 Oceanus 控制檯 [1],點選左側【叢集管理】,點選左上方【建立叢集】,具體可參考流計算 Oceanus 官方文件 建立獨享叢集 [2]。
建立 PostgreSQL 例項
進入 PostgreSQL 控制檯 [3],點選左上角【新建】建立例項,具體參考 建立 PostgreSQL 例項 [4]。進入例項資料庫,建立表。
-- 用於 Source CREATE TABLE public.oceanus8_output ( id INT, time_one TIMESTAMP, PRIMARY KEY(id) ); -- 手動插入資料 INSERT INTO public.oceanus8_output VALUES (1,'2020-10-01 18:00:00'); INSERT INTO public.oceanus8_output VALUES (2,'2021-10-01 18:30:24'); -- 用於 Sink CREATE TABLE public.oceanus8_input ( id INT, transf_one VARCHAR(50), transf_two TIMESTAMP, const_four INT, PRIMARY KEY(id) );
筆者這裡使用 DBeaver 進行外網連線,更多連線方式參考官網文件 連線 PostgreSQL 例項 [5]
流計算 Oceanus 作業
進入流計算 Oceanus 控制檯 [1],點選左上角【新建】建立 ETL 作業,點選【開發除錯】進入作業編輯頁面。ETL 作業源端可以是 MySQL、PostgreSQL,目的端可以是 MySQL、PostgreSQL、ClickHouse 和 Elasticsearch。
1. 建立 Source
單擊【資料來源表】右側【新增】按鈕,選擇 PostgreSQL
,選擇並填寫資料庫表相關的資訊。
2. 建立 Sink
單擊【資料目的表】右側【新增】按鈕,選擇 PostgreSQL
,選擇並填寫資料庫表相關的資訊。
3. 對映欄位
編寫需要建立對映欄位的業務邏輯。這裡使用 DATA_FORMAT
函式將 time_one
欄位型別由 TIMESTAMP
對映為 STRING
,使用 TIMESTAMPADD
函式將 time_one
欄位增加一週,並將常量 1000
存入 const_str
欄位。
ETL 作業開發詳見流計算 Oceanus 官方文件 ETL 開發指南 [6]。
新增資料來源表和目的表後,可配置欄位對映。欄位對映分為原欄位對映和新增欄位對映兩個部分。
原欄位對映
在左側的資料來源表中可以勾選本次 ETL 作業需要從資料來源表抽取的資料欄位,並在右側選擇要載入進目的表的對應的對映欄位名稱。這樣在資料來源表中的資料就會複製載入到目的表中。
新增欄位對映
欄位生成方式有計算欄位和常量欄位兩種。
-
計算欄位可以對從資料來源表抽取出來的欄位資料進行 內建函式 數值轉換或者計算。
-
常量欄位可以輸入一個自定義常量欄位到目的源表相應的欄位中。
欄位取值
-
計算欄位:欄位取值可以輸入欄位值或者表示式,對每個滿足的輸入源資料進行表示式計算。將計算結果返回到資料目的表所選的對映欄位中。
-
常量欄位:欄位取值可以輸入字串或者數字(輸入型別與目的表型別要一致),這個常量欄位取值將會載入到每一條資料目的表所選的對映欄位中。
總結
流計算 Oceanus ETL 作業最簡化了使用者操作,開發人員甚至無需瞭解程式語言,只需要選擇資料來源表和目的表,並根據業務邏輯完成欄位對映的配置,花費幾分鐘即可輕鬆啟動 ETL 作業。
計算欄位:可以對從資料來源表抽取出來的欄位資料進行 內建函式 [7] 數值轉換或者計算。
常量欄位:可以輸入一個自定義常量欄位到目的源表相應的欄位中。
參考連結
[1] 流計算 Oceanus 控制檯:https://console.cloud.tencent.com/oceanus/overview
[2] 建立獨享叢集:https://cloud.tencent.com/document/product/849/48298
[3] PostgreSQL 控制檯:https://console.cloud.tencent.com/postgres/index
[4] 建立 PostgreSQL 例項:https://cloud.tencent.com/document/product/409/56961
[5] 連線 PostgreSQL 例項:https://cloud.tencent.com/document/product/409/40429
[6] ETL 開發指南:https://cloud.tencent.com/document/product/849/59839
[7] 內建函式:https://cloud.tencent.com/document/product/849/18083