使用 Azure Data Factory 或 Synapse Analytics 從 Amazon Redshift 複製資料

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

本文章概述如何使用 Azure Data Factory 和 Synapse Analytics 管線中的複製活動,從 Amazon Redshift 複製資料。 本文是根據複製活動概觀一文,該文提供複製活動的一般概觀。

支援的功能

此 Amazon Redshift 連接器支援下列功能:

支援的功能 IR
複製活動 (來源/-) ① ②
查閱活動 ① ②

① Azure 整合執行階段 ② 自我裝載整合執行階段

如需複製活動所支援作為來源或接收器的資料存放區清單,請參閱支援的資料存放區表格。

具體而言,這個 Amazon Redshift 連接器支援使用查詢或內建的 Redshift UNLOAD 支援,從 Redshift 擷取資料。

提示

在 Redshift 中複製大量資料時,若想獲得最佳效能,請考慮透過 Amazon S3 使用內建的 Redshift UNLOAD。 如需詳細資料,請參閱「使用 UNLOAD 複製 Amazon Redshift 中的資料」章節。

必要條件

  • 如果您要使用自我裝載 Integration Runtime 將資料複製到內部部署資料存放區,請將 Amazon Redshift 叢集的存取權授與 Integration Runtime (使用電腦的 IP 位址)。 如需相關指示,請參閱 授權存取叢集
  • 如果您要將資料複製到 Azure 資料存放區,請參閱 Azure 資料中心 IP 範圍 以取得 Azure 資料中心所使用的計算 IP 位址和 SQL 範圍。

開始使用

若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:

使用 UI 建立連結到 Amazon Redshift 的服務

使用下列步驟,在 Azure 入口網站 UI 中建立連結到 Amazon Redshift 的服務。

  1. 前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:

  2. 搜尋 Amazon 並選取 Amazon Redshift 連接器。

    Select the Amazon Redshift connector.

  3. 設定服務詳細資料,測試連線,然後建立新的連結服務。

    Configure a linked service to Amazon Redshift.

連接器設定詳細資料

下列各節提供屬性的相關詳細資料,這些屬性是用來定義 Amazon Redshift 連接器專屬的 Data Factory 實體。

連結服務屬性

以下是針對 Amazon Redshift 已連結服務支援的屬性:

屬性 描述 必要
type 類型屬性必須設定為:AmazonRedshift Yes
伺服器 Amazon Redshift 伺服器的 IP 位址或主機名稱。 Yes
port Amazon Redshift 伺服器用來接聽用戶端連線的 TCP 連接埠號碼。 否,預設值為 5439
database Amazon Redshift 資料庫的名稱。 Yes
username 可存取資料庫之使用者的名稱。 Yes
password 使用者帳戶的密碼。 將此欄位標記為 SecureString 以便安全儲存,或參考 Azure Key Vault 中儲存的祕密 Yes
connectVia 用於連線到資料存放區的 Integration Runtime。 您可以使用 Azure Integration Runtime 或「自我裝載 Integration Runtime」(如果您的資料存放區位於私人網路中)。 如果未指定,就會使用預設的 Azure Integration Runtime。 No

範例:

{
    "name": "AmazonRedshiftLinkedService",
    "properties":
    {
        "type": "AmazonRedshift",
        "typeProperties":
        {
            "server": "<server name>",
            "database": "<database name>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

資料集屬性

如需可用來定義資料集的區段和屬性完整清單,請參閱資料集一文。 本節提供 Amazon Redshift 資料集所支援的屬性清單。

若要從 Amazon Redshift 複製資料,以下是支援的屬性:

屬性 描述 必要
type 資料集的類型屬性必須設為:AmazonRedshiftTable Yes
schema 結構描述的名稱。 否 (如果已指定活動來源中的「查詢」)
table 資料表的名稱。 否 (如果已指定活動來源中的「查詢」)
tableName 具有結構描述的資料表名稱。 支援此屬性是基於回溯相容性。 對於新的工作負載,請使用 schematable 否 (如果已指定活動來源中的「查詢」)

範例

{
    "name": "AmazonRedshiftDataset",
    "properties":
    {
        "type": "AmazonRedshiftTable",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Amazon Redshift linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

如果您使用 RelationalTable 具型別資料集,雖然仍照現狀支援,但建議您往後使用新的版本。

複製活動屬性

如需可用來定義活動的區段和屬性完整清單,請參閱管線一文。 本節提供 Amazon Redshift 來源所支援的屬性清單。

Amazon Redshift 作為來源

若要從 Amazon Redshift 複製資料,請將複製活動中的來源類型設定為 AmazonRedshiftSource。 複製活動的 source 區段支援下列屬性:

屬性 描述 必要
type 複製活動來源的類型屬性必須設定為:AmazonRedshiftSource Yes
query 使用自訂查詢來讀取資料。 例如:select * from MyTable。 否 (如果已指定資料集中的 "tableName")
redshiftUnloadSettings 使用 Amazon Redshift UNLOAD 時的屬性群組。 No
s3LinkedServiceName 係指要作為暫時存放區的 Amazon S3 (藉由指定 "AmazonS3" 類型的已連結服務名稱)。 如果使用 UNLOAD,則為必要
bucketName 表示儲存暫時資料的 S3 貯體。 如果未提供,該服務會自動產生。 如果使用 UNLOAD,則為必要

範例:使用 UNLOAD 之複製活動中的 Amazon Redshift 來源

"source": {
    "type": "AmazonRedshiftSource",
    "query": "<SQL query>",
    "redshiftUnloadSettings": {
        "s3LinkedServiceName": {
            "referenceName": "<Amazon S3 linked service>",
            "type": "LinkedServiceReference"
        },
        "bucketName": "bucketForUnload"
    }
}

若要深入了解如何使用 UNLOAD 從 Amazon Redshift 有效率地複製資料,請參閱下一節。

使用 UNLOAD 複製 Amazon Redshift 中的資料

UNLOAD (英文) 是 Amazon Redshift 提供的機制,可以為 Amazon Simple Storage Service (Amazon S3) 中的一或多個檔案卸載查詢結果。 Amazon 建議使用此方式從 Redshift 複製大型資料集。

範例:使用 UNLOAD、分段複製及 PolyBase 將資料從 Amazon Redshift 複製到 Azure Synapse Analytics

就這個範例使用案例而言,複製活動會依照 "redshiftUnloadSettings" 中的設定,將資料從 Amazon Redshift 卸載到 Amazon S3,然後依照 "stagingSettings" 中指定的方式,將資料從 Amazon S3 複製到 Azure Blob,最後再使用 PolyBase 將資料載入到 Azure Synapse Analytics。 複製活動會正確地處理所有暫時格式。

Redshift to Azure Synapse Analytics copy workflow

"activities":[
    {
        "name": "CopyFromAmazonRedshiftToSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "AmazonRedshiftDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AmazonRedshiftSource",
                "query": "select * from MyTable",
                "redshiftUnloadSettings": {
                    "s3LinkedServiceName": {
                        "referenceName": "AmazonS3LinkedService",
                        "type": "LinkedServiceReference"
                    },
                    "bucketName": "bucketForUnload"
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": "AzureStorageLinkedService",
                "path": "adfstagingcopydata"
            },
            "dataIntegrationUnits": 32
        }
    }
]

Amazon Redshift 的資料類型對應

從 Amazon Redshift 複製資料時,會使用下列對應從 Amazon Redshift 資料類型對應到該服務內使用的過渡期資料類型。 請參閱結構描述和資料類型對應,以了解複製活動如何將來源結構描述和資料類型對應至接收器。

Amazon Redshift 資料類型 過渡期服務資料類型
bigint Int64
BOOLEAN String
CHAR String
日期 Datetime
DECIMAL Decimal
DOUBLE PRECISION Double
INTEGER Int32
REAL Single
SMALLINT Int16
TEXT String
timestamp Datetime
VARCHAR String

查閱活動屬性

若要了解屬性的詳細資料,請參閱查閱活動

如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區