Mover dados da Teradata usando a Azure Data Factory

Nota

Este artigo aplica-se à versão 1 do Data Factory. Se estiver a utilizar a versão atual do serviço Data Factory, consulte o conector Teradata em V2.

Este artigo explica como utilizar a Atividade de Cópia na Fábrica de Dados Azure para mover dados de uma base de dados Teradata no local. Baseia-se no artigo de Atividades de Movimento de Dados, que apresenta uma visão geral do movimento de dados com a atividade da cópia.

Pode copiar dados de uma loja de dados Teradata no local para qualquer loja de dados de lavatórios suportados. Para obter uma lista de lojas de dados suportadas como pias pela atividade de cópia, consulte a tabela de lojas de dados suportadas. Atualmente, a fábrica de dados suporta apenas a transferência de dados de uma loja de dados Teradata para outras lojas de dados, mas não para transferir dados de outras lojas de dados para uma loja de dados Teradata.

Pré-requisitos

A fábrica de dados suporta a ligação a fontes teradatas no local através do Portal de Gestão de Dados. Consulte dados em movimento entre locais no local e artigo em nuvem para saber sobre o Gateway de Gestão de Dados e instruções passo a passo sobre a configuração do gateway.

Gateway é necessário mesmo que o Teradata esteja hospedado num Azure IaaS VM. Pode instalar o gateway no mesmo IaaS VM que a loja de dados ou num VM diferente, desde que o gateway possa ligar-se à base de dados.

Nota

Consulte os problemas de gateway de resolução de problemas para obter dicas sobre questões relacionadas com a ligação de resolução de problemas/gateways.

Versões e instalação suportadas

Para que o Gateway de Gestão de Dados se conecte à Base de Dados teradata, é necessário instalar o Fornecedor de Dados .NET para a versão 14 ou superior da Teradata no mesmo sistema que o Gateway de Gestão de Dados. A versão 12 e superior da Teradata são suportadas.

Introdução

Pode criar um pipeline com uma atividade de cópia que move dados de uma loja de dados cassandra no local, utilizando diferentes ferramentas/APIs.

  • A forma mais fácil de criar um oleoduto é utilizar o Copy Wizard. Ver Tutorial: Criar um pipeline utilizando o Copy Wizard para uma rápida passagem na criação de um oleoduto utilizando o assistente de dados Copy.
  • Também pode utilizar as seguintes ferramentas para criar um pipeline: Visual Studio, Azure PowerShell, Azure Resource Manager, .NET API e REST API. Consulte o tutorial de atividade de cópia para obter instruções passo a passo para criar um oleoduto com uma atividade de cópia.

Quer utilize as ferramentas ou APIs, executa os seguintes passos para criar um pipeline que transfere dados de uma loja de dados de origem para uma loja de dados de lavatórios:

  1. Crie serviços ligados para ligar as lojas de dados de entrada e saída à sua fábrica de dados.
  2. Crie conjuntos de dados para representar dados de entrada e saída para a operação de cópia.
  3. Crie um pipeline com uma atividade de cópia que leva um conjunto de dados como entrada e um conjunto de dados como uma saída.

Quando utiliza o assistente, as definições de JSON para estas entidades da Data Factory (serviços ligados, conjuntos de dados e o pipeline) são automaticamente criadas para si. Quando utiliza ferramentas/APIs (exceto .NET API), define estas entidades da Data Factory utilizando o formato JSON. Para obter uma amostra com definições JSON para entidades da Data Factory que são usadas para copiar dados de uma loja de dados Teradata no local, consulte o exemplo JSON: Copiar dados da teradata para a secção Azure Blob deste artigo.

As seguintes secções fornecem detalhes sobre as propriedades JSON que são usadas para definir entidades da Data Factory específicas para uma loja de dados Teradata:

Propriedades de serviço ligadas

A tabela a seguir fornece descrição para elementos JSON específicos do serviço ligado à Teradata.

Propriedade Descrição Obrigatório
tipo A propriedade tipo deve ser definida para: OnPremisesTeradata Yes
servidor Nome do servidor Teradata. Yes
authenticationType Tipo de autenticação usada para ligar à base de dados Teradata. Os valores possíveis são: Anónimo, Básico e Windows. Yes
nome de utilizador Especifique o nome do utilizador se estiver a utilizar a autenticação Básica ou o Windows. No
palavra-passe Especifique a palavra-passe para a conta de utilizador especificada para o nome de utilizador. No
gatewayName Nome do gateway que o serviço data factory deve usar para ligar à base de dados Teradata no local. Yes

Dataset properties (Propriedades do conjunto de dados)

Para obter uma lista completa de secções & propriedades disponíveis para definir conjuntos de dados, consulte o artigo Criar conjuntos de dados. Secções como estrutura, disponibilidade e política de um conjunto de dados JSON são semelhantes para todos os tipos de conjunto de dados (Azure SQL, Azure blob, Azure table, etc.).

A secção typeProperties é diferente para cada tipo de conjunto de dados e fornece informações sobre a localização dos dados na loja de dados. Atualmente, não existem propriedades tipo suportadas para o conjunto de dados Teradata.

Propriedades da atividade Copy

Para obter uma lista completa das secções & propriedades disponíveis para definir atividades, consulte o artigo Criar Pipelines. Propriedades como nome, descrição, tabelas de entrada e saída, e políticas estão disponíveis para todos os tipos de atividades.

Enquanto que as propriedades disponíveis na secção de tipos de atividade variam com cada tipo de atividade. Para a atividade copy, variam dependendo dos tipos de fontes e pias.

Quando a fonte é do tipo RelationalSource (que inclui Teradata), as seguintes propriedades estão disponíveis na secção de tiposproperias:

Propriedade Descrição Valores permitidos Necessário
consulta Utilize a consulta personalizada para ler dados. Cadeia de consulta SQL. Por exemplo: selecione * do MyTable. Yes

Exemplo JSON: Copiar dados de Teradata para Azure Blob

O exemplo a seguir fornece definições JSON de amostra que pode usar para criar um oleoduto utilizando o Visual Studio ou o Azure PowerShell. Mostram como copiar dados de Teradata para Azure Blob Storage. No entanto, os dados podem ser copiados para qualquer um dos lavatórios aqui indicados utilizando a Atividade de Cópia na Fábrica de Dados Azure.

A amostra tem as seguintes entidades de fábrica de dados:

  1. Um serviço ligado do tipo OnPremisesTeradata.
  2. Um serviço ligado do tipo AzureStorage.
  3. Um conjunto de dados de entrada do tipo RelacionalTable.
  4. Um conjunto de dados de saída do tipo AzureBlob.
  5. O pipeline com Copy Activity que utiliza RelationalSource e BlobSink.

A amostra copia dados de uma consulta resulta na base de dados teradata para uma bolha a cada hora. As propriedades JSON utilizadas nestas amostras são descritas em secções que seguem as amostras.

Como primeiro passo, configurar o portal de gestão de dados. As instruções estão nos dados móveis entre locais no local e artigo em nuvem.

Serviço ligado à Teradata:

{
    "name": "OnPremTeradataLinkedService",
    "properties": {
        "type": "OnPremisesTeradata",
        "typeProperties": {
            "server": "<server>",
            "authenticationType": "<authentication type>",
            "username": "<username>",
            "password": "<password>",
            "gatewayName": "<gatewayName>"
        }
    }
}

Serviço ligado ao armazenamento Azure Blob:

{
    "name": "AzureStorageLinkedService",
    "properties": {
        "type": "AzureStorageLinkedService",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>"
        }
    }
}

Conjunto de dados de entrada teradata:

A amostra pressupõe que criou uma tabela "MyTable" em Teradata e contém uma coluna chamada "timetamp" para dados da série de tempo.

Definição "externa": informa verdadeiramente o serviço Data Factory de que a tabela é externa à fábrica de dados e não é produzida por uma atividade na fábrica de dados.

{
    "name": "TeradataDataSet",
    "properties": {
        "published": false,
        "type": "RelationalTable",
        "linkedServiceName": "OnPremTeradataLinkedService",
        "typeProperties": {
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true,
        "policy": {
            "externalData": {
                "retryInterval": "00:01:00",
                "retryTimeout": "00:10:00",
                "maximumRetry": 3
            }
        }
    }
}

Conjunto de dados de saída Azure Blob:

Os dados são escritos para uma nova bolha a cada hora (frequência: hora, intervalo: 1). O caminho da pasta para a bolha é avaliado dinamicamente com base na hora de início da fatia que está a ser processada. O caminho da pasta utiliza partes do ano, mês, dia e horas da hora de início.

{
    "name": "AzureBlobTeradataDataSet",
    "properties": {
        "published": false,
        "location": {
            "type": "AzureBlobLocation",
            "folderPath": "mycontainer/teradata/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
            "format": {
                "type": "TextFormat",
                "rowDelimiter": "\n",
                "columnDelimiter": "\t"
            },
            "partitionedBy": [
                {
                    "name": "Year",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "yyyy"
                    }
                },
                {
                    "name": "Month",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "MM"
                    }
                },
                {
                    "name": "Day",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "dd"
                    }
                },
                {
                    "name": "Hour",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "HH"
                    }
                }
            ],
            "linkedServiceName": "AzureStorageLinkedService"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Pipeline com atividade de Copy:

O pipeline contém uma Atividade de Cópia que está configurada para utilizar os conjuntos de dados de entrada e saída e está programado para funcionar de hora a hora. Na definição JSON do gasoduto, o tipo de fonte é definido para RelationalSource e o tipo de pia é definido para BlobSink. A consulta SQL especificada para a propriedade de consulta seleciona os dados na hora passada para copiar.

{
    "name": "CopyTeradataToBlob",
    "properties": {
        "description": "pipeline for copy activity",
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "RelationalSource",
                        "query": "$$Text.Format('select * from MyTable where timestamp >= \\'{0:yyyy-MM-ddTHH:mm:ss}\\' AND timestamp < \\'{1:yyyy-MM-ddTHH:mm:ss}\\'', SliceStart, SliceEnd)"
                    },
                    "sink": {
                        "type": "BlobSink",
                        "writeBatchSize": 0,
                        "writeBatchTimeout": "00:00:00"
                    }
                },
                "inputs": [
                    {
                        "name": "TeradataDataSet"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureBlobTeradataDataSet"
                    }
                ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "name": "TeradataToBlob"
            }
        ],
        "start": "2014-06-01T18:00:00Z",
        "end": "2014-06-01T19:00:00Z",
        "isPaused": false
    }
}

Tipo de mapeamento para Teradata

Conforme mencionado no artigo de atividades de movimento de dados, a atividade Copy realiza conversões automáticas de tipo de origem para tipos de pia com a seguinte abordagem de 2 etapas:

  1. Converter de tipos de origem nativa para .NET tipo
  2. Converter de tipo .NET para tipo de pia nativa

Ao mover dados para Teradata, os seguintes mapeamentos são usados do tipo Teradata para .NET type.

Tipo de Base de Dados Teradata .NET Tipo de quadro
Char String
Clob String
Gráfico String
Rio VarChar String
VarGraphic String
Blobs Byte[]
Byte Byte[]
Rio VarByte Byte[]
BigInt Int64
ByteInt Int16
Decimal Decimal
Double (Duplo) Double (Duplo)
Número inteiro Int32
Número Double (Duplo)
PequenoInt Int16
Data Data e Hora
Hora TimeSpan
Tempo com fuso horário String
CarimboDeDataEHora DateTime
Relógio com fuso horário Início de execução de tempo de data
Dia do Intervalo TimeSpan
Intervalo dia a hora TimeSpan
Intervalo dia a minuto TimeSpan
Dia de Intervalo para Segundo TimeSpan
Hora do Intervalo TimeSpan
Hora do Intervalo ao Minuto TimeSpan
Hora do Intervalo para Segundo TimeSpan
Minuto de Intervalo TimeSpan
Minuto de intervalo para segundo TimeSpan
Intervalo Segundo TimeSpan
Ano de Intervalo String
Intervalo ano a mês String
Mês de Intervalo String
Período (Data) String
Período (Tempo) String
Período (Tempo com Fuso Horário) String
Period (Timetamp) String
Periodtamp with Time zone) String
Xml String

Fonte do mapa para afundar colunas

Para obter informações sobre as colunas de mapeamento em conjunto de dados de origem para colunas no conjunto de dados da pia, consulte as colunas de conjunto de dados de mapeamento na Azure Data Factory.

Leitura repetível de fontes relacionais

Ao copiar dados de lojas de dados relacionais, tenha em mente a repetibilidade para evitar resultados não intencionais. Na Azure Data Factory, pode repetir manualmente uma fatia. Também pode configurar a política de reagem para um conjunto de dados para que uma fatia seja re-executada quando ocorre uma falha. Quando uma fatia é reexame de qualquer forma, você precisa ter certeza de que os mesmos dados são lidos, não importa quantas vezes uma fatia é executada. Ver leitura repetível de fontes relacionais.

Performance e Afinação

Consulte copy Activity Performance & Guia de Afinação para conhecer os fatores-chave que impactam o desempenho do movimento de dados (Copy Activity) na Azure Data Factory e várias formas de otimizá-lo.