連接資料串流
下列串流服務在 Qlik 開放湖倉庫 專案中受到支援。事件資料會持續擷取,以確保下游資料整合、分析和 AI 的近乎即時可用性,從而實現反映最新營運活動的低延遲管道。
Apache Kafka 和 Amazon Kinesis 等串流服務提供持久、高輸送量的管道,用於擷取發生的營運事件。與依賴批次擷取的檔案型來源不同,串流來源會在事件產生時持續傳遞資料,從而實現近乎即時的處理,而無需等待檔案產生或排程。生產者發佈保留其結構描述並支援分割的結構化或半結構化訊息。相同記錄的所有更新和刪除都必須使用相同的分割區金鑰。Kafka 和 Kinesis 僅保證單一分割區或分片內的排序,而非整個主題或串流的排序,因此使用一致的分割區金鑰可確保指定記錄的變更以正確的順序處理。Qlik 也支援 Amazon S3 作為串流來源,以持續擷取事件資料。
串流擷取與批次擷取
串流與批次資料來源的差異說明如下:
-
這兩種來源都會每分鐘有效率地擷取事件,支援低延遲處理和近乎即時的分析。
-
對於非串流來源,會先完整載入現有資料,然後再擷取變更。您也可以從來源重新載入完整載入資料。
-
對於串流來源,初始載入和後續事件之間沒有明確區分。Qlik 可以管理保留,也支援分割區。
在 Qlik 開放湖倉庫 專案中,串流來源只能與 串流登陸任務 和 串流轉換任務 搭配使用:
-
串流資料是使用 串流登陸任務 擷取,串流登陸任務會讀取抵達的事件,而非處理離散檔案,並將資料登陸到 Amazon S3,以及將事件持久化為 Avro 檔案。此方法可保留結構描述演進、支援複雜資料類型 (例如結構),並提供高效儲存和最佳化查詢效能,同時維持連續擷取模型。
-
當您從串流來源載入資料時,會自動為每個將以 Iceberg 格式儲存的資料集新增串流轉換任務。您可以選擇,串流轉換任務可用於標準化結構、豐富事件承載,或使資料與下游耗用模型保持一致。
-
一個鏡像資料任務可讓來自串流來源的資料集鏡像到雲端資料倉庫,讓下游系統能夠耗用串流事件,而無需重複資料。如需詳細資訊,請參閱 將資料鏡像到雲端資料倉庫。
資料類型對應
初始來源結構描述是根據在建立管道專案時,於 PREPARE 階段之前擷取的資料樣本,且結構描述演進會在讀取時處理。不支援 STRUCT 和 ARRAY 的鏡像任務和其他下游任務會使用 JSON 類型。資料可使用 SQL 進行剖析。
下列資料類型對應適用於所有支援的資料來源,但會依據來源檔案類型而異,且應注意下列事項:
-
資料類型是從正在上線的資料樣本推斷而來。例如,如果欄位在樣本中只包含整數值,它會在串流登陸和轉換任務中建立為 INT8。如果後續資料包含雙精確度小數值,登陸檔案會包含這些值;然而,在串流轉換任務中,如果 變更欄位資料類型 設定為 忽略,欄位會維持 INT8 且小數值會被截斷。為避免意外截斷,請確保樣本資料在上線前包含所有預期值的完整範圍,或在早期階段將變更欄位資料類型設定為停止任務,並視需要調整資料類型。
-
如果在來源的結構中新增欄位,則該欄位一律會新增至登陸目標。對於串流轉換,行為會根據串流轉換任務設定 > 結構描述演進 > 將欄位新增至結構 (套用至目標、忽略、停止任務) 中選擇的選項來套用。
-
如果特定記錄中缺少欄位,或陣列為空,則會將其視為 null。
-
如果資料集由陣列扁平化,且記錄到達時該陣列為空或 null,系統會建立一個資料列,且扁平化欄位為 null。它不會自動排除。如果您要排除這些列,請手動新增篩選器,例如array_element IS NOT NULL。
-
UI 中顯示的資料類型反映選取的資料集精細度。對於扁平化陣列,會顯示個別元素的資料類型,而非陣列結構本身。
-
無法在巢狀 JSON 欄位內的結構中新增屬性,只能在根層級新增。
-
在串流轉換任務中,僅支援單層陣列的扁平化。當扁平化套用至多層陣列時,例如 ARRAY<ARRAY<STRUCT>>,只會扁平化外部陣列,產生 ARRAY<STRUCT>,而非完全扁平化的 STRUCT。此外,目前的 UI 僅允許在欄位層級設定扁平化。因此,選取多層陣列會隱含地將扁平化套用至第一個陣列層級。
JSON
在 JSON 檔案中,來源中的數值決定目標資料類型:
-
INT8 用於符合支援的整數範圍且不包含小數部分的整數值。
-
REAL8 (DOUBLE) 用於值包含小數部分 (浮點數) 的情況。
-
STRING 用於數值超出支援的最大整數範圍的情況。
資料類型對應如下:
| 來源資料類型 | Qlik Talend Data Integration 個資料類型 |
|---|---|
| 字串 | 字串 |
| NUMBER | INT8 |
| NUMBER | REAL8 |
| NUMBER | 字串 |
| 布林值 | 布林值 |
| 陣列 | 陣列 |
| 物件 | STRUCT |
CSV、TSV、REGEX 和 SPLIT
預設情況下,所有來源資料類型都會被擷取為字串。使用選項 自動推斷類型,以對應來源和目標類型,如下所示:
| 來源資料類型 | Qlik 個資料類型 |
|---|---|
| 數字 | INT8/REAL8 |
| True/TRUE/true/False/FALSE/false | 布林值 |
| 時間戳記 | 格式為 yyyy-MM-dd HH:mm:ss 或 yyyy-MM-ddTHH:mm:ssz 的時間戳記會剖析為日期時間類型。如果包含時區,該值會被解析為字串。 |
Parquet
Parquet 檔案支援實體和邏輯資料類型。實體資料類型定義值在磁碟上的儲存方式,例如 INT32、DOUBLE 或 BYTE_ARRAY。邏輯資料類型在實體表示之上提供語義,例如,識別整數值是否代表日期。當邏輯類型附加到 Parquet 欄位並在 Qlik 開放湖倉庫 中受支援 (如下所列) 時,串流登陸任務會在定義目標結構描述時使用邏輯類型,而不是底層的實體類型。這可確保資料正確解譯,保留預期的語意 (例如精確度、小數位數和時間意義),並在將資料寫入下游格式時產生更精確的結構描述。
從 Parquet 檔案取得的資料對應如下:
| 來源資料類型 | 邏輯類型 | Qlik Talend Data Integration 個資料類型 |
|---|---|---|
| 布林值 | 布林值 | |
| INT32 | INT8 | |
| INT64 | INT8 | |
| INT96 | 日期時間 | |
| 浮動 | REAL8 | |
| 雙重 | REAL8 | |
| BYTE_ARRAY | STRING (編碼為 Base64) | |
| FIXED_LEN_BYTE_ARRAY | 字串 (以 Base64 編碼) | |
| BYTE_ARRAY | 字串 | 字串 |
| BYTE_ARRAY | ENUM | 字串 |
| INT32 | 小數 | INT8 |
| INT64 | 小數 | INT8 |
| FIXED_LEN_BYTE_ARRAY | 小數 | INT8/REAL8 (以 Base64 編碼) |
| BYTE_ARRAY | 小數 | INT8/REAL8 (以 Base64 編碼) |
| INT32 | 日期 | 日期 |
| INT32 | 時間(毫秒,true) | INT8 |
| INT64 | 時間(微秒,true) | 時間 |
| INT64 | TIMESTAMP(MICROS,true) | 日期時間 |
| INT64 | TIMESTAMP(MILLIS,true) | 日期時間 |
| 巢狀類型 | STRUCT | |
| 列示 | 陣列 | |
| 地圖 | ARRAY<STRUCT>. 代表鍵值對的結構陣列。 |
Avro
下列對應適用於具有結構描述登錄檔的 Avro 檔案。
| 來源資料類型 | 邏輯類型 | Qlik Talend Data Integration 個資料類型 |
|---|---|---|
| 布林值 | 布林值 | |
| INT | INT8 | |
| 長 | INT8 | |
| 浮動 | REAL8 | |
| 雙重 | REAL8 | |
| 位元組 | 字串 | |
| 字串 | 字串 | |
| RECORD | STRUCT | |
| ENUM | 字串 | |
| 陣列 | 陣列 | |
| 地圖 | ARRAY<STRUCT> | |
| 聯集 | ||
| 固定式 | 字串 | |
| 位元組 | 小數 | 小數 |
| 固定式 | 小數 | 小數 |
| INT | 日期 | 日期 |
| INT | TIME-MILLIS | INT8 |
| INT | TIME-MICROS | 時間 |
| 長 | TIMESTAMP-MILLIS | 日期時間 |
| 長 | TIMESTAMP-MICROS | 日期時間 |
ORC
下列對應適用於 ORC 檔案。
| 來源資料類型 | Qlik Talend Data Integration 個資料類型 |
|---|---|
| 布林值 | 布林值 |
| 位元組 | INT8 |
| 短 | INT8 |
| INT | INT8 |
| 長 | INT8 |
| 日期 | 日期 |
| 浮動 | REAL8 |
| 雙重 | REAL8 |
| 時間戳記 | 日期時間 |
| 二進位 | 字串 |
| 小數 | REAL8 |
| 字串 | 字串 |
| VARCHAR | 字串 |
| CHAR | 字串 |
| 列示 | 陣列 |
| 地圖 | 陣列<結構>。代表鍵值對的結構陣列。 |
| STRUCT | STRUCT |
| 聯集 |
限制
以下限制適用於所有資料來源:
-
如果您的檔案類型不同 (這可能發生在它們來自多個來源或版本時),則使用單一範例檔案 (例如,在初始設定期間) 建立的轉換任務不會自動考慮這些差異。
-
如果您變更登陸任務中的資料類型 (例如,因為您需要雜湊資料),請確保轉換資料類型與新的資料類型相符。