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/-) ① ②
Atividade de Pesquisa ① ②

(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:

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.

  1. 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:

  2. Procure por Teradata e selecione o conector 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 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:

Propriedade Descrição Necessá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 de Chaves 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:

Propriedade 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/D

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:

Propriedade Descrição Necessá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:

Propriedade Descrição Necessá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 Nonefor .
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.

Screenshot of partition options

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.

Scenario 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 a coluna da partição para recuperar dados apenas entre o intervalo inferior e superior.

Durante a execução, o serviço substitui ?AdfRangePartitionColumnName, e com o nome da coluna real e intervalos de valores para cada partição, ?AdfRangePartitionUpbounde ?AdfRangePartitionLowbound 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.
Integer 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.

Para obter uma lista de armazenamentos de dados suportados como fontes e coletores pela atividade de cópia, consulte Armazenamentos de dados suportados.