Copiar dados do Teradata Vantage usando o Azure Data Factory e o Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!

Este artigo descreve como usar a atividade de cópia nos pipelines do Azure Data Factory e do Azure Synapse Analytics para copiar dados de um banco de dados do Teradata Vantage. Ele se baseia na Visão geral da atividade Copy.

Funcionalidades com suporte

Há suporte para este conector do Teradata para as seguintes funcionalidades:

Funcionalidades com suporte IR
Atividade de cópia (origem/-) 6/6
Atividade de pesquisa 6/6

① Runtime de integração do Azure ② Runtime de integração auto-hospedada

Para obter uma lista de armazenamentos de dados com suporte como origens/coletores da atividade de cópia, confira a tabela Armazenamentos de dados com suporte.

Especificamente, este conector do Teradata dá suporte a:

  • Version 14.10, 15.0, 15.10, 16.0, 16.10, e 16.20 do Teradata.
  • Copiar dados usando a autenticação básica, do Windows ou LDAP.
  • Cópia paralela de uma fonte do Teradata. Confira a seção Cópia paralela do Teradata para obter detalhes.

Pré-requisitos

Se o armazenamento de dados estiver localizado dentro de uma rede local, em uma rede virtual do Azure ou na Amazon Virtual Private Cloud, você precisará configurar um runtime de integração auto-hospedada para se conectar a ele.

Se o armazenamento de dados for um serviço de dados de nuvem gerenciado, você poderá usar o Azure Integration Runtime. Se o acesso for restrito aos IPs que estão 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 runtime de integração da rede virtual gerenciada no Azure Data Factory para acessar a rede local sem instalar e configurar um runtime de integração auto-hospedada.

Para obter mais informações sobre os mecanismos de segurança de rede e as opções compatíveis com o Data Factory, consulte Estratégias de acesso a dados.

Se você usar o IR auto-hospedado, observe que ele fornece um driver integrado do Teradata a partir da versão 3.18. Você não precisa instalar manualmente nenhum driver. O driver requer o “Pacote Redistribuível do Visual C++ 2012, Atualização 4” no computador do IR auto-hospedado. Se ele ainda não estiver instalado, baixe-o aqui.

Introdução

Para executar a atividade de Cópia com um pipeline, será possível usar as ferramentas ou os SDKs abaixo:

Criar um serviço vinculado para o Teradata usando a interface do usuário

Use as etapas a seguir para criar um serviço vinculado para o Teradata na interface do usuário do portal do Azure.

  1. Navegue até a guia Gerenciar no workspace do Azure Data Factory ou do Synapse, selecione Serviços Vinculados e clique em Novo:

  2. Procure Teradata e selecione o conector do Teradata.

    Select the Teradata connector.

  3. Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.

    Configure a linked service to Teradata.

Detalhes da configuração do conector

As seções que a seguir fornecem detalhes sobre as propriedades usadas para definir entidades do Data Factory específicas ao conector do Teradata.

Propriedades do serviço vinculado

O serviço vinculado do Teradata oferece suporte às seguintes propriedades:

Propriedade Descrição Obrigatório
type 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 Azure Key Vault e extrair a configuração password da cadeia de conexão. Veja o artigo Credenciais de armazenamento no Azure Key Vault para saber mais detalhes.
Sim
Nome de Usuário Especifique o nome de usuário para se conectar ao Teradata. Se aplica quando você está usando a Autenticação do Windows. Não
password Especifique uma senha para a conta de usuário que você especificou para o nome de usuário. Você também pode optar por referenciar um segredo armazenado no Azure Key Vault.
Aplica-se quando você estiver usando a autenticação do Windows ou fazendo referência a uma senha no Key Vault para autenticação básica.
Não
connectVia O Integration Runtime a ser usado para se conectar ao armazenamento de dados. Saiba mais na seção Pré-requisitos. Se não for especificado, ele usa o Integration Runtime padrão do Azure. Não

Mais propriedades de conexão que você pode definir na cadeia de conexão de acordo com o caso:

Propriedade Descrição Valor padrão
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 fazer isso pela equipe de suporte.
1025
UseDataEncryption Especifica se deve ou não criptografar toda a comunicação com o banco de dados Teradata. Os valores permitidos são “0” e “1”.

- 0 (desabilitado, padrão) : criptografa somente informações de autenticação.
- 1 (habilitado) : criptografa todos os dados que são transmitidos entre o driver e o Database.
0
CharacterSet 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)
- Mainframe IBM (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 KBs (quilobytes). Por exemplo, MaxRespSize=‭10485760‬.

Para o Banco de Dados Teradata 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
MechanismName Para usar o protocolo LDAP para autenticar a conexão, especifique MechanismName=LDAP. N/D

Exemplo com 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 com uso 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 com uso da 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"
        }
    }
}

Observação

O payload a seguir ainda tem suporte. No entanto, no futuro, você deve usar o novo.

Carga 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 das propriedades com suporte pelo conjunto de dados do Teradata. Para obter uma lista completa das seções e propriedades disponíveis para definir os conjuntos de dados, confira Conjuntos de dados.

Para copiar dados do Teradata, há suporte para as seguintes propriedades:

Propriedade Descrição Obrigatório
type A propriedade type do conjunto de dados deve ser definida como TeradataTable. Sim
Banco de Dados O nome da instância do Teradata. Não (se "query" na fonte da atividade for especificada)
tabela O nome da tabela na instance do Teradata. Não (se "query" na fonte da atividade for especificada)

Exemplo:

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

Observação

O conjunto de dados do tipo RelationalTable ainda tem suporte. No entanto, recomendamos que você use o novo conjunto de dados.

Carga anterior:

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

Propriedades da atividade de cópia

Esta seção fornece uma lista das propriedades com suporte pela origem do Teradata. Para obter uma lista completa das seções e propriedades disponíveis para definir as atividades, veja Pipelines.

Teradata como origem

Dica

Para carregar dados do Teradata com eficiência usando o particionamento de dados, saiba mais na seção Cópia paralela do Teradata.

Para copiar dados do Teradata, as seguintes propriedades têm suporte na seção de origem atividade Copy:

Propriedade Descrição Obrigatório
type A propriedade type da fonte da atividade Copy deve ser definida como TeradataSource. Sim
Consulta Utiliza a consulta SQL personalizada para ler os dados. Um exemplo é "SELECT * FROM MyTable".
Ao habilitar a carga particionada, você precisa vincular todos os parâmetros de partição internos correspondentes na consulta. Confira a seção Cópia paralela do Teradata para obter exemplos.
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 (padrão), Hash e DynamicRange.
Quando uma opção de partição é habilitada (ou seja, não None), o grau de paralelismo para carregar dados simultaneamente do Teradata é controlado pela configuração parallelCopies na atividade Copy.
Não
partitionSettings Especifique o grupo de configurações para o particionamento de dados.
Aplicar quando a opção de partição não for None.
Não
partitionColumnName Especifique o nome da coluna de origem que será usada pela partição de intervalo ou de Hash para cópia paralela. Se não especificado, a chave primária da tabela será detectada automaticamente e usada como a coluna de partição.
Aplique quando a opção de partição for Hash ou DynamicRange. Se você usar uma consulta para recuperar os dados de origem, conecte ?AdfHashPartitionCondition ou ?AdfRangePartitionColumnName na cláusula WHERE. Confira o exemplo na seção Cópia paralela do Teradata.
Não
partitionUpperBound 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 uma consulta para recuperar os dados de origem, conecte ?AdfRangePartitionUpbound na cláusula WHERE. Para um exemplo, confira a seção Cópia paralela do Teradata.
Não
partitionLowerBound O valor mínimo da coluna de partição para copiar dados.
Aplicar quando a opção de partição for DynamicRange. Se você usar uma consulta para recuperar os dados de origem, conecte ?AdfRangePartitionLowbound na cláusula WHERE. Para um exemplo, confira a seção Cópia paralela do Teradata.
Não

Observação

A fonte de cópia do tipo RelationalSource ainda tem suporte, mas não dá suporte à 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 do Teradata fornece particionamento de dados interno para copiar dados do Teradata em paralelo. Você pode encontrar opções de particionamento de dados na tabela Origem da atividade de cópia.

Screenshot of partition options

Quando você habilita a cópia particionada, o serviço executa consultas paralelas com relação à sua fonte do Teradata para carregar dados por partições. O grau paralelo é controlado pela configuração do parallelCopies na atividade de cópia. Por exemplo, ao definir parallelCopies como quatro, o serviço gera e executa simultaneamente quatro consultas com base na opção de partição especificada e nas configurações, e cada consulta recupera uma parte dos dados da Teradata.

É recomendável habilitar a cópia paralela com o particionamento de dados, especialmente quando você carrega grandes quantidades do Teradata. Veja a seguir as configurações sugeridas para cenários diferentes. Ao copiar dados para o armazenamento de dados baseado em arquivo, recomendamos gravá-los em uma pasta como vários arquivos (apenas especifique o nome da pasta) para ter um desempenho melhor do que gravar em um arquivo.

Cenário Configurações sugeridas
Carga completa de uma tabela grande. Opção de partição: Hash.

Durante a execução, o serviço detecta automaticamente a coluna de índice primário, aplica um hash a ela e copia os 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 usada para aplicar a partição Hash. Se não for especificado, o serviço detectará automaticamente a coluna PK da tabela que você especificou no conjunto de dados do Teradata.

Durante a execução, o serviço substitui ?AdfHashPartitionCondition pela lógica de partição de Hash e envia para o Teradata.
Carregue uma grande quantidade de dados usando uma consulta personalizada, tendo uma coluna de inteiros com valor distribuído uniformemente para o 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 em relação à coluna com tipo de dados Integer.
Limite superior da partição e Limite inferior da partição: especifique se deseja filtrar a coluna de partição para recuperar dados somente entre os intervalos inferior e superior.

Durante a execução, o serviço substitui ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound e ?AdfRangePartitionLowbound pelo nome real da coluna e os intervalos de valores de cada partição e envia ao Teradata.
Por exemplo, se a coluna de partição "ID" for definida com o limite inferior de 1 e o limite superior de 80, com a cópia paralela definida como 4, o serviço recuperará dados por 4 partições. Suas IDs estão entre [1, 20], [21, 40], [41, 60] e [61, 80], respectivamente.

Exemplo: consulta com partições 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 a partição do 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 mais sobre como a atividade de cópia mapeia o tipo de dados e esquema de origem para o coletor, consulte Mapeamentos de tipo de dados e esquema.

Tipo de dados Teradata Tipo de dados provisório do serviço
BigInt Int64
Blob Byte[]
Byte Byte[]
ByteInt Int16
Char String
Clob String
Data Datetime
Decimal Decimal
Double Double
Graphic Não há suporte. Aplique conversão explícita na consulta de origem.
Integer Int32
Interval Day Não há suporte. Aplique conversão explícita na consulta de origem.
Intervalo - dia para hora Não há suporte. Aplique conversão explícita na consulta de origem.
Intervalo - dia para minuto Não há suporte. Aplique conversão explícita na consulta de origem.
Interval Day To Second Não há suporte. Aplique conversão explícita na consulta de origem.
Interval Hour Não há suporte. Aplique conversão explícita na consulta de origem.
Intervalo - hora para minuto Não há suporte. Aplique conversão explícita na consulta de origem.
Interval Hour To Second Não há suporte. Aplique conversão explícita na consulta de origem.
Interval Minute Não há suporte. Aplique conversão explícita na consulta de origem.
Interval Minute To Second Não há suporte. Aplique conversão explícita na consulta de origem.
Interval Month Não há suporte. Aplique conversão explícita na consulta de origem.
Interval Second Não há suporte. Aplique conversão explícita na consulta de origem.
Interval Year Não há suporte. Aplique conversão explícita na consulta de origem.
Interval Year To Month Não há suporte. Aplique conversão explícita na consulta de origem.
Número Double
Período (data) Não há suporte. Aplique conversão explícita na consulta de origem.
Período (hora) Não há suporte. Aplique conversão explícita na consulta de origem.
Período (hora com fuso horário) Não há suporte. Aplique conversão explícita na consulta de origem.
Period (Timestamp) Não há suporte. Aplique conversão explícita na consulta de origem.
Período (carimbo de data/hora com fuso horário) Não há suporte. Aplique conversão explícita na consulta de origem.
SmallInt Int16
Hora TimeSpan
Hora com fuso horário TimeSpan
Timestamp Datetime
Timestamp With Time Zone Datetime
VarByte Byte[]
VarChar String
VarGraphic Não há suporte. Aplique conversão explícita na consulta de origem.
Xml Não há suporte. Aplique conversão explícita na consulta de origem.

Pesquisar propriedades de atividade

Para saber detalhes sobre as propriedades, verifique Pesquisar atividade.

Para obter uma lista dos armazenamentos de dados com suporte como coletores e fontes da atividade de cópia, confira os Armazenamentos de dados com suporte.