ClickHouse 是面向列的資料庫管理系統(DBMS),用於對查詢進行聯機分析處理(OLAP)。
FineDataLink 支援連結 ClickHouse,進行定時任務讀寫、管道任務寫入、作為資料服務資料發佈源、實時任務寫入。
注:ClickHouse 資料庫的引擎需要是 Atomic 引擎,才支援寫入時自動建表功能。
詳情請參見:前提條件
下載驅動,並將其上傳至 FineDataLink,如何上傳可參見:驅動管理 第 2 節。
clickhouse
clickhouse4j-1.4.4-SNAPSHOT.jar
Clickhouse 8.5.zip注:DateTime64 類型的完整範圍為:[1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999],若需使用完整範圍,請使用此驅動。當 DateTime64 類型寫入超出完整範圍時,會隨機填入一個在範圍內的日期值。
建立資料連結步驟請參見:建立並管理資料源
配置資料連結時,驅動需要切換為「自訂」,換為本文 2.2 節的驅動。
配置好資料源後即可在「定時任務」中使用資料源,詳情參見:資料開發概述
當 DB表匯出選擇 clickhouse:
5.0.0.4 及之後版本,當前任務中存在產生更新流的算子&寫入 clickhouse 時,不支援無主鍵同步;會產生更新流的算子:CDC輸入、分組匯總、資料聯動(多個實時資料源進行聯動)。
表類型為除 collapsingMergeTree 外的其他表引擎
欄位映射處,不展示主鍵列
寫入方式處,不支援配置主鍵映射,不支援配置邏輯刪除
表引擎為 collapsingMergeTree 時
欄位映射:
展示該表的排序鍵,即order by欄位
展示該表宣告的sign欄位,且該欄位不能配置與來源表欄位的映射關係
當選擇的表沒有排序鍵時,報錯:該表沒有宣告排序鍵,不支援寫入
寫入方式:
直接使用排序鍵配置進行映射,不支援自訂
支援配置邏輯刪除
僅支援 collapsingMergeTree 的邏輯
欄位映射
使用者手動設定排序鍵,且必須配置排序鍵
自動新增一個欄位為sign欄位,且該欄位不能配置與來源表欄位的映射關係;在欄位行中用提示 icon對sign欄位進行說明:用於 clickhouse 表引擎進行資料合併
1)當匯出到除 collapsingMergeTree 外的其他表引擎時:
將插入事件的資料直接插入到目標表。
遇到刪除事件、更新事件時則報錯。
2)當匯出到 collapsingMergeTree 時,映射說明詳情參見本文 3.3 節內容。
3)目標端使用已存在表時,表中需要有_fdl_sign欄位來標記刪除情況。
實時管道任務中支援寫入 ClickHouse 資料庫。如下圖所示:
當向目標表寫入資料時,按照 CollapsingMergeTree 表引擎進行寫入。
1)使用 CollapsingMergeTree 表引擎,將邏輯主鍵設定為 order by 欄位
注:建立表時,來源表欄位不能出現 sign ,會和標識增刪改的 sign 欄位重名導致同步失敗
2)如果來源表有物理主鍵,對應的目標表欄位也自動為邏輯主鍵
如果來源表沒有物理主鍵,需要使用者手動設定邏輯主鍵
3)4.2.11.3 及之後版本,自動識別來源表物理主鍵,預設設定為目標表的「排序鍵」,也可以手動指定「排序鍵」,排序鍵同時聯動指定「非空」約束,不可取消
已存在表
如果能獲取表的 order by 欄位,則支援設定已存在表為目標表,否則不支援設定為目標表
1)當選擇已存在表時,只能選擇由 CollapsingMergeTree 表引擎建立的表
2)4.2.11.3 之前版本,需要識別排序鍵,勾選為邏輯主鍵展示出來
4.2.13.3 及之後版本,將已存在表中的排序鍵自動識別並展示出來,寫入方式中主鍵映射處自動填入排序鍵
clickhouse 作為目標端的寫入邏輯為:
對於插入的資料,直接 insert,並標記其 sign 為 1
對於刪除的資料,直接insert一條,邏輯主鍵的資料,並標記其sign為-1 如果是邏輯刪除,insert 更新資料、sign 為 1 的資料即可
對於更新的資料, insert 更新資料、sign 為 1 的資料即可。
注:因為 CollapsingMergeTree 表的合併不定時,所以使用實時同步的表時,需要在使用前手動觸發一次合併,或者在查詢 SQL 使用集合方式,計算時去除掉重複資料的影響。
方式一:直接在 SQL 中使用集合方式,集合範例如下所示:
select name, sum(order_amt*sign) as order_amt from default.test_version_collapsing group by name having sum(sign) > 0
方式二:在使用前觸發一次合併,「OPTIMIZE TABLE test.ods_real_time_order FINAL」
方式三:直接在查詢的 SQL 。select 表名後加 final ,比如 SELECT * FROM gbn_onl_mix.union_order_onl_all_test final WHERE dt = '2023-05-28'。
配置好資料源後即可在「資料服務」中將使用資料源,詳情參見:資料服務概述
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙