將資料鏡像到雲端資料倉庫
鏡像任務可讓您從您的雲端資料倉庫查詢儲存在您的 Qlik 開放湖倉庫 中的資料。資料反映在您的資料倉庫中,不必複製。鏡像表格確保儲存和工程成本降至最低,並保持單一事實來源。
將資料上線到 Qlik 開放湖倉庫 後,您可以使用鏡像表格將資料鏡像到您的雲端資料倉庫。可以使用原生支援 Iceberg 的查詢引擎 (例如 Amazon Athena) 查詢 Iceberg 中的資料。但是,若您想要實施開放式 Iceberg 湖存放庫架構並繼續使用您的資料倉儲查詢引擎,則鏡像表格是理想的選擇。鏡像資料任務自動化了在您的資料倉儲中將 Iceberg 表格宣告為外部表格和檢視,使其可存取的流程。資料倉儲將 Iceberg 表格稱為外部檢視,因為它不管理表格,它只從中讀取。外部表格和檢視允許您在您的資料倉儲中查詢 Iceberg 資料,而無需將資料或表格的管理遷移到您的資料倉儲。
鏡像任務執行必要的 DDL 陳述式,以建立外部表格和檢視。該表格 (結構描述) 顯示在資料倉儲中,以及變更和歷史記錄表格,但如果您查看表格定義,它會顯示為在外部表格之上建立的檢視畫面。資料取用者可以查詢檢視畫面,如同資料儲存在他們的資料倉儲環境中一樣。鏡像資料提供了高效能,因為 Qlik 繼續管理和最佳化資料。
鏡像至多個資料倉儲
單一資料集可以鏡像至多個雲端資料倉儲。下圖說明了如何使用 Qlik 開放湖倉庫 管道專案將資料鏡像至 Amazon Redshift 和 Snowflake:
-
管道從 MySQL 資料庫使用連線 MySQL QCDI-BETA 擷取資料。
-
Lake 登陸任務 EnergyGen_Lake_landing 將原始資料擷取到 Amazon S3 值區。
-
接下來,儲存任務 EnergyGen_Storage 將資料複製到 S3 位置,以 Apache Iceberg 格式儲存資料。
-
鏡像資料任務 Redshift Mirror 建立必要的檢視,以啟用從 Redshift 查詢資料,並自動重新整理資料。
-
轉換任務 Redshift_Energygen_Silver 用於轉換和取用 Redshift 中的鏡像資料。
-
新增第二個 Mirror 資料任務 Snowflake Mirror,以建立必要的檢視,讓資料可從 Snowflake 查詢。Mirror 任務使用 Qlik 管理的重新整理機制,其允許下游轉換。
-
轉換任務 Snowflake_Energygen_Data_Products 用於轉換和取用 Snowflake 中的資料。
重新整理機制
您可用的重新整理機制取決於您的雲端資料倉儲提供者,詳情如下所述。
Redshift
鏡像到 Redshift 的資料會自動重新整理,無需排程或執行任務。Redshift 中的所有表格和檢視名稱都會轉換為小寫,因為 Qlik 開放湖倉庫 不支援區分大小寫的物件名稱 (資料庫、結構描述、表格或欄)。
Snowflake
Snowflake 指向反映 Iceberg 內可用資料之最新快照的中繼資料。重新整理中繼資料的方式有兩種:
-
Qlik 管理:此選項需要作用中的 Snowflake 倉庫,並包括監控和資料預覽。若您想要建立下游轉換並監控和排程任務,請選取此選項。Qlik 擁有中繼資料重新整理操作,因此您可以手動設定,例如每 30 分鐘執行一次。此選項對於多表格轉換特別有用,因為所有表格的中繼資料都會同時更新。雖然您可能會失去 Snowflake 管理的重新整理所提供的一些即時效益,但您可以保持表格之間的一致性。對於多表格轉換,您可以根據需要的頻率觸發重新整理。Qlik 建議您在排定的鏡像任務之後的下游轉換任務,設定基於事件的觸發。
-
Snowflake 管理:無伺服器操作運用 Snowpipe 基礎結構,不需要或不必啟用運算倉庫。若您不需要下游轉換,建議使用此選項。建立 Snowflake 目錄整合時設定重新整理間隔。若要監控自動重新整理的狀態,請查詢 Snowflake 中的 SYSTEM$AUTO_REFRESH_STATUS。Qlik 失去流程的擁有權並且無法監控此類任務。
The parquet file 'tg_open_lakehouse/bronze/sales/tables/tg_sales_ingestion_bronze__internal.order_details__internal/data/hdr__scd_partition=asset_state/2025_09_12_00_37_asset_state_apply-4bcbb2eb-4ad3-4d88-bea6-ea611576624e.parquet' for table 'OPENLAKEHOUSE."snowflake_mirror__internal"."ext__order_details"' was inaccessible.
必要條件
下列要求適用於所有支援的資料倉儲目標:
-
只有在 Qlik 開放湖倉庫 專案中建立儲存任務後才能新增鏡像資料任務。
-
一個儲存任務可以有多個鏡像資料任務,每個任務都針對不同的資料倉儲。
-
一個鏡像資料任務只能關聯一個儲存任務。
-
若要執行轉換,請建立資料倉儲專案,並使用鏡像資料任務作為來源。專案和鏡像任務必須使用相同的資料倉儲平台,例如 Redshift。
若要鏡像您的資料,請設定您的目標資料倉儲。
Redshift
-
連線到您想要鏡像資料的資料倉儲資料庫。您也可以選擇在鏡像任務建立期間建立新的連線。如需詳細資訊,請參閱Amazon Redshift。
-
由 Redshift 擔任且具備 Glue Data Catalog 讀取權限的 IAM 角色。下列指令碼提供存取您目錄所需的權限。請務必將 <ICEBERG_BUCKET_NAME> 取代為您的值區名稱:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases", "glue:GetTable", "glue:GetTables", "glue:GetPartition", "glue:GetPartitions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<ICEBERG_BUCKET_NAME>", "arn:aws:s3:::<ICEBERG_BUCKET_NAME>/*" ] } }此角色需要下列信任關係:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }資訊備註如需詳細資訊,請參閱 Amazon Redshift Spectrum 的 IAM 政策。 -
Redshift 中的外部結構描述,指向儲存任務資料庫。您必須透過執行 CREATE EXTERNAL SCHEMA 命令並指向來源 Iceberg 儲存任務內部資料庫,來建立外部 Redshift 結構描述。外部取用者應從鏡像任務結構描述取用檢視中取用。若要建立您的外部結構描述,請使用以下語法,確保 DATABASE 屬性是儲存任務建立的資料庫:
CREATE EXTERNAL SCHEMA <local_schema_name>
FROM DATA CATALOG
DATABASE '<database_name>'
IAM_ROLE 'arn:aws:iam::<AWS account-id>:role/<role-name>'
REGION '<aws-region>'
Snowflake
-
連線到您想要鏡像資料的資料倉儲資料庫。您也可以選擇在鏡像任務建立期間建立新的連線。如需詳細資訊,請參閱Snowflake。
-
Snowflake 外部磁碟區。這將向 Snowflake 授予對 S3 位置的有限存取權限。若要設定磁碟區,請參閱為 Amazon S3 設定外部磁碟區。
-
AWS Glue Data Catalog 整合。這讓 Snowflake 能夠連線到物件儲存中以 Iceberg 開放式表格格式儲存的資料。若要設定目錄整合,請參閱為 AWS Glue 設定目錄整合。
建立鏡像資料任務
若要將資料鏡像到您的資料倉儲,請執行下列事項:
-
開啟專案,其中包含要鏡像之資料的儲存任務。
-
按一下儲存任務上的
更多動作。選取鏡像資料,並進行設定:
-
名稱:輸入鏡像任務的名稱。
-
描述:可以選擇描述任務的目的。
-
資料倉儲:選取您的目標資料倉儲。
-
連線:
-
若要使用現有連線,請按一下選取以開啟安全來源連線對話方塊。選取您的連線所在的空間,然後選取連線。按一下編輯以修改連線屬性。
-
若要建立新連線,請按一下建立連線以開啟建立連線對話方塊並按照指示進行操作。
-
-
資料庫:輸入您想要鏡像資料的資料庫名稱。
-
鏡像至 Redshift:
-
外部結構描述:輸入將會在此建立檢視的結構描述名稱。
資訊備註Redshift 中的所有資料表和檢視名稱都會轉換為小寫。
-
-
鏡像至 Snowflake:
-
Snowflake 外部磁碟區:輸入在 Snowflake 中建立的外部磁碟區的名稱。
-
Snowflake 目錄整合:輸入在 Snowflake 中建立的目錄整合的名稱。
-
選取您希望如何在 Snowflake 中重新整理資料:
-
Qlik 管理:如果您想建立下游轉換,請選取此選項。這需要一個作用中的 Snowflake 倉庫,並由 Qlik 監控。
-
Snowflake 管理:如果您想執行下游轉換,請選取此選項。不需要 Snowflake 倉庫,因此不受 Qlik 監控。這是在 Snowflake 中進行管理和監控。
-
-
-
按一下確定以建立鏡像任務,並將其新增至管道中的儲存任務。
-
按一下鏡像任務上的
更多動作並選取開啟。確保您正在顯示設計檢視。
-
若要選取可用資料集的子集,請按一下選取來源資料並移除任何不需要的資料集。
-
按一下準備以建立外部物件並鏡像資料。
執行轉換
如果您需要轉換資料,您可以建立 Redshift 或 Snowflake 專案,並使用您 Qlik 開放湖倉庫 專案中的鏡像資料任務作為來源。鏡像任務來源必須與專案的雲端資料倉庫平台相同。例如,當您建立 Redshift 專案以執行轉換時,您必須使用 Redshift 鏡像資料任務作為來源。
刪除鏡像資料任務
當您刪除鏡像任務時,由鏡像任務建立的內部架構和檢視會被捨棄。Redshift 中的外部架構和資料表不會被捨棄。如果資料表從 AWS Glue 中刪除,例如當使用者捨棄儲存中的資料集或刪除整個儲存任務時,此變更會自動反映在 Redshift 外部架構中。資料表會被移除,且不需要單獨捨棄。最佳實務是,如果外部架構不再使用,請完全捨棄它。
若要刪除鏡像資料任務,請執行下列事項:
-
在要刪除的鏡像資料任務上,按一下任務上的
更多動作功能表,然後選取刪除。 -
在確認對話方塊中,按一下刪除。