使用 Azure Data Factory 和 Synapse Analytics 從 Teradata Vantage 複製資料

適用於:Azure Data Factory Azure Synapse Analytics

提示

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

本文概述如何使用 Azure Data Factory 和 Synapse Analytics 管線中的複製活動,從 Teradata Vantage 複製資料。 本文是以複製活動概觀為依據。

支援的功能

此 Teradata 連接器支援下列功能:

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

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

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

具體而言,這個 Teradata 連接器支援:

  • Teradata 14.10、15.0、15.10、16.0、16.10 和 16.20 等版本。
  • 使用 基本WindowsLDAP 驗證來複製資料。
  • 從 Teradata 來源平行複製。 如需詳細資訊,請參閱從 Teradata 平行複製一節。

必要條件

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

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

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

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

如果您使用自我裝載整合執行階段,請注意其從 3.18 版開始提供內建 Teradata 驅動程式。 您不需要手動安裝任何驅動程式。 驅動程式需要自我裝載整合執行階段電腦上具備「Visual C++ 可轉散發套件 2012 Update 4」。 如果尚未安裝,請從這裡下載。

開始使用

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

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

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

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

  2. 搜尋 Teradata 然後選取 Teradata 連接器。

    Select the Teradata connector.

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

    Configure a linked service to Teradata.

連接器設定詳細資料

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

連結服務屬性

Teradata 連結服務支援下列屬性:

屬性 描述 必要
type 類型屬性必須設定為 Teradata Yes
connectionString 指定連線到 Teradata 執行個體所需的資訊。 請參考下列範例。
您也可以將密碼放在 Azure Key Vault 中,並從連接字串中提取 password 組態。 如需詳細資訊,請參閱在 Azure Key Vault 中儲存認證
Yes
username 指定連線到 Teradata 時要使用的使用者名稱。 當您使用 Windows 驗證時適用。 No
password 針對使用者名稱指定的使用者帳戶,指定該帳戶的密碼。 您也可以選擇參考 Azure Key Vault 中儲存的祕密
當您使用 Windows 驗證,或參考 Key Vault 中的密碼進行基本驗證時適用。
No
connectVia 用於連線到資料存放區的 Integration Runtime。 深入了解必要條件一節。 如果未指定,就會使用預設的 Azure Integration Runtime。 No

您可以針對每個案例在連接字串中設定更多連線屬性:

屬性 Description 預設值
TdmstPortNumber 用來存取 Teradata 資料庫的連接埠數目。
除非支援小組指示要執行此作業,否則請勿變更此值。
1025
UseDataEncryption 指定是否要加密與 Teradata 資料庫的所有通訊。 允許的值為 0 或 1。

- 0 (停用,預設值):僅加密驗證資訊。
- 1 (啟用):加密驅動程式與資料庫之間傳遞的所有資料。
0
CharacterSet 要用於工作階段的字元集。 例如,CharacterSet=UTF16

此值可以是使用者定義的字元集,或下列其中一個預先定義的字元集:
- ASCII
- UTF8
- UTF16
- LATIN1252_0A
- LATIN9_0A
- LATIN1_0A
- Shift-JIS (Windows,DOS 相容,KANJISJIS_0S)
- EUC (Unix 相容,KANJIEC_0U)
- IBM Mainframe (KANJIEBCDIC5035_0I)
- KANJI932_1S0
- BIG5 (TCHBIG5_1R0)
- GB (SCHGB2312_1T0)
- SCHINESE936_6R0
- TCHINESE950_8R0
- NetworkKorean (HANGULKSC5601_2R4)
- HANGUL949_7R0
- ARABIC1256_6A0
- CYRILLIC1251_2A0
- HEBREW1255_5A0
- LATIN1250_1A0
- LATIN1254_7A0
- LATIN1258_8A0
- THAI874_4A0
ASCII
MaxRespSize SQL 要求的回應緩衝區大小上限,以 KB 為單位。 例如,MaxRespSize=‭10485760‬

針對 Teradata Database 16.00 版或更新版本,最大值是 7361536。 針對使用舊版的連線,最大值是 1048576。
65536
MechanismName 若要使用 LDAP 通訊協定來驗證連線,請指定 MechanismName=LDAP N/A

使用基本驗證的範例

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "connectionString": "DBCName=<server>;Uid=<username>;Pwd=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

使用 Windows 驗證的範例

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "connectionString": "DBCName=<server>",
            "username": "<username>",
            "password": "<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

使用 LDAP 驗證的範例

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "connectionString": "DBCName=<server>;MechanismName=LDAP;Uid=<username>;Pwd=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

注意

仍然支援下列承載。 不過,接下來您應該使用新的承載。

先前的承載:

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "server": "<server>",
            "authenticationType": "<Basic/Windows>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

資料集屬性

本節提供 Teradata 資料集所支援的屬性清單。 如需定義資料集的區段和屬性完整清單,請參閱資料集

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

屬性 描述 必要
type 資料集的類型屬性必須設定為 TeradataTable Yes
database Teradata 執行個體的名稱。 否 (如果已指定活動來源中的「查詢」)
table Teradata 執行個體中的資料表名稱。 否 (如果已指定活動來源中的「查詢」)

範例:

{
    "name": "TeradataDataset",
    "properties": {
        "type": "TeradataTable",
        "typeProperties": {},
        "schema": [],        
        "linkedServiceName": {
            "referenceName": "<Teradata linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

注意

RelationalTable 類型資料集仍然受到支援。 不過,我們建議您使用新的資料集。

先前的承載:

{
    "name": "TeradataDataset",
    "properties": {
        "type": "RelationalTable",
        "linkedServiceName": {
            "referenceName": "<Teradata linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {}
    }
}

複製活動屬性

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

Teradata 作為來源

提示

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

若要從 Teradata 複製資料,複製活動 [來源] 區段中支援下列屬性:

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

注意

RelationalSource 類型複製來源仍然受到支援,但是不支援從 Teradata (分割區選項) 的新內建平行載入。 不過,我們建議您使用新的資料集。

範例:使用不含分割區的基本查詢來複製資料

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

從 Teradata 平行複製

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

Screenshot of partition options

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

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

案例 建議的設定
從大型資料表完整載入。 分割選項:雜湊。

在執行期間,服務會自動偵測主要索引資料行、對其套用雜湊,並依分割複製資料。
使用自訂查詢載入大量資料。 分割選項:雜湊。
查詢SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause>
分割資料行:指定用於套用雜湊分割的資料行。 如果未指定,服務會自動偵測您在 Teradata 資料集中指定的資料表 PK 資料行。

在執行期間,服務會以雜湊分割邏輯取代 ?AdfHashPartitionCondition,並傳送至 Teradata。
使用自訂查詢載入大量資料,並以一個整數資料行的平均分佈值來分割範圍。 分割選項:動態範圍分割。
查詢SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>
分割資料行:指定用來分割資料的資料行。 您可以按照整數資料類型的資料行來分割。
分割上限分割下限:指定您是否想要篩選分割資料行,而只取出下限範圍和上限範圍之間的資料。

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

範例:使用雜湊分割區的查詢

"source": {
    "type": "TeradataSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "Hash",
    "partitionSettings": {
        "partitionColumnName": "<hash_partition_column_name>"
    }
}

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

"source": {
    "type": "TeradataSource",
    "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>"
    }
}

Teradata 的資料類型對應

當您從 Teradata 複製資料時,下列對應會從 Teradata 的資料類型套用至服務所使用的內部資料類型。 若要了解複製活動如何將來源結構描述和資料類型對應至接收,請參閱結構描述和資料類型對應

Teradata 資料類型 過渡期服務資料類型
BigInt Int64
Blob Byte[]
Byte Byte[]
ByteInt Int16
Char String
Clob String
Date Datetime
Decimal Decimal
Double Double
Graphic 不支援。 在來源查詢中套用明確轉換。
整數 Int32
Interval Day 不支援。 在來源查詢中套用明確轉換。
間隔日至小時 不支援。 在來源查詢中套用明確轉換。
間隔日至分鐘 不支援。 在來源查詢中套用明確轉換。
間隔日至秒鐘 不支援。 在來源查詢中套用明確轉換。
Interval Hour 不支援。 在來源查詢中套用明確轉換。
間隔小時至分鐘 不支援。 在來源查詢中套用明確轉換。
間隔小時至秒鐘 不支援。 在來源查詢中套用明確轉換。
Interval Minute 不支援。 在來源查詢中套用明確轉換。
間隔分鐘至秒鐘 不支援。 在來源查詢中套用明確轉換。
Interval Month 不支援。 在來源查詢中套用明確轉換。
Interval Second 不支援。 在來源查詢中套用明確轉換。
Interval Year 不支援。 在來源查詢中套用明確轉換。
間隔年至月 不支援。 在來源查詢中套用明確轉換。
數字 Double
期間 (日期) 不支援。 在來源查詢中套用明確轉換。
期間 (時間) 不支援。 在來源查詢中套用明確轉換。
期間 (具有時區的時間) 不支援。 在來源查詢中套用明確轉換。
Period (Timestamp) 不支援。 在來源查詢中套用明確轉換。
期間 (具有時區的時間戳記) 不支援。 在來源查詢中套用明確轉換。
SmallInt Int16
Time TimeSpan
時區的時間 TimeSpan
時間戳記 Datetime
時區的時間戳記 Datetime
VarByte Byte[]
VarChar String
VarGraphic 不支援。 在來源查詢中套用明確轉換。
Xml 不支援。 在來源查詢中套用明確轉換。

查閱活動屬性

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

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