跳到主要內容 跳至補充內容

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

當您在 Qlik 開放湖倉庫 中產生資料集時,會透過 Qlik Talend Data Integration 自動產生儲存表格、變更表格和檢視畫面。您可以查詢這些檢視畫面,以存取用 Iceberg 開放式表格格式儲存的目前和歷史資料。

直覺且引導式的使用者介面,協助您組建、模型化並執行資料管道。您無需手動編碼,即可自動產生操作資料儲存區 (ODS) 和歷史記錄資料儲存區 (HDS) 的架構。

使用 Qlik 資料閘道 - 資料移動Qlik 開放湖倉庫 資料管道架構資料在 S3 登陸,並儲存在 Iceberg Open Lakehouse。或者,如下所示,可以將表格鏡像到資料倉儲。

結構描述

成品是在內部架構和資料任務結構描述中所產生。

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

  • 資料任務結構描述含有您可藉以使用資料的檢視。

    若結構描述與多個資料任務關聯,每個資料任務必須為表格和檢視使用唯一前置詞。您可以在資料任務設定中設定前置詞。

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

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

表格

對於每個來源表格,在內部架構中建立一個具有後置詞 _internal 的表格,並使用以下格式:

<INTERNAL_SCHEMA>.<TABLE_NAME>_internal

此表格包含五個分割區,每個分割區在資料處理和儲存方面都有不同的用途。每個分割區根據其在資料生命週期中的角色,運用表格欄的子集。

資訊備註內部架構的表格如有變更,恕不另行通知。您應該盡量主要使用檢視來取用資料。

內部資料集的結構可以有效率地管理來自來源系統的傳入資料,支援即時擷取和歷史追蹤。資料流動透過幾個專門的分割區進行管理,每個分割區如下所述:

  • Changes 分割區 – 即時擷取

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

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

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

    • 事件在發生時從來源擷取。分割區幾乎是即時更新。

    • 當在湖登陸資料任務中套用下列設定時,即可使用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 時間戳記

使用 UTC 的時間戳記:

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

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

hdr__operation VARCHAR (1)

此記錄的最新操作。

  • D - 已從Changes分割區刪除。

  • U - 已從Changes分割區更新。

  • I - 已從Changes分割區插入。

  • L - 已透過完整載入任務插入。

  • d - 已從比較與套用刪除。

  • u - 已從比較與套用更新。

  • i - 已從比較與套用插入。

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)

此記錄的最新操作。

  • D - 已從 Changes 分割區刪除。

  • U - 已從 Changes 分割區更新。

  • I - 已從 Changes 分割區插入。

  • L - 已透過完整載入任務插入。

  • d - 已從比較與套用刪除。

  • u - 已從比較與套用更新。

  • i - 已從比較與套用插入。

hdr__was_current_from_timestamp 時間戳記 記錄初次為最新時的 UTC 時間戳記。
hdr__was_current_to_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 時間戳記 使用 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分割區相同。

檢視

所有建立的檢視畫面都以幾乎即時的頻率來更新。以下檢視可用於簡化查詢和報告:

目前

「目前」檢視反映資料的最新狀態。此檢視代表來源表格的複本,幾乎即時更新。這合併來自CurrentChanges分割區的資料。

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

未向表格結構新增表頭欄。

歷史記錄

在資料任務設定中啟用歷史記錄時,會為每個選定的來源表格在資料資產架構中產生歷史記錄檢視。此歷史記錄檢視合併來自PriorChanges分割區的資料。這提供了完整的變更時間表,非常適合稽核或歷史分析。

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

下列標頭欄位會新增至歷史記錄檢視畫面:

欄位 類型 描述
hdr__key_hash BINARY (20) 所有記錄主要金鑰的雜湊。
hdr__from_timestamp 時間戳記 在來源系統中發生變更時的時間戳記。這反映了使用者最初進行變更的時間。
hdr__to_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 位元 依照 hdr__operation 是 D 或 d,表示記錄是否以軟體刪除。
hdr__was _current_from_timestamp 時間戳記 此列進入Current「目前」分割區的時間 (UTC)。這通常是在儲存工作執行並套用變更時。
hdr__was _current_to_timestamp 時間戳記 例如,由於較新版本的出現,從Current表格中移除列的時間 (UTC)。

資訊備註目前和歷史記錄檢視畫面依賴於Changes分割區並且一律接近即時。不過,如果您遇到查詢效能緩慢的情況,可能是由於大量變更尚未套用到CurrentPrior分割區。未合併的差異在查詢時間需要更多處理,導致存取速度變慢。

此頁面是否對您有幫助?

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