Copiare dati da Teradata Vantage usando Azure Data Factory e Synapse Analytics
SI APPLICA A: Azure Data Factory Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .
Questo articolo illustra come usare l'attività di copia nelle pipeline di Azure Data Factory e Synapse Analytics per copiare dati da Teradata Vantage. Si basa sulla panoramica dell'attività di copia.
Funzionalità supportate
Questo connettore Teradata è supportato per le funzionalità seguenti:
Funzionalità supportate | IR |
---|---|
attività Copy (source/-) | ① ② |
Attività Lookup | ① ② |
(1) Runtime di integrazione di Azure (2) Runtime di integrazione self-hosted
Per un elenco degli archivi dati supportati come origini/sink dall'attività di copia, vedere la tabella relativa agli archivi dati supportati.
In particolare, il connettore Teradata supporta:
- Teradata versione 14.10, 15.0, 15.10, 16.0, 16.10 e 16.20.
- Copia dei dati tramite l'autenticazione Di base, Windows o LDAP .
- Copia parallela da un'origine Teradata. Per informazioni dettagliate, vedere la sezione Copia parallela da Teradata .
Prerequisiti
Se l'archivio dati si trova all'interno di una rete locale, una rete virtuale di Azure o un cloud privato virtuale di Amazon, è necessario configurare un runtime di integrazione self-hosted per connettersi.
Se l'archivio dati è un servizio dati cloud gestito, è possibile usare Azure Integration Runtime. Se l'accesso è limitato agli indirizzi IP approvati nelle regole del firewall, è possibile aggiungere indirizzi IP del runtime di integrazione di Azure all'elenco elementi consentiti.
È anche possibile usare la funzionalità di runtime di integrazione della rete virtuale gestita in Azure Data Factory per accedere alla rete locale senza installare e configurare un runtime di integrazione self-hosted.
Per altre informazioni sui meccanismi di sicurezza di rete e sulle opzioni supportate da Data Factory, vedere strategie di accesso ai dati.
Se si usa il runtime di integrazione self-hosted, si noti che fornisce un driver Teradata predefinito a partire dalla versione 3.18. Non è necessario installare manualmente alcun driver. Il driver richiede "Visual C++ Redistributable 2012 Update 4" nel computer di runtime di integrazione self-hosted. Se non è ancora installato, scaricarlo da qui.
Introduzione
Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:
- Strumento Copia dati
- Il portale di Azure
- .NET SDK
- The Python SDK
- Azure PowerShell
- The REST API
- Modello di Azure Resource Manager
Creare un servizio collegato a Teradata usando l'interfaccia utente
Usare la procedura seguente per creare un servizio collegato a Teradata nell'interfaccia utente di portale di Azure.
Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:
Cercare Teradata e selezionare il connettore Teradata.
Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.
Dettagli di configurazione di Connessione or
Le sezioni seguenti forniscono informazioni dettagliate sulle proprietà usate per definire entità di Data Factory specifiche per il connettore Teradata.
Proprietà del servizio collegato
Il servizio collegato Teradata supporta le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
Tipo | La proprietà type deve essere impostata su Teradata. | Sì |
connectionString | Specifica le informazioni necessarie per connettersi all'istanza di Teradata. Vedere gli esempi seguenti. È anche possibile inserire una password in Azure Key Vault ed estrarre la password configurazione dal stringa di connessione. Per altri dettagli, vedere Archiviare le credenziali in Azure Key Vault . |
Sì |
username | Specificare un nome utente per connettersi a Teradata. Si applica quando si usa autenticazione di Windows. | No |
password | Specificare una password per l'account utente specificato per il nome utente. È anche possibile scegliere di fare riferimento a un segreto archiviato in Azure Key Vault. Si applica quando si usa autenticazione di Windows o si fa riferimento a una password in Key Vault per l'autenticazione di base. |
No |
connectVia | Il runtime di integrazione da usare per la connessione all'archivio dati. Per altre informazioni, vedere la sezione Prerequisiti. Se non specificato, viene usato il runtime di integrazione di Azure predefinito. | No |
Altre proprietà di connessione che è possibile impostare in stringa di connessione in base al caso:
Proprietà | Descrizione | Default value |
---|---|---|
TdmstPortNumber | Numero della porta utilizzata per accedere al database Teradata. Non modificare questo valore a meno che non venga richiesto dal supporto tecnico. |
1025 |
UseDataEncryption | Specifica se crittografare tutte le comunicazioni con il database Teradata. I valori consentiti sono 0 o 1. - 0 (disabilitato, impostazione predefinita): crittografa solo le informazioni di autenticazione. - 1 (abilitato): crittografa tutti i dati passati tra il driver e il database. |
0 |
CharacterSet | Set di caratteri da utilizzare per la sessione. Ad esempio, CharacterSet=UTF16 .Questo valore può essere un set di caratteri definito dall'utente o uno dei set di caratteri predefiniti seguenti: -ASCII - UTF8 - UTF16 - LATIN1252_0A - LATIN9_0A - LATIN1_0A - SHIFT-JIS (Windows, compatibile con DOS, KANJISJIS_0S) - EUC (compatibile con Unix, KANJIEC_0U) - IBM Mainframe (KANJIEBCDIC5035_0I) - KANJI932_1S0 - BIG5 (TCHBIG5_1R0) - GB (SCHGB2312_1T0) - SCHINE edizione Standard936_6R0 - TCHINE edizione Standard950_8R0 - NetworkKorean (HANGULKSC5601_2R4) - HANGUL949_7R0 - ARABIC1256_6A0 - CYRILLIC1251_2A0 - HEBREW1255_5A0 - LATIN1250_1A0 - LATIN1254_7A0 - LATIN1258_8A0 - THAI874_4A0 |
ASCII |
MaxRespSize | Dimensioni massime del buffer di risposta per le richieste SQL, in kilobyte (KB). Ad esempio, MaxRespSize=10485760 .Per Teradata Database versione 16.00 o successiva, il valore massimo è 7361536. Per le connessioni che usano versioni precedenti, il valore massimo è 1048576. |
65536 |
MechanismName | Per usare il protocollo LDAP per autenticare la connessione, specificare MechanismName=LDAP . |
N/D |
Esempio di utilizzo dell'autenticazione di base
{
"name": "TeradataLinkedService",
"properties": {
"type": "Teradata",
"typeProperties": {
"connectionString": "DBCName=<server>;Uid=<username>;Pwd=<password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Esempio di utilizzo di autenticazione di Windows
{
"name": "TeradataLinkedService",
"properties": {
"type": "Teradata",
"typeProperties": {
"connectionString": "DBCName=<server>",
"username": "<username>",
"password": "<password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Esempio di uso dell'autenticazione LDAP
{
"name": "TeradataLinkedService",
"properties": {
"type": "Teradata",
"typeProperties": {
"connectionString": "DBCName=<server>;MechanismName=LDAP;Uid=<username>;Pwd=<password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Nota
Il payload seguente è ancora supportato. In futuro, tuttavia, è consigliabile usare quello nuovo.
Payload precedente:
{
"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"
}
}
}
Proprietà del set di dati
Questa sezione fornisce un elenco delle proprietà supportate dal set di dati Teradata. Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione dei set di dati, vedere Set di dati.
Per copiare dati da Teradata, sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
Tipo | La proprietà type del set di dati deve essere impostata su TeradataTable . |
Sì |
database | Nome dell'istanza di Teradata. | No (se nell'origine dell'attività è specificato "query") |
table | Nome della tabella nell'istanza di Teradata. | No (se nell'origine dell'attività è specificato "query") |
Esempio:
{
"name": "TeradataDataset",
"properties": {
"type": "TeradataTable",
"typeProperties": {},
"schema": [],
"linkedServiceName": {
"referenceName": "<Teradata linked service name>",
"type": "LinkedServiceReference"
}
}
}
Nota
RelationalTable
il set di dati di tipo è ancora supportato. È tuttavia consigliabile usare il nuovo set di dati.
Payload precedente:
{
"name": "TeradataDataset",
"properties": {
"type": "RelationalTable",
"linkedServiceName": {
"referenceName": "<Teradata linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {}
}
}
Proprietà dell'attività di copia
Questa sezione presenta un elenco delle proprietà supportate dall'origine Teradata. Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline.
Teradata come origine
Suggerimento
Per caricare i dati da Teradata in modo efficiente usando il partizionamento dei dati, vedere la sezione Copia parallela da Teradata .
Per copiare dati da Teradata, nella sezione origine dell'attività di copia sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
Tipo | La proprietà type dell'origine dell'attività di copia deve essere impostata su TeradataSource . |
Sì |
query | Usare la query SQL personalizzata per leggere i dati. Un esempio è "SELECT * FROM MyTable" .Quando si abilita il caricamento partizionato, è necessario associare tutti i parametri di partizione predefiniti corrispondenti nella query. Per esempi, vedere la sezione Copia parallela da Teradata . |
No (se la tabella nel set di dati è specificata) |
partitionOptions | Specifica le opzioni di partizionamento dei dati utilizzate per caricare i dati da Teradata. I valori consentiti sono: Nessuno (impostazione predefinita), Hash e DynamicRange. Quando un'opzione di partizione è abilitata ( ovvero , non None ), il grado di parallelismo per caricare simultaneamente i dati da Teradata è controllato dall'impostazione nell'attività parallelCopies di copia. |
No |
partitionSettings | Specifica il gruppo di impostazioni per il partizionamento dei dati. Si applica quando l'opzione di partizione non è None . |
No |
partitionColumnName | Specificare il nome della colonna di origine che verrà usata dalla partizione di intervallo o dalla partizione hash per la copia parallela. Se non specificato, l'indice primario della tabella viene rilevato automaticamente e usato come colonna di partizione. Applicare quando l'opzione di partizione è Hash o DynamicRange . Se si usa una query per recuperare i dati di origine, hook ?AdfHashPartitionCondition o ?AdfRangePartitionColumnName nella clausola WHERE. Vedere l'esempio nella sezione Copia parallela da Teradata . |
No |
partitionUpperBound | Valore massimo della colonna della partizione per copiare i dati. Si applica quando l'opzione di partizione è DynamicRange . Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionUpbound nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Teradata . |
No |
partitionLowerBound | Valore minimo della colonna di partizione da copiare. Si applica quando l'opzione di partizione è DynamicRange . Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionLowbound nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Teradata . |
No |
Nota
RelationalSource
L'origine della copia del tipo è ancora supportata, ma non supporta il nuovo caricamento parallelo predefinito da Teradata (opzioni di partizione). È tuttavia consigliabile usare il nuovo set di dati.
Esempio: copiare dati usando una query di base senza partizione
"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>"
}
}
}
]
Copia parallela da Teradata
Il connettore Teradata fornisce il partizionamento dei dati predefinito per copiare i dati da Teradata in parallelo. È possibile trovare le opzioni di partizionamento dei dati nella tabella Origine dell'attività di copia.
Quando si abilita la copia partizionata, il servizio esegue query parallele sull'origine Teradata per caricare i dati in base alle partizioni. Il grado di parallelismo è controllato dall'impostazione parallelCopies
sull'attività di copia. Ad esempio, se si imposta parallelCopies
su quattro, il servizio genera e esegue contemporaneamente quattro query in base all'opzione e alle impostazioni di partizione specificate e ogni query recupera una parte di dati da Teradata.
È consigliabile abilitare la copia parallela con il partizionamento dei dati, soprattutto quando si caricano grandi quantità di dati da Teradata. Di seguito sono riportate le configurazioni consigliate per i diversi scenari: Quando si copiano dati in un archivio dati basato su file, è consigliabile scrivere in una cartella come più file (specificare solo il nome della cartella), nel qual caso le prestazioni sono migliori rispetto alla scrittura in un singolo file.
Scenario | Impostazioni consigliate |
---|---|
Caricamento completo da una tabella di grandi dimensioni. | Opzione di partizione: Hash. Durante l'esecuzione, il servizio rileva automaticamente la colonna dell'indice primario, applica un hash e copia i dati in base alle partizioni. |
Caricare grandi quantità di dati tramite una query personalizzata. | Opzione di partizione: Hash. Query: SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause> .Colonna di partizione: specificare la colonna usata per applicare la partizione hash. Se non specificato, il servizio rileva automaticamente la colonna PK della tabella specificata nel set di dati Teradata. Durante l'esecuzione, il servizio sostituisce ?AdfHashPartitionCondition con la logica di partizione hash e invia a Teradata. |
Caricare grandi quantità di dati tramite una query personalizzata, con una colonna di tipo integer con un valore distribuito uniformemente per il partizionamento dell'intervallo. | Opzioni di partizione: partizione intervallo dinamico. Query: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause> .Colonna di partizione: specificare la colonna usata per partizionare i dati. È possibile partizionare la colonna con il tipo di dati Integer. Limite superiore della partizione e limite inferiore della partizione: specificare se si desidera filtrare in base alla colonna di partizione per recuperare i dati solo tra l'intervallo inferiore e quello superiore. Durante l'esecuzione, il servizio sostituisce ?AdfRangePartitionColumnName , ?AdfRangePartitionUpbound e ?AdfRangePartitionLowbound con il nome di colonna e gli intervalli di valori effettivi per ogni partizione e invia a Teradata. Ad esempio, se la colonna di partizione "ID" è impostata con il limite inferiore pari a 1 e il limite superiore come 80, con copia parallela impostata su 4, il servizio recupera i dati per 4 partizioni. Gli ID sono rispettivamente compresi tra [1, 20], [21, 40], [41, 60] e [61, 80]. |
Esempio: query con partizione hash
"source": {
"type": "TeradataSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause>",
"partitionOption": "Hash",
"partitionSettings": {
"partitionColumnName": "<hash_partition_column_name>"
}
}
Esempio: query con partizione a intervalli dinamici
"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>"
}
}
Mapping dei tipi di dati per Teradata
Quando si copiano dati da Teradata, i mapping seguenti si applicano dai tipi di dati di Teradata ai tipi di dati interni usati dal servizio. Per informazioni su come l'attività di copia esegue il mapping dello schema di origine e del tipo di dati al sink, vedere Mapping dello schema e del tipo di dati.
Tipo di dati Teradata | Tipo di dati del servizio provvisorio |
---|---|
BigInt | Int64 |
BLOB | Byte[] |
Byte | Byte[] |
ByteInt | Int16 |
Char | Stringa |
Clob | Stringa |
Data | Data/Ora |
Decimale | Decimale |
Double | Double |
Graphic | Non supportato. Applicare il cast esplicito nella query di origine. |
Integer | Int32 |
Interval Day | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Day To Hour | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Day To Minute | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Day To Second | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Hour | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Hour To Minute | Non supportato. Applicare il cast esplicito nella query di origine. |
Intervallo - da ora a secondo | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Minute | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Minute To Second | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Month | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Second | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Year | Non supportato. Applicare il cast esplicito nella query di origine. |
Interval Year To Month | Non supportato. Applicare il cast esplicito nella query di origine. |
Numero | Double |
Periodo (data) | Non supportato. Applicare il cast esplicito nella query di origine. |
Periodo (tempo) | Non supportato. Applicare il cast esplicito nella query di origine. |
Periodo (ora con fuso orario) | Non supportato. Applicare il cast esplicito nella query di origine. |
Period (Timestamp) | Non supportato. Applicare il cast esplicito nella query di origine. |
Periodo (timestamp con fuso orario) | Non supportato. Applicare il cast esplicito nella query di origine. |
SmallInt | Int16 |
Time | TimeSpan |
Time With Time Zone | TimeSpan |
Timestamp: | Data/Ora |
Timestamp With Time Zone | Data/Ora |
VarByte | Byte[] |
VarChar | Stringa |
VarGraphic | Non supportato. Applicare il cast esplicito nella query di origine. |
XML | Non supportato. Applicare il cast esplicito nella query di origine. |
Proprietà dell'attività Lookup
Per altre informazioni sulle proprietà, vedere Attività Lookup.
Contenuto correlato
Per un elenco degli archivi dati supportati come origini e sink dall'attività di copia, vedere Archivi dati supportati.