Copiar dados do Netezza utilizando o Azure Data Factory ou 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 ou do Azure Synapse Analytics para copiar dados de uma tabela do Netezza. O artigo se baseia em Atividade Copy, que apresenta uma visão geral da atividade Copy.

Dica

Para o cenário de migração de dados do Netezza para o Azure, saiba mais em Migrar dados do servidor do Netezza local para o Azure.

Funcionalidades com suporte

Há suporte para o conector do Netezza 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 que o Copy Activity suporta como fontes e coletores, consulte Armazenamentos de dados e formatos compatíveis.

O conector do Netezza dá suporte à cópia paralela da origem. Confira a seção Cópia paralela do Netezza para obter detalhes.

O serviço fornece um driver interno para habilitar a conectividade. Você não precisa instalar manualmente nenhum driver para usar este conector.

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.

Introdução

Você pode criar um pipeline que usa uma atividade de cópia usando o SDK do .NET, o SDK do Python, o Azure PowerShell, a API REST ou um modelo do Azure Resource Manager. Confira o Tutorial de Atividade de Cópia para obter instruções passo a passo sobre a criação de um pipeline com uma atividade de cópia.

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

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

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

  2. Procure Netezza e escolha o conector do Netezza.

    Screenshot of the Netezza connector.

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

    Screenshot of linked service configuration for Netezza.

Detalhes da configuração do conector

As seções a seguir fornecem detalhes sobre propriedades que você pode usar para definir entidades específicas do conector Netezza.

Propriedades do serviço vinculado

As seguintes propriedades são suportadas para o serviço vinculado do Netezza:

Propriedade Descrição Obrigatório
type O tipo propriedade deve ser definida como Netezza. Sim
connectionString Uma cadeia de conexão ODBC para conectar-se ao Netezza.
Você também pode colocar uma senha no Azure Key Vault e extrair a configuração pwd da cadeia de conexão. Confira os exemplos a seguir e o artigo Armazenar credenciais no Azure Key Vault com mais detalhes.
Sim
connectVia O runtime de integração a ser usado para se conectar ao armazenamento de dados. Saiba mais na seção Pré-requisitos. Se não especificado, o Azure Integration Runtime padrão será usado. Não

Uma cadeia de conexão válida é Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>. A tabela a seguir descreve as propriedades mais que você pode definir:

Propriedade Descrição Obrigatório
SecurityLevel O nível de segurança que usa o driver para a conexão ao armazenamento de dados. O driver dá suporte para conexões SSL com autenticação unidirecional usando SSL versão 3.
Exemplo: SecurityLevel=preferredSecured. Os valores com suporte são:
- Apenas inseguro (onlyUnSecured): O driver não usa SSL.
- Preferencialmente não segura (preferredUnSecured) (padrão): se o servidor fornece uma opção, o driver não usa SSL.
- Preferencialmente segura (preferredSecured) : Se o servidor fornecer uma opção, o driver usará o SSL.
- Apenas protegido (onlySecured): O driver não se conecta a menos que uma conexão SSL esteja disponível.
Não
CaCertFile O caminho completo para o certificado SSL que é usado pelo servidor. Exemplo: CaCertFile=<cert path>; Sim, se o SSL estiver habilitado

Exemplo

{
    "name": "NetezzaLinkedService",
    "properties": {
        "type": "Netezza",
        "typeProperties": {
            "connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemplo: armazenar a senha no Azure Key Vault

{
    "name": "NetezzaLinkedService",
    "properties": {
        "type": "Netezza",
        "typeProperties": {
            "connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<user name>;",
            "pwd": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propriedades do conjunto de dados

Esta seção fornece uma lista de propriedades que o conjunto de dados do Netezza suporta.

Para obter uma lista completa de seções e propriedades que estão disponíveis para definir conjuntos de dados, consulte Conjuntos de Dados.

Para copiar dados do Netezza, defina as tipo propriedade do conjunto de dados como NetezzaTable. Há suporte para as seguintes propriedades:

Propriedade Descrição Obrigatório
type A propriedade type do conjunto de dados deve ser definida como: NetezzaTable Sim
esquema Nome do esquema. Não (se "query" na fonte da atividade for especificada)
tabela Nome da tabela. Não (se "query" na fonte da atividade for especificada)
tableName Nome da tabela com esquema. Essa propriedade é compatível com versões anteriores. Use schema e table para uma nova carga de trabalho. Não (se "query" na fonte da atividade for especificada)

Exemplo

{
    "name": "NetezzaDataset",
    "properties": {
        "type": "NetezzaTable",
        "linkedServiceName": {
            "referenceName": "<Netezza linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {}
    }
}

Propriedades da Atividade de Cópia

Esta seção fornece uma lista de propriedades que a fonte do Netezza suporta.

Para obter uma lista completa de seções e propriedades que estão disponíveis para definir atividades, consulte Pipelines.

Netezza como fonte

Dica

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

Para copiar dados do Netezza, defina as fonte tipo de atividade de cópia para NetezzaSource. As seguintes propriedades são suportadas na seção source da atividade de cópia:

Propriedade Descrição Obrigatório
type A propriedade tipo da origem da Atividade de Cópia deve ser configurada para NetezzaSource. Sim
Consulta Utiliza a consulta SQL personalizada para ler os dados. Exemplo: "SELECT * FROM MyTable" Não (se "tableName" no conjunto de dados for especificado)
partitionOptions Especifica as opções de particionamento de dados usadas para carregar dados do Netezza.
Os valores permitidos são: None (padrão), DataSlice e DynamicRange.
Quando uma opção de partição é habilitada (ou seja, não None), o grau de paralelismo para carregar dados simultaneamente de um banco de dados do Netezza é controlado pela configuração parallelCopies na atividade de cópia.
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 no tipo de inteiro que será usado pelo particionamento de intervalo 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.
Aplicar quando a opção de partição for DynamicRange. Se você usar uma consulta para recuperar os dados de origem, conecte ?AdfRangePartitionColumnName na cláusula WHERE. Confira o exemplo na seção Cópia paralela do Netezza.
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 obter um exemplo, confira a seção Cópia paralela do Netezza.
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 obter um exemplo, confira a seção Cópia paralela do Netezza.
Não

Exemplo:

"activities":[
    {
        "name": "CopyFromNetezza",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Netezza input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "NetezzaSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Cópia paralela do Netezza

O conector do Netezza Data Factory fornece particionamento de dados interno para copiar dados do Netezza 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 Netezza 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 do banco de dados do Netezza.

É recomendável habilitar a cópia paralela com o particionamento de dados, especialmente quando você carrega grandes quantidades de dados do banco de dados Netezza. 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 obter 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: fatia de dados.

Durante a execução, o serviço particiona automaticamente os dados com base nas fatias de dados internas do Netezza e copiam os dados por partições.
Carregue uma grande quantidade de dados usando uma consulta personalizada. Opção de partição: fatia de dados.
Consulta: SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause>.
Durante a execução, o serviço substitui ?AdfPartitionCount (com número de cópia paralela definido na atividade de cópia) e ?AdfDataSliceCondition pela lógica de partição da fatia de dados e envia para o Netezza.
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 Netezza.
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 a partição da fatia de dados

"source": {
    "type": "NetezzaSource",
    "query": "SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause>",
    "partitionOption": "DataSlice"
}

Exemplo: consulta com a partição do intervalo dinâmico

"source": {
    "type": "NetezzaSource",
    "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>"
    }
}

Pesquisar propriedades de atividades

Para saber detalhes sobre as propriedades, verifique Pesquisar atividade.

Para obter uma lista de armazenamentos de dados que o Copy Activity suporta como fontes e coletores, consulte Armazenamentos de dados e formatos compatíveis.