Qlik 開放湖倉庫 中的適用於串流來源的資料集架構
Last updated: 2026/9/1串流來源在 Qlik 開放湖倉庫 中有自己的架構,因為它們不需要 Data Movement gateway 將資料載入到登陸值區,而是由 lakehouse 叢集提供支援。
當您從檔案名稱中包含資料模式的檔案擷取資料時,這可讓 Lakehouse 叢集在 S3 中執行目標清單作業,這會大幅加快讀取檔案清單的時間。此外,Qlik 開放湖倉庫 可以根據日期模式預測到達的檔案。串流登陸任務不必每次都列出整個值區,而是可以要求 S3 提供特定日期範圍內的檔案。檔案清單越少,效能越好。選用的載入後刪除設定可用來維持較少的檔案數量。沒有執行完整載入,第一個記錄會被視為插入的變更。
在一個Qlik 開放湖倉庫中,串流轉換任務會取代儲存任務。此任務用於將已著陸資料轉換並儲存為 Iceberg 表格。串流轉換任務只能在串流登陸任務之後新增。串流轉換任務支援兩種模式來更新記錄:
- 僅附加:新增記錄,而不修改現有資料,且若出現複製記錄,則不會強制執行索引鍵限制。
-
套用變更 (合併): 更新現有記錄並根據索引鍵欄位插入新的記錄。此模式可讓您選擇使用軟刪除,或保留歷史資料 (類型 2)。
串流轉換任務是一種以目標為基礎的任務,可在來源和目標之間進行對應,並包含結構描述演進功能。它提供延伸的轉換功能,包括解除巢狀結構以及陣列的扁平化。如需有關您可在串流轉換任務中使用的函數的詳細資訊,請參閱 轉換函數。
當您從串流來源擷取資料時,您可以設定 Iceberg 分割、保留管理、排序欄、快照過期,以控制儲存成本,並最佳化查詢效能。
以僅限附加模式的串流 Qlik 開放湖倉庫 資料管道架構

合併模式下的串流 Qlik 開放湖倉庫 資料管道架構

登陸表格
下列標頭欄已新增至登陸表格。這些欄位始終存在於登陸資料中,但預設不會包含在下游串流轉換任務中。您可以透過「從來源新增資料欄」將其新增至串流轉換任務,或在新增或編輯資料欄時於運算式建構工具中參考它們。
| 欄位 | 類型 | 描述 |
|---|---|---|
| hdr__kafka_partition | 長 | Kafka 分區 |
| hdr__kafka_topic | 字串 | Kafka 主題 |
| hdr__kafka_offset | 長 | 分割區中的累計值 |
| hdr__kafka_key | 字串 | Base64 編碼金鑰。如果沒有,則設為 NULL 字串。 |
| hdr__kafka_headers | 字串 |
包含所有訊息標頭的 JSON。如果無法使用,則設為 NULL 字串。 |
| 欄位 | 類型 | 描述 |
|---|---|---|
| hdr__kinesis_stream | 字串 | Amazon Kinesis 串流 |
| hdr__kinesis_shard | 字串 | Amazon Kinesis 分區 |
| hdr__kinesis_offset | 字串 | Amazon Kinesis 位移 |
| 欄位 | 類型 | 描述 |
|---|---|---|
| hdr__file_name | 字串 | 檔案名稱 |
| hdr__file_size | 長 | 檔案大小 (單位為位元組)。 |
架構
成品是在內部架構和資料任務結構描述中所產生。
-
內部架構包含具有多個分割區的實體表格。
-
資料任務結構描述含有您可藉以使用資料的檢視。
若結構描述與多個資料任務關聯,每個資料任務必須為表格和檢視使用唯一前置詞。您可以在資料任務設定中設定前置詞。
只會檢查內部結構描述是否有命名衝突。對於其他結構描述,您必須確保表格名稱中沒有命名衝突。最佳做法是將內部結構描述命名為與資料任務結構描述相同的名稱並加上 _internal。這將確保每個結構描述和前置詞組合都是唯一。
表格
對每個來源資料表,會在內部架構中建立一個資料表,並加上後綴_internal,格式如下:
<INTERNAL_SCHEMA>.<TABLE_NAME>_internal
此表格包含五個分割區,在套用變更 (合併)模式中,每個分割區在資料處理和儲存方面都有不同的用途。每個分割區都會根據其在資料生命週期中的角色,利用資料表欄位的子集。在僅限附加模式下,資料表沒有分割區,且行為類似於目前分割區 (ODS)。
內部資料集結構化以有效率地管理來自您來源系統的傳入資料,支援即時擷取和歷史追蹤。資料流動透過幾個專門的分割區進行管理,每個分割區如下所述:
-
變更 分割區 – 即時擷取
來自來源系統的所有變更 (插入、更新和刪除) 會先附加到 Changes 分割區。
-
作為原始變更記錄,該分割區在任何轉換發生之前提供來源活動的完整饋送。
-
每個變更都會標記一個類型 (I、U 或 D),以指示其處理方式。
-
事件在發生時從來源擷取。分割區幾乎是即時更新。
-
當在湖登陸資料任務中套用下列設定時,即可使用Changes分割區。
-
在一般索引標籤中,更新方法設定為 CDC。
-
已啟用完整載入。
-
-
-
資產狀態分割區 - 追蹤進度
隨著變更受到擷取,Asset_state 分割區會記錄兩個關鍵時間戳記:
-
最後一次將變更附加到Changes分割區的時間。
-
最後一次將變更套用到Current分割區的時間。
這提供了對同步管道的完整可見性,並有助於監控或排除延遲。
-
-
目前 分割區 (ODS) — 來源的最新複本
Changes分割區中的變更會定期套用到Current分割區,以維護來源資料的最新、經過查詢最佳化的副本。
-
背景任務會自動執行,以套用這些更新。這是基於累積的變化量,而不是固定的排程。
-
初始完整載入直接寫入到Current分割區。
-
此分割區反映了資料的目前狀態,旨在實現有效率查詢。
-
-
先前 分割區 (HDS) – 歷史資料
當記錄在 Current 分割區中更新或刪除時,會將舊版複本寫入 Prior 分割區。
-
記錄包含中繼資料,包括變更歷史記錄和資料有效的日期範圍。
-
這支援類型 2 緩慢變更維度 (SCD2)。
-
若在儲存資料任務設定的Prior一般索引標籤中啟用保留歷史記錄和變更記錄封存,則分割區可用。
-
若記錄的更新版本進入Current分割區,則先前的記錄將移至Prior分割區,以進行歷史追蹤。
-
-
重新載入 分割區
「Reload」分割區在手動或排程的完整載入期間充當臨時暫存區:
-
新資料會先寫入到 Reload 分割區。
-
定期維護任務會在暫停之前清除任何待處理的變更。
-
將資料與 Current 分割區進行比較,僅將差異部分移至 Current 分割區。
-
操作完成後,將會清除「Reload」分割區。
此流程可確保在完整載入操作期間盡量減少對主要資料集的干擾。
-
Current 分割
| 欄位 | 類型 | 描述 |
|---|---|---|
| hdr__key_hash | VARBINARY (20) | 所有記錄主要金鑰的雜湊。雜湊格式為 SHA1。欄由退格鍵字元分隔。 |
| hdr__from_timestamp | 時間戳記 |
使用 UTC 的時間戳記:
|
| hdr__operation | VARCHAR (1) |
此記錄的最新操作。
|
| hdr__inserted_timestamp | 時間戳記 | 金鑰初次建立時的 UTC 時間戳記。使用完整載入時,完整載入的開始時間。 |
| hdr__modified_timestamp | 時間戳記 | 上次進行更新時的 UTC 時間戳記。 |
Prior 分割
| 欄位 | 類型 | 描述 |
|---|---|---|
| hdr__key_hash | VARBINARY (20) | 所有記錄主要金鑰的雜湊。 |
| hdr__from_timestamp | 時間戳記 | 使用 UTC 的時間戳記。 |
| hdr__to_timestamp | 時間戳記 | 使用 UTC 的時間戳記。 |
| hdr__operation | STRING (1) |
此記錄的最新操作。
|
| hdr__was_current_from_timestamp | 時間戳記 | 記錄初次為最新時的 UTC 時間戳記。 |
| hdr__was_current_to_timestamp | 時間戳記 | 記錄上次為最新時的 UTC 時間戳記。 |
Changes 分割
| 欄位 | 類型 | 描述 |
|---|---|---|
| hdr__change_identifier | VARCHAR (50) |
變更識別碼是含有兩個部分的字串:
|
| hdr__operation | VARCHAR (1) |
此記錄的最新操作。
|
| hdr__timestamp | 時間戳記 | 使用 UTC 的時間戳記。 |
| hdr__key_hash | BINARY (20) | 所有記錄主要金鑰的雜湊。 |
| hdr__inserted_timestamp | 時間戳記 | Qlik 處理變更之時間的 UTC 時間戳記。 |
Asset_state 分割
| 欄位 | 類型 | 描述 |
|---|---|---|
| hdr__apply_change_identifier | VARCHAR (50) | 套用於 Current 分割區的最新變更的變更識別碼。 |
| hdr__copy_change_identifier | VARCHAR (50) | 附加到 Changes 分割區的最新變更的變更識別碼。 |
Reload 分割
Reload分割區使用的欄與Current分割區相同。
檢視
所有建立的檢視畫面都以幾乎即時的頻率來更新。以下檢視可用於簡化查詢和報告:
目前
「目前」檢視反映資料的最新狀態。此檢視代表來源表格的複本,幾乎即時更新。它會合併來自 Current 和 Changes 分割區的資料。
名稱: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>
未向表格結構新增表頭欄。
歷史記錄
在資料任務設定中啟用歷史記錄時,會為每個選定的來源表格在資料資產架構中產生歷史記錄檢視。此歷史記錄檢視合併來自Prior和Changes分割區的資料。這提供了完整的變更時間表,非常適合稽核或歷史分析。
名稱: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>
下列標頭欄位會新增至歷史記錄檢視畫面:
| 欄位 | 類型 | 描述 |
|---|---|---|
| hdr__key_hash | BINARY (20) | 所有記錄主要金鑰的雜湊。 |
| hdr__from_timestamp | 時間戳記 | 在來源系統中發生變更時的時間戳記。這反映了使用者最初進行變更的時間。 |
| hdr__to_timestamp | 時間戳記 | 在來源系統中還原或更新變更時的時間戳記。 |
| hdr__store | VARCHAR (10) |
這表示記錄所在的位置:
|
| hdr__operation | STRING (1) |
此記錄的最新操作。
|
| hdr__deleted | 位元 | 依照 hdr__operation 是 D 或 d,表示記錄是否以軟體刪除。 |
| hdr__was_current_from_timestamp | 時間戳記 | 此列進入Current「目前」分割區的時間 (UTC)。這通常是在儲存工作執行並套用變更時。 |
| hdr__was_current_to_timestamp | 時間戳記 | 例如,由於較新版本的出現,從Current表格中移除列的時間 (UTC)。 |
在檢視中顯示標頭欄
您可以控制是否顯示或隱藏標頭欄。選項會依任務類型而異。
串流登陸任務
若要顯示標頭欄,請開啟搜尋方塊右側的顯示標頭欄。
串流轉換任務
搜尋方塊右側提供包含下列選項的下拉式清單。
-
隱藏標頭欄: 預設值。
-
顯示標頭欄
-
標準: 選取以顯示標準檢視的標頭欄。
-
歷史記錄: 選取以顯示歷史記錄檢視畫面的標頭欄位。請注意,此選項僅在工作或資料集設定中啟用 建立歷史資料儲存 (類型 2) 時才可用。
-