Copiar dados do Teradata Vantage usando o Azure Data Factory e o Synapse Analytics
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Gorjeta
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!
Este artigo descreve como usar a atividade de cópia nos pipelines do Azure Data Factory e do Synapse Analytics para copiar dados do Teradata Vantage. Ele se baseia na visão geral da atividade de cópia.
Capacidades suportadas
Este conector Teradata é suportado para os seguintes recursos:
Capacidades suportadas | IR |
---|---|
Atividade de cópia (fonte/-) | (1) (2) |
Atividade de Pesquisa | (1) (2) |
(1) Tempo de execução de integração do Azure (2) Tempo de execução de integração auto-hospedado
Para obter uma lista de armazenamentos de dados suportados como fontes/coletores pela atividade de cópia, consulte a tabela Armazenamentos de dados suportados.
Especificamente, este conector Teradata suporta:
- Teradata versão 14.10, 15.0, 15.10, 16.0, 16.10 e 16.20.
- Copiar dados usando autenticação Básica, Windows ou LDAP .
- Cópia paralela de uma fonte Teradata. Consulte a seção Cópia paralela do Teradata para obter detalhes.
Pré-requisitos
Se seu armazenamento de dados estiver localizado dentro de uma rede local, uma rede virtual do Azure ou a Amazon Virtual Private Cloud, você precisará configurar um tempo de execução de integração auto-hospedado para se conectar a ele.
Se o seu armazenamento de dados for um serviço de dados de nuvem gerenciado, você poderá usar o Tempo de Execução de Integração do Azure. Se o acesso for restrito a IPs aprovados nas regras de firewall, você poderá adicionar IPs do Azure Integration Runtime à lista de permissões.
Você também pode usar o recurso de tempo de execução de integração de rede virtual gerenciada no Azure Data Factory para acessar a rede local sem instalar e configurar um tempo de execução de integração auto-hospedado.
Para obter mais informações sobre os mecanismos de segurança de rede e as opções suportadas pelo Data Factory, consulte Estratégias de acesso a dados.
Se você usar o Self-hosted Integration Runtime, observe que ele fornece um driver Teradata interno a partir da versão 3.18. Você não precisa instalar manualmente nenhum driver. O driver requer "Visual C++ Redistributable 2012 Update 4" na máquina de tempo de execução de integração auto-hospedada. Se ainda não o tem instalado, transfira-o a partir daqui.
Introdução
Para executar a atividade Copiar com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:
- A ferramenta Copiar dados
- O portal do Azure
- O SDK do .NET
- O SDK do Python
- Azure PowerShell
- A API REST
- O modelo do Azure Resource Manager
Criar um serviço vinculado ao Teradata usando a interface do usuário
Use as etapas a seguir para criar um serviço vinculado ao Teradata na interface do usuário do portal do Azure.
Navegue até a guia Gerenciar em seu espaço de trabalho do Azure Data Factory ou Synapse e selecione Serviços Vinculados e clique em Novo:
Procure Teradata e selecione o conector Teradata.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
Detalhes de configuração do conector
As seções a seguir fornecem detalhes sobre as propriedades usadas para definir entidades do Data Factory específicas para o conector Teradata.
Propriedades do serviço vinculado
O serviço vinculado Teradata suporta as seguintes propriedades:
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type deve ser definida como Teradata. | Sim |
connectionString | Especifica as informações necessárias para se conectar à instância do Teradata. Consulte os exemplos a seguir. Você também pode colocar uma senha no Cofre de Chaves do Azure e extrair a password configuração da cadeia de conexão. Consulte Armazenar credenciais no Azure Key Vault com mais detalhes. |
Sim |
nome de utilizador | Especifique um nome de usuário para se conectar ao Teradata. Aplica-se quando você estiver usando a autenticação do Windows. | Não |
password | Especifique uma senha para a conta de usuário especificada para o nome de usuário. Você também pode optar por fazer referência a um segredo armazenado no Cofre da Chave do Azure. Aplica-se quando você está usando a autenticação do Windows ou fazendo referência a uma senha no Cofre de Chaves para autenticação básica. |
Não |
ConecteVia | O tempo de execução de integração a ser usado para se conectar ao armazenamento de dados. Saiba mais na seção Pré-requisitos . Se não for especificado, ele usará o Tempo de Execução de Integração do Azure padrão. | Não |
Mais propriedades de conexão que você pode definir na cadeia de conexão por seu caso:
Property | Descrição | Default value |
---|---|---|
TdmstPortNumber | O número da porta usada para acessar o banco de dados Teradata. Não altere esse valor, a menos que seja instruído a fazê-lo pelo Suporte Técnico. |
1025 |
UseDataEncryption | Especifica se todas as comunicações com o banco de dados Teradata devem ser criptografadas. Os valores permitidos são 0 ou 1. - 0 (desativado, padrão): criptografa apenas informações de autenticação. - 1 (habilitado): Criptografa todos os dados que são passados entre o driver e o banco de dados. |
0 |
Conjunto de caracteres | O conjunto de caracteres a ser usado para a sessão. Por exemplo, CharacterSet=UTF16 .Esse valor pode ser um conjunto de caracteres definido pelo usuário ou um dos seguintes conjuntos de caracteres predefinidos: - ASCII - UTF8 - UTF16 - LATIN1252_0A - LATIN9_0A - LATIN1_0A - Shift-JIS (Windows, compatível com DOS, KANJISJIS_0S) - EUC (compatível com 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 | O tamanho máximo do buffer de resposta para solicitações SQL, em kilobytes (KBs). Por exemplo, MaxRespSize=10485760 .Para o Teradata Database versão 16.00 ou posterior, o valor máximo é 7361536. Para conexões que usam versões anteriores, o valor máximo é 1048576. |
65536 |
Nome do mecanismo | Para usar o protocolo LDAP para autenticar a conexão, especifique MechanismName=LDAP . |
N/A |
Exemplo de uso da autenticação básica
{
"name": "TeradataLinkedService",
"properties": {
"type": "Teradata",
"typeProperties": {
"connectionString": "DBCName=<server>;Uid=<username>;Pwd=<password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Exemplo de utilização da autenticação do Windows
{
"name": "TeradataLinkedService",
"properties": {
"type": "Teradata",
"typeProperties": {
"connectionString": "DBCName=<server>",
"username": "<username>",
"password": "<password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Exemplo usando autenticação 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
A seguinte carga útil ainda é suportada. No futuro, no entanto, você deve usar o novo.
Carga útil anterior:
{
"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"
}
}
}
Propriedades do conjunto de dados
Esta seção fornece uma lista de propriedades suportadas pelo conjunto de dados Teradata. Para obter uma lista completa de seções e propriedades disponíveis para definir conjuntos de dados, consulte Conjuntos de dados.
Para copiar dados do Teradata, as seguintes propriedades são suportadas:
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type do conjunto de dados deve ser definida como TeradataTable . |
Sim |
base de dados | O nome da instância Teradata. | Não (se "consulta" na fonte da atividade for especificado) |
tabela | O nome da tabela na instância Teradata. | Não (se "consulta" na fonte da atividade for especificado) |
Exemplo:
{
"name": "TeradataDataset",
"properties": {
"type": "TeradataTable",
"typeProperties": {},
"schema": [],
"linkedServiceName": {
"referenceName": "<Teradata linked service name>",
"type": "LinkedServiceReference"
}
}
}
Nota
RelationalTable
O conjunto de dados type ainda é suportado. No entanto, recomendamos que você use o novo conjunto de dados.
Carga útil anterior:
{
"name": "TeradataDataset",
"properties": {
"type": "RelationalTable",
"linkedServiceName": {
"referenceName": "<Teradata linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {}
}
}
Propriedades da atividade Copy
Esta seção fornece uma lista de propriedades suportadas pela fonte Teradata. Para obter uma lista completa de seções e propriedades disponíveis para definir atividades, consulte Pipelines.
Teradata como fonte
Gorjeta
Para carregar dados do Teradata de forma eficiente usando o particionamento de dados, saiba mais na seção Cópia paralela do Teradata .
Para copiar dados do Teradata, as seguintes propriedades são suportadas na seção copiar fonte de atividade:
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type da fonte de atividade de cópia deve ser definida como TeradataSource . |
Sim |
query | Use a consulta SQL personalizada para ler dados. Um exemplo é "SELECT * FROM MyTable" .Ao habilitar a carga particionada, você precisa conectar quaisquer parâmetros de partição internos correspondentes em sua consulta. Para obter exemplos, consulte a seção Cópia paralela do Teradata . |
Não (se a tabela no conjunto de dados for especificada) |
partitionOptions | Especifica as opções de particionamento de dados usadas para carregar dados do Teradata. Os valores permitidos são: Nenhum (predefinição), Hash e DynamicRange. Quando uma opção de partição está habilitada (ou seja, não None ), o grau de paralelismo para carregar simultaneamente dados do Teradata é controlado pela parallelCopies configuração na atividade de cópia. |
Não |
partitionSettings | Especifique o grupo de configurações para particionamento de dados. Aplicar quando a opção de partição não None for . |
Não |
partitionColumnName | Especifique o nome da coluna de origem que será utilizada pela partição de intervalo ou pela Partição hash para a cópia em paralelo. Se não for especificado, o índice primário da tabela será detetado automaticamente e usado como a coluna de partição. Aplicar quando a opção de partição for Hash ou DynamicRange . Se você usar uma consulta para recuperar os dados de origem, gancho ?AdfHashPartitionCondition ou ?AdfRangePartitionColumnName na cláusula WHERE. Veja o exemplo na seção Cópia paralela do Teradata . |
Não |
partiçãoUpperBound | O valor máximo da coluna de partição para copiar dados. Aplicar quando a opção de partição for DynamicRange . Se você usar query para recuperar dados de origem, conecte ?AdfRangePartitionUpbound a cláusula WHERE. Para obter um exemplo, consulte a seção Cópia paralela do Teradata . |
Não |
partiçãoLowerBound | O valor mínimo da coluna de partição para copiar dados. Aplique quando a opção de partição for DynamicRange . Se você usar uma consulta para recuperar os dados de origem, conecte ?AdfRangePartitionLowbound a cláusula WHERE. Para obter um exemplo, consulte a seção Cópia paralela do Teradata . |
Não |
Nota
RelationalSource
type copy source ainda é suportado, mas não suporta a nova carga paralela interna do Teradata (opções de partição). No entanto, recomendamos que você use o novo conjunto de dados.
Exemplo: copiar dados usando uma consulta básica sem partição
"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>"
}
}
}
]
Cópia paralela do Teradata
O conector Teradata fornece particionamento de dados integrado para copiar dados do Teradata em paralelo. Você pode encontrar opções de particionamento de dados na tabela Origem da atividade de cópia.
Quando você habilita a cópia particionada, o serviço executa consultas paralelas na fonte Teradata para carregar dados por partições. O grau paralelo é controlado pela parallelCopies
configuração na atividade de cópia. Por exemplo, se você definir parallelCopies
como quatro, o serviço gerará e executará simultaneamente quatro consultas com base na opção e nas configurações de partição especificadas, e cada consulta recuperará uma parte dos dados do seu Teradata.
Sugere-se que você habilite a cópia paralela com particionamento de dados, especialmente quando você carrega uma grande quantidade de dados do seu Teradata. A seguir estão sugeridas configurações para diferentes cenários. Ao copiar dados para o armazenamento de dados baseado em arquivo, é recomendável gravar em uma pasta como vários arquivos (especifique apenas o nome da pasta), caso em que o desempenho é melhor do que gravar em um único arquivo.
Cenário | Configurações sugeridas |
---|---|
Carga completa a partir de uma mesa grande. | Opção de partição: Hash. Durante a execução, o serviço deteta automaticamente a coluna de índice primária, aplica um hash contra ela e copia dados por partições. |
Carregue uma grande quantidade de dados usando uma consulta personalizada. | Opção de partição: Hash. Consulta: SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause> .Coluna de partição:especifique a coluna utilizada para aplicar a partição hash. Se não for especificado, o serviço detetará automaticamente a coluna PK da tabela especificada no conjunto de dados Teradata. Durante a execução, o serviço substitui ?AdfHashPartitionCondition pela lógica de partição hash e envia para o Teradata. |
Carregue uma grande quantidade de dados usando uma consulta personalizada, com uma coluna inteira com valor uniformemente distribuído para particionamento de intervalo. | Opções de partição: Partição de intervalo dinâmico. Consulta: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause> .Coluna de partição: especifique a coluna usada para particionar dados. Você pode particionar contra a coluna com o tipo de dados inteiro. Limite superior da partição e limite inferior da partição: especifique se deseja filtrar na coluna da partição para recuperar dados somente entre o intervalo inferior e superior. Durante a execução, o serviço substitui ?AdfRangePartitionColumnName , ?AdfRangePartitionUpbound e ?AdfRangePartitionLowbound com o nome da coluna real e intervalos de valores para cada partição, e envia para Teradata. Por exemplo, se a coluna de partição "ID" for definida com o limite inferior como 1 e o limite superior como 80, com cópia paralela definida como 4, o serviço recuperará dados por 4 partições. Os seus IDs situam-se entre [1,20], [21, 40], [41, 60] e [61, 80], respetivamente. |
Exemplo: consulta com partição hash
"source": {
"type": "TeradataSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause>",
"partitionOption": "Hash",
"partitionSettings": {
"partitionColumnName": "<hash_partition_column_name>"
}
}
Exemplo: consulta com partição de intervalo dinâmico
"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>"
}
}
Mapeamento de tipo de dados para Teradata
Quando você copia dados do Teradata, os mapeamentos a seguir se aplicam dos tipos de dados do Teradata aos tipos de dados internos usados pelo serviço. Para saber como a atividade de cópia mapeia o esquema de origem e o tipo de dados para o coletor, consulte Mapeamentos de esquema e tipo de dados.
Tipo de dados Teradata | Tipo de dados de serviço provisório |
---|---|
BigInt | Int64 |
Blob | Byte[] |
Byte | Byte[] |
ByteInt | Int16 |
Char | String |
Clob | String |
Date | DateTime |
Decimal | Decimal |
Duplo | Duplo |
Gráfico | Não suportado. Aplique a conversão explícita na consulta de origem. |
Número inteiro | Int32 |
Dia de intervalo | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Dia a Hora | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Dia a Minuto | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Dia a Segundo | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Hora | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Hora a Minuto | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo de hora a segundo | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Minuto | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Minuto a Segundo | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Mês | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Segundo | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Ano | Não suportado. Aplique a conversão explícita na consulta de origem. |
Intervalo Ano a Mês | Não suportado. Aplique a conversão explícita na consulta de origem. |
Número | Duplo |
Período (Data) | Não suportado. Aplique a conversão explícita na consulta de origem. |
Período (Tempo) | Não suportado. Aplique a conversão explícita na consulta de origem. |
Período (Hora com Fuso Horário) | Não suportado. Aplique a conversão explícita na consulta de origem. |
Período (carimbo de data/hora) | Não suportado. Aplique a conversão explícita na consulta de origem. |
Período (carimbo de data/hora com fuso horário) | Não suportado. Aplique a conversão explícita na consulta de origem. |
SmallInt | Int16 |
Hora | TimeSpan |
Hora com fuso horário | TimeSpan |
Carimbo de Data/Hora | DateTime |
Carimbo de data/hora com fuso horário | DateTime |
VarByte | Byte[] |
VarChar | String |
VarGraphic | Não suportado. Aplique a conversão explícita na consulta de origem. |
Xml | Não suportado. Aplique a conversão explícita na consulta de origem. |
Propriedades da atividade de pesquisa
Para saber detalhes sobre as propriedades, verifique Atividade de pesquisa.
Conteúdos relacionados
Para obter uma lista de armazenamentos de dados suportados como fontes e coletores pela atividade de cópia, consulte Armazenamentos de dados suportados.