Qlik 開放湖倉庫 中的資料集架構 | Qlik Cloud 說明
跳到主要內容 跳至補充內容

Qlik 開放湖倉庫 中的資料集架構

串流來源在 Qlik 開放湖倉庫 中有其專屬架構,因為它們不需要 Data Movement gateway 將資料載入登陸值區,而是由 lakehouse 叢集提供支援。

當您從檔案名稱中包含資料模式的檔案內嵌資料時,這可讓 lakehouse 叢集在 S3 中執行目標清單作業,從而大幅加快讀取檔案清單的時間。此外,Qlik 開放湖倉庫 可以根據日期模式預測到達的檔案。串流登陸工作不必每次都列出整個值區,而是可以要求 S3 中特定日期範圍內的檔案。較小的檔案清單可帶來更好的效能。可選的 載入後刪除 設定可用於維持較少的檔案數量。不執行完整載入,第一批記錄會被視為插入的變更。

Qlik 開放湖倉庫 中,串流轉換工作會取代儲存工作。此工作用於將登陸的資料轉換並儲存為 Iceberg 表格。串流轉換工作只能在串流登陸工作之後新增。串流轉換工作支援兩種更新記錄的模式:

  • 僅附加:新增記錄而不修改現有資料,如果到達複製的記錄,則不會強制執行索引鍵條件約束。
  • 套用變更 (合併):根據索引鍵欄位更新現有記錄並插入新記錄。此模式讓您可以選擇使用軟刪除,或保留歷史資料 (類型 2)。

串流轉換工作是基於目標的工作,可在來源和目標之間進行對應,並包含架構演進功能。它提供擴充的轉換功能,包括巢狀結構的取消巢狀和陣列的壓平。如需有關可在串流轉換工作中使用的函數的詳細資訊,請參閱 轉換函數

當您從串流來源內嵌時,您可以設定 Iceberg 分割、保留管理、排序欄、快照到期以控制儲存成本,並最佳化查詢效能。

僅附加模式下串流 Qlik 開放湖倉庫 資料管道的架構

僅附加模式下的 Open lakehouse 架構

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

合併模式下的 Open lakehouse 架構

登陸表格

下列標頭欄位會新增至登陸表格。這些欄位始終存在於登陸資料中,但預設不包含在下游串流轉換工作中。您可以使用 從來源新增欄 將它們新增至串流轉換工作,或在新增或編輯欄時於運算式建立器中參考它們。

為 Kafka 來源新增的標頭欄位
欄位 類型 描述
hdr__kafka_partition Long Kafka 分割區
hdr__kafka_topic String Kafka 主題
hdr__kafka_offset Long 分割區中的執行值
hdr__kafka_key String Base64 編碼的索引鍵。如果無法使用,則設為 NULL 字串。
hdr__kafka_headers String

包含所有訊息標頭的 JSON。如果無法使用,則設為 NULL 字串。  

為 Amazon Kinesis 來源新增的標頭欄位
欄位 類型 描述
hdr__kinesis_stream String Amazon Kinesis 串流
hdr__kinesis_shard String Amazon Kinesis 碎片
hdr__kinesis_offset String Amazon Kinesis 位移
為 Amazon S3 來源新增的標頭欄位
欄位 類型 描述
hdr__file_name String 檔案名稱
hdr__file_size Long 檔案大小 (位元組)。

架構

成品會在內部架構和資料工作架構中產生。

  • 內部架構包含具有多個分割區的實體表格。

  • 資料工作架構包含可用於取用資料的檢視。

    當架構與多個資料工作關聯時,每個資料工作必須為表格和檢視使用唯一的前置詞。您可以在資料工作設定中設定前置詞。

僅會檢查內部架構是否有命名衝突。對於其他架構,您必須確保表格名稱中沒有命名衝突。最佳實務是將內部架構命名為與資料工作架構相同的名稱,並加上 _internal。這可確保每個架構和前置詞組合都是唯一的。

資訊備註所有表格和檢視均由 Qlik Talend Data Integration 管理。請勿使用其他工具變更資料。

表格

對於每個來源表格,會在內部架構中建立一個帶有 _internal 尾碼的表格,格式如下:

<INTERNAL_SCHEMA>.<TABLE_NAME>_internal

此表格在 套用變更 (合併) 模式下包含五個分割區,每個分割區在資料處理和儲存方式上都有不同的用途。每個分割區根據其在資料生命週期中的角色,利用表格欄的子集。在 僅附加 模式下,表格沒有分割區,其行為類似於 Current 分割區 (ODS)

資訊備註內部架構中的表格可能會隨時變更,恕不另行通知。在可能的情況下,您應主要使用檢視來取用資料。

內部資料集的結構旨在有效管理來自來源系統的傳入資料,支援即時內嵌和歷史追蹤。 資料流程透過幾個專門的分割區進行管理,每個分割區的描述如下:

  • Changes 分割區 – 即時內嵌

    來自來源系統的所有變更 (插入、更新和刪除) 都會首先附加到 Changes 分割區。

    • 作為原始變更記錄,該分割區在發生任何轉換之前提供來源活動的完整摘要。

    • 每個變更都標記有類型 (I、U 或 D),指出其處理方式。

    • 事件在發生時從來源擷取。分割區會以近乎即時的方式更新。

    • 當在 Lake 登陸資料工作中套用下列設定時,可以使用 Changes 分割區。

      • 一般 索引標籤中,更新方法 設為 CDC

      • 已啟用完整載入。

  • Asset_state 分割區 - 追蹤進度

    隨著變更的內嵌,Asset_state 分割區會記錄兩個關鍵時間戳記:

    • 上次將變更附加到 Changes 分割區的時間。

    • 上次將變更套用到 Current 分割區的時間。

    這提供了對同步管道的完整可見性,並有助於監控或疑難排解延遲。

  • Current 分割區 (ODS) – 來源的最新複本

    來自 Changes 分割區的變更會定期套用到 Current 分割區,以維護來源資料的最新、查詢最佳化副本。

    • 背景工作會自動執行以套用這些更新。這是基於累積變更的數量,而不是固定的排程。

    • 初始完整載入會直接寫入 Current 分割區。

    • 此分割區反映資料的目前狀態,專為高效查詢而設計。

  • Prior 分割區 (HDS) – 歷史資料

    當記錄在 Current 分割區中更新或刪除時,先前版本的副本會寫入 Prior 分割區。 

    • 記錄包含中繼資料,包括變更歷史記錄和資料有效的日期範圍。

    • 這支援類型 2 緩慢變更維度 (SCD2)。

    • 當在儲存資料工作設定的 一般 索引標籤中啟用 保留歷史記錄和變更記錄的封存 時,可以使用 Prior 分割區。

    • 當記錄的更新版本進入 Current 分割區時,先前的記錄會移至 Prior 分割區以進行歷史追蹤。

  • Reload 分割區

    Reload 分割區在手動或排程的完整重新載入期間充當暫存區域:

    • 新資料會首先寫入 Reload 分割區。

    • 定期維護工作會在暫停之前清除任何暫停的變更。

    • 將資料與 Current 分割區進行比較,並且僅將差異移至 Current 分割區。

    • 作業完成時,會清除 Reload 分割區。

    此程序可確保在完整重新載入作業期間對主要資料集的干擾降至最低。

Current 分割區

欄位 類型 描述
hdr__key_hash VARBINARY (20) 所有記錄主索引鍵的雜湊。雜湊格式為 SHA1。欄以退格字元分隔。
hdr__from_timestamp TIMESTAMP

UTC 時間戳記:

  • 對於從完整載入取得的資料,這是完整載入開始時間。

  • 對於來自 Changes 分割區的變更,這是記錄的時間戳記欄位。

hdr__operation VARCHAR (1)

此記錄的最新作業。

  • D - 從 Changes 分割區刪除。

  • U - 從 Changes 分割區更新。

  • I - 從 Changes 分割區插入。

  • L - 由完整載入工作插入。

  • d - 從比較和套用中刪除。

  • u - 從比較和套用中更新。

  • i - 從比較和套用中插入。

hdr__inserted_timestamp TIMESTAMP 首次新增索引鍵的 UTC 時間戳記。使用完整載入時,為完整載入的開始時間。
hdr__modified_timestamp TIMESTAMP 上次進行更新時的 UTC 時間戳記。

Prior 分割區

欄位 類型 描述
hdr__key_hash VARBINARY (20) 所有記錄主索引鍵的雜湊。
hdr__from_timestamp TIMESTAMP UTC 時間戳記。
hdr__to_timestamp TIMESTAMP UTC 時間戳記。
hdr__operation STRING (1)

此記錄的最新作業。

  • D - 從 Changes 分割區刪除。

  • U - 從 Changes 分割區更新。

  • I - 從 Changes 分割區插入。

  • L - 由完整載入工作插入。

  • d - 從比較和套用中刪除。

  • u - 從比較和套用中更新。

  • i - 從比較和套用中插入。

hdr__was_current_from_timestamp TIMESTAMP 記錄首次成為目前記錄的 UTC 時間戳記。
hdr__was_current_to_timestamp TIMESTAMP 記錄最後一次成為目前記錄的 UTC 時間戳記。

Changes 分割區

欄位 類型 描述
hdr__change_identifier VARCHAR (50)

變更識別碼是包含兩個部分的字串:

  • 自 1970/1/1 以來的批次執行開始時間戳記 (以毫秒為單位) (10 位數字串)。

  • 來自複寫閘道器的變更序列 (35 個字元)。

hdr__operation VARCHAR (1)

此記錄的最新作業。

  • D - 從 Changes 分割區刪除。

  • U - 從 Changes 分割區更新。

  • I - 從 Changes 分割區插入。

  • L - 由完整載入工作插入。

  • d - 從比較和套用中刪除。

  • u - 從比較和套用中更新。

  • i - 從比較和套用中插入。

hdr__timestamp TIMESTAMP UTC 時間戳記。
hdr__key_hash BINARY (20) 所有記錄主索引鍵的雜湊。
hdr__inserted_timestamp TIMESTAMP Qlik 處理變更時的 UTC 時間戳記。

Asset_state 分割區

欄位 類型 描述
hdr__apply_change_identifier VARCHAR (50) 套用到 Current 分割區的最新變更的變更識別碼。
hdr__copy_change_identifier VARCHAR (50) 附加到 Changes 分割區的最新變更的變更識別碼。

Reload 分割區

Reload 分割區使用的欄與 Current 分割區相同。

檢視

建立的所有檢視都會以近乎即時的方式更新。下列檢視可用於簡化查詢和報告:

Current

Current 檢視反映資料的最新狀態。此檢視代表來源表格的複本,以近乎即時的方式更新。它合併了來自 CurrentChanges 分割區的資料。

名稱:<EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>

沒有標頭欄新增至表格結構。

History

當在資料工作設定中啟用 History 時,會在資料資產架構中為每個選取的來源表格產生 History 檢視。History 檢視合併了來自 PriorChanges 分割區的資料。它提供了完整的變更時間軸,非常適合稽核或歷史分析。

名稱:<EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>

下列標頭欄位會新增至 History 檢視:

欄位 類型 描述
hdr__key_hash BINARY (20) 所有記錄主索引鍵的雜湊。
hdr__from_timestamp TIMESTAMP 變更在來源系統中發生時的時間戳記。這反映了使用者最初進行變更的時間。
hdr__to_timestamp TIMESTAMP 變更在來源系統中被還原或更新時的時間戳記。
hdr__store VARCHAR (10)

這指出記錄所在的位置:

  • CURRENT - 如果記錄位於 Current 分割區中。

  • PRIOR - 如果記錄位於包含歷史資料的 Prior 分割區中。

hdr__operation STRING (1)

此記錄的最新作業。

  • D - 從 Changes 分割區刪除。

  • U - 從 Changes 分割區更新。

  • I - 從 Changes 分割區插入。

  • L - 由完整載入工作插入。

  • d - 從比較和套用中刪除。

  • u - 從比較和套用中更新。

  • i - 從比較和套用中插入。

hdr__deleted BIT 根據 hdr__operation 是否為 D 或 d,指出記錄是否被軟刪除。
hdr__was_current_from_timestamp TIMESTAMP 此列進入 Current 分割區的時間 (UTC)。這通常是儲存工作執行並套用變更的時間。
hdr__was_current_to_timestamp TIMESTAMP Current 表格中移除該列的時間 (UTC),例如,由於有較新的版本。

資訊備註Current 和 History 檢視依賴於 Changes 分割區,並且始終是近乎即時的。 但是,如果您遇到查詢效能緩慢的情況,這可能是由於大量變更尚未套用到 CurrentPrior 分割區。未合併的差異在查詢時需要更多處理,從而使存取變慢。

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們!