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

將資料鏡像到雲端資料倉庫

鏡像任務可讓您從您的雲端資料倉庫查詢儲存在您的 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 內可用資料之最新快照的中繼資料。重新整理中繼資料的方式有兩種:

  1. Qlik 管理:此選項需要作用中的 Snowflake 倉庫,並包括監控和資料預覽。若您想要建立下游轉換並監控和排程任務,請選取此選項。Qlik 擁有中繼資料重新整理操作,因此您可以手動設定,例如每 30 分鐘執行一次。此選項對於多表格轉換特別有用,因為所有表格的中繼資料都會同時更新。雖然您可能會失去 Snowflake 管理的重新整理所提供的一些即時效益,但您可以保持表格之間的一致性。對於多表格轉換,您可以根據需要的頻率觸發重新整理。Qlik 建議您在排定的鏡像任務之後的下游轉換任務,設定基於事件的觸發。

  2. Snowflake 管理:無伺服器操作運用 Snowpipe 基礎結構,不需要或不必啟用運算倉庫。若您不需要下游轉換,建議使用此選項。建立 Snowflake 目錄整合時設定重新整理間隔。若要監控自動重新整理的狀態,請查詢 Snowflake 中的 SYSTEM$AUTO_REFRESH_STATUSQlik 失去流程的擁有權並且無法監控此類任務。

資訊備註Snowflake 專案內的每個鏡像任務都可以透過自己的重新整理機制來設定:如果建立兩個鏡像任務,則可以使用 Qlik 管理的重新整理,另一個可以使用 Snowflake 管理的重新整理。
資訊備註如果您嘗試查詢鏡像輸出或在轉換中使用它,並看到內部伺服器錯誤 (請參閱以下範例),則您的 Iceberg 中繼資料與外部目錄不同步。若要解決此問題,請執行鏡像任務以重新整理 Iceberg 中繼資料。

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 設定目錄整合

建立鏡像資料任務

若要將資料鏡像到您的資料倉儲,請執行下列事項:

  1. 開啟專案,其中包含要鏡像之資料的儲存任務。

  2. 按一下儲存任務上的 更多動作。選取鏡像資料,並進行設定:

    • 名稱:輸入鏡像任務的名稱。

    • 描述:可以選擇描述任務的目的。

    • 資料倉儲:選取您的目標資料倉儲。

    • 連線

      • 若要使用現有連線,請按一下選取以開啟安全來源連線對話方塊。選取您的連線所在的空間,然後選取連線。按一下編輯以修改連線屬性。

      • 若要建立新連線,請按一下建立連線以開啟建立連線對話方塊並按照指示進行操作。

    • 資料庫:輸入您想要鏡像資料的資料庫名稱。

    • 鏡像至 Redshift:

      • 外部結構描述:輸入將會在此建立檢視的結構描述名稱。

        資訊備註Redshift 中的所有資料表和檢視名稱都會轉換為小寫。
    • 鏡像至 Snowflake:

      • Snowflake 外部磁碟區:輸入在 Snowflake 中建立的外部磁碟區的名稱。

      • Snowflake 目錄整合:輸入在 Snowflake 中建立的目錄整合的名稱。

      • 選取您希望如何在 Snowflake 中重新整理資料:

        • Qlik 管理:如果您想建立下游轉換,請選取此選項。這需要一個作用中的 Snowflake 倉庫,並由 Qlik 監控。

        • Snowflake 管理:如果您想執行下游轉換,請選取此選項。不需要 Snowflake 倉庫,因此不受 Qlik 監控。這是在 Snowflake 中進行管理和監控。

  3. 按一下確定以建立鏡像任務,並將其新增至管道中的儲存任務。

  4. 按一下鏡像任務上的 更多動作並選取開啟。確保您正在顯示設計檢視。

  5. 若要選取可用資料集的子集,請按一下選取來源資料並移除任何不需要的資料集。

  6. 按一下準備以建立外部物件並鏡像資料。

執行轉換

如果您需要轉換資料,您可以建立 Redshift 或 Snowflake 專案,並使用您 Qlik 開放湖倉庫 專案中的鏡像資料任務作為來源。鏡像任務來源必須與專案的雲端資料倉庫平台相同。例如,當您建立 Redshift 專案以執行轉換時,您必須使用 Redshift 鏡像資料任務作為來源。

資訊備註若要使用現有專案中的資料建立轉換任務,請參閱建立跨專案管道

刪除鏡像資料任務

當您刪除鏡像任務時,由鏡像任務建立的內部架構和檢視會被捨棄。Redshift 中的外部架構和資料表不會被捨棄。如果資料表從 AWS Glue 中刪除,例如當使用者捨棄儲存中的資料集或刪除整個儲存任務時,此變更會自動反映在 Redshift 外部架構中。資料表會被移除,且不需要單獨捨棄。最佳實務是,如果外部架構不再使用,請完全捨棄它。

資訊備註當鏡像任務正在從儲存任務中讀取時,無法刪除該儲存任務。

若要刪除鏡像資料任務,請執行下列事項:

  1. 在要刪除的鏡像資料任務上,按一下任務上的 更多動作功能表,然後選取刪除

  2. 在確認對話方塊中,按一下刪除

此頁面是否對您有幫助?

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