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

適用於:Azure Data Factory Azure Synapse Analytics

本文概述如何使用 Azure Data Factory 或 Synapse Analytics 管線中的複製活動,從 Netezza 複製資料。 本文是以複製活動為基礎,該文提供複製活動的一般概觀。

提示

針對從 Netezza 至 Azure 的資料移轉案例,請從將資料從內部部署 Netezza 伺服器移轉至 Azure 深入了解。

支援的功能

下列活動支援此 Netezza 連接器:

您可以將資料從 Netezza 複製到任何支援的接收資料存放區。 如需複製活動作為來源和接收端支援的資料存放區清單,請參閱支援的資料存放區和格式

Netezza 連接器支援從來源平行複製。 如需詳細資訊,請參閱從 Netezza 平行複製一節。

該服務會提供內建的驅動程式來啟用連線。 您不需要為了使用此連接器而需手動安裝驅動程式。

Prerequisites

如果您的資料存放區位於內部部署網路、Azure 虛擬網路或 Amazon 虛擬私人雲端中,則必須設定自我裝載整合執行階段以與其連線。

如果您的資料存放區是受控雲端資料服務,則可使用 Azure Integration Runtime。 如果只能存取防火牆規則中核准的 IP,您可以將 Azure Integration Runtime IP 新增至允許清單。

您也可以使用 Azure Data Factory 中的受控虛擬網路整合執行階段功能來存取內部部署網路,而不需要安裝和設定自我裝載整合執行階段。

如需 Data Factory 支援的網路安全性機制和選項的詳細資訊,請參閱資料存取策略

開始使用

您可以使用 .NET SDK、Python SDK、Azure PowerShell、REST API 或 Azure Resource Manager 範本來建立使用複製活動的管線。 如需建立內含複製活動之管線的逐步指示,請參閱複製活動教學課程

使用 UI 建立與 Netezza 的連結服務

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

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

  2. 搜尋 Netezza,並選取 Netezza 連接器。

    Screenshot of the Netezza connector.

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

    Screenshot of linked service configuration for Netezza.

連接器設定詳細資料

下列各節提供屬性的相關詳細資料,您可使用這些屬性來定義 Netezza 連接器特有的實體。

連結服務屬性

以下是針對 Netezza 連結服務支援的屬性:

屬性 描述 必要
type type 屬性必須設為 Netezza
connectionString 連線到 Netezza 的 ODBC 連接字串。
您也可以將密碼放在 Azure Key Vault 中,並從連接字串中提取 pwd 組態。 請參閱下列範例和在 Azure Key Vault 中儲存認證一文中的更多詳細資料。
connectVia 用來連線到資料存放區的整合執行階段。 從必要條件一節深入了解。 如果未指定,則會使用預設的 Azure Integration Runtime。

一般的連接字串為 Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>。 下表描述更多您可設定的屬性:

屬性 描述 必要
SecurityLevel 驅動程式用來連線至資料存放區的安全性層級。 此驅動程式支援以 SSL 第 3 版進行單向驗證的 SSL 連線。
範例: SecurityLevel=preferredSecured. 支援的值為:
- 僅限未受保護連線 (onlyUnSecured):驅動程式不會使用 SSL。
- 偏好未受保護連線 (preferredUnSecured) (預設值):如果伺服器提供選擇,則驅動程式不使用 SSL。
- 偏好受保護連線 (preferredSecured):如果伺服器提供選擇,則驅動程式會使用 SSL。
- 僅限受保護連線 (onlySecured):除非有 SSL 連線,否則驅動程式不會連線。
CaCertFile 伺服器所用 SSL 憑證的完整路徑。 範例: CaCertFile=<cert path>; 是,如果已啟用 SSL

範例

{
    "name": "NetezzaLinkedService",
    "properties": {
        "type": "Netezza",
        "typeProperties": {
            "connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

範例:在 Azure Key Vault 中儲存密碼

{
    "name": "NetezzaLinkedService",
    "properties": {
        "type": "Netezza",
        "typeProperties": {
            "connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<user name>;",
            "pwd": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

資料集屬性

本節提供 Netezza 資料集所支援的屬性清單。

如需定義資料集的區段和屬性完整清單,請參閱資料集

若要從 Netezza 複製資料,請將資料集的 type 屬性設定為 NetezzaTable。 以下是支援的屬性:

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

範例

{
    "name": "NetezzaDataset",
    "properties": {
        "type": "NetezzaTable",
        "linkedServiceName": {
            "referenceName": "<Netezza linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {}
    }
}

複製活動屬性

本節提供 Netezza 來源所支援的屬性清單。

如需可用來定義活動的區段和屬性完整清單,請參閱管線

Netezza 作為來源

提示

若要使用資料分割有效率地從 Netezza 載入資料,請在從 Netezza 平行複製 一節深入瞭解。

若要從 Netezza 複製資料,請將複製活動中的來源類型設定為 NetezzaSource。 複製活動的 [來源] 區段支援下列屬性:

屬性 描述 必要
type 複製活動來源的 type 屬性必須設定為 NetezzaSource
查詢 使用自訂 SQL 查詢來讀取資料。 範例: "SELECT * FROM MyTable" 否 (如果已指定資料集中的 "tableName")
partitionOptions 指定用來從 Netezza 載入資料的資料分割選項。
允許值為:None (預設值)、DataSliceDynamicRange
啟用分割選項後 (亦即不是 None),從 Netezza 資料庫同時載入資料的平行程度,由複製活動的 parallelCopies 設定所控制。
partitionSettings 指定資料分割的設定群組。
當分割選項不是 None 時套用。
partitionColumnName 指定整數類型來源資料行的名稱,供平行複製的範圍分割使用。 如果未指定,則會自動偵測資料表的主索引鍵作為分割資料行。
當分割選項是 DynamicRange 時套用。 如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?AdfRangePartitionColumnName。 請參閱從 Netezza 平行複製一節中的範例。
partitionUpperBound 從分割資料行複製出資料時的最大值。
當分割選項是 DynamicRange 時套用。 如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?AdfRangePartitionUpbound。 如需範例,請參閱從 Netezza 平行複製一節。
partitionLowerBound 從分割資料行複製出資料時的最小值。
當分割選項是 DynamicRange 時套用。 如果您使用查詢來取出來源資料,請在 WHERE 子句中加上 ?AdfRangePartitionLowbound。 如需範例,請參閱從 Netezza 平行複製一節。

範例︰

"activities":[
    {
        "name": "CopyFromNetezza",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Netezza input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "NetezzaSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

從 Netezza 平行複製

Data Factory Netezza 連接器提供內建的資料分割,以從 Netezza 平行複製資料。 您可以在複製活動的 [來源] 資料表上找到資料分割選項。

Screenshot of partition options

當您啟用分割複本時,服務會平行查詢 Netezza 來源,以依分割區來載入資料。 平行程度由複製活動的 parallelCopies 設定所控制。 例如,如果您將 parallelCopies 設定為 4,則服務會根據您指定的分割區選項和設定,同時產生並執行四個查詢,而每個查詢都會從 Netezza 資料庫中擷取一部分的資料。

建議您啟用平行複製與資料分割,特別是從 Netezza 資料庫載入大量資料時。 以下針對各種情節的建議設定。 將資料複製到以檔案為基礎的資料存放區時,建議分成多個檔案來寫入資料夾 (僅指定資料夾名稱),這樣效能會比寫入單一檔案更好。

狀況 建議的設定
從大型資料表完整載入。 分割選項:資料配量。

在執行期間,此服務會根據 Netezza 的內建資料配量自動分割資料,並依分割區複製資料。
使用自訂查詢載入大量資料。 分割選項:資料配量。
查詢SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause>
在執行期間,此服務會將 ?AdfPartitionCount (取代為複製活動上所設定的平行複製數目) 並將 ?AdfDataSliceCondition 取代為資料配量分割邏輯,並傳送至 Netezza。
使用自訂查詢載入大量資料,並以一個整數資料行的平均分佈值來分割範圍。 分割選項:動態範圍分割。
查詢SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>
分割資料行:指定用來分割資料的資料行。 您可以按照整數資料類型的資料行來分割。
分割上限分割下限:指定您是否想要篩選分割資料行,而只取出下限範圍和上限範圍之間的資料。

在執行期間,服務會將 ?AdfRangePartitionColumnName?AdfRangePartitionUpbound?AdfRangePartitionLowbound 取代為每個分割區的實際資料行名稱和值範圍,並傳送至 Netezza。
例如,如果分割資料行 "ID" 已設定下限 1 和上限 80,且平行複製設定為 4,則服務會分成 4 個分割區來取出資料。 識別碼的範圍分別為 [1,20]、[21, 40]、[41, 60] 和 [61, 80]。

範例:使用資料配量分割進行查詢

"source": {
    "type": "NetezzaSource",
    "query": "SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause>",
    "partitionOption": "DataSlice"
}

範例:使用動態範圍分割進行查詢

"source": {
    "type": "NetezzaSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<dynamic_range_partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column>",
        "partitionLowerBound": "<lower_value_of_partition_column>"
    }
}

查閱活動屬性

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

後續步驟

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