Copiar dados do Netezza usando o Azure Data Factory ou 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 no Azure Data Factory ou nos pipelines do Synapse Analytics para copiar dados do Netezza. O artigo baseia-se na Atividade de Cópia, que apresenta uma visão geral da Atividade de Cópia.

Gorjeta

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

Capacidades suportadas

Este conector Netezza é 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 que a Atividade de Cópia suporta como fontes e coletores, consulte Formatos e armazenamentos de dados suportados.

Netezza conector suporta cópia paralela da fonte. Consulte a seção Cópia paralela do Netezza para obter detalhes.

O serviço fornece um driver interno para habilitar a conectividade. Não é necessário instalar manualmente nenhum driver para usar esse conector.

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.

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. Consulte o tutorialCopiar atividade para obter instruções passo a passo para criar um pipeline com uma atividade de cópia.

Criar um serviço vinculado ao 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 em seu espaço de trabalho do Azure Data Factory ou Synapse e selecione Serviços Vinculados e clique em Novo:

  2. Procure Netezza e selecione o conector 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 de configuração do conector

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

Propriedades do serviço vinculado

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

Propriedade Descrição Necessário
tipo A propriedade type deve ser definida como Netezza. Sim
connectionString Uma cadeia de conexão ODBC para se conectar ao Netezza.
Você também pode colocar a senha no Cofre de Chaves do Azure e extrair a pwd configuração da cadeia de conexão. Consulte os seguintes exemplos e o artigo Armazenar credenciais no Cofre de Chaves do Azure com mais detalhes.
Sim
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, o Tempo de Execução de Integração do Azure padrão será usado. Não

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

Propriedade Descrição Necessário
Nível de Segurança O nível de segurança que o driver usa para a conexão com o armazenamento de dados. O driver suporta conexões SSL com autenticação unidirecional usando SSL versão 3.
Exemplo: SecurityLevel=preferredSecured. Os valores suportados são:
- Apenas unsecured (onlyUnSecured): O driver não usa SSL.
- Preferred unsecured (preferredUnSecured) (padrão): Se o servidor fornecer uma escolha, o driver não usará SSL.
- Preferred secured (preferredSecured): Se o servidor fornecer uma escolha, o driver usa 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 usado pelo servidor. Exemplo: CaCertFile=<cert path>; Sim, se o SSL estiver ativado

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 senha no Cofre da Chave do Azure

{
    "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 Netezza suporta.

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

Para copiar dados de Netezza, defina a propriedade type do conjunto de dados como NetezzaTable. As seguintes propriedades são suportadas:

Propriedade Descrição Necessário
tipo A propriedade type do conjunto de dados deve ser definida como: NetezzaTable Sim
esquema Nome do esquema. Não (se "consulta" na fonte da atividade for especificado)
tabela Nome da tabela. Não (se "consulta" na fonte da atividade for especificado)
tableName Nome da tabela com esquema. Esta propriedade é suportada para compatibilidade com versões anteriores. Use schema e table para nova carga de trabalho. Não (se "consulta" na fonte da atividade for especificado)

Exemplo

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

Copiar propriedades da atividade

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

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

Netezza como fonte

Gorjeta

Para carregar dados do Netezza de forma eficiente usando o particionamento de dados, saiba mais na seção Cópia paralela do Netezza .

Para copiar dados do Netezza, defina o tipo de origem em Copiar atividade como NetezzaSource. As seguintes propriedades são suportadas na seção Copiar fonte de atividade:

Propriedade Descrição Necessário
tipo A propriedade type da fonte Copy Activity deve ser definida como NetezzaSource. Sim
query Use a consulta SQL personalizada para ler 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: Nenhum (padrão), DataSlice, e DynamicRange.
Quando uma opção de partição está habilitada (ou seja, não None), o grau de paralelismo para carregar simultaneamente dados de um banco de dados Netezza é 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 no tipo inteiro que será usado pelo particionamento de intervalo para cópia paralela. Se não for especificado, a chave primária da tabela será detetada automaticamente e usada como coluna de partição.
Aplique 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. Veja o exemplo na seção Cópia paralela do Netezza .
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 Netezza .
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 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 de Netezza

O conector Netezza Data Factory fornece particionamento de dados embutido 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 na fonte Netezza 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 simultaneamente gerará e executará quatro consultas com base na opção e nas configurações de partição especificadas, e cada consulta recuperará uma parte dos dados do banco de dados Netezza.

Sugere-se que você habilite a cópia paralela com particionamento de dados, especialmente quando você carrega uma grande quantidade de dados do seu banco de dados Netezza. 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: Data Slice.

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

Propriedades da atividade de pesquisa

Para saber detalhes sobre as propriedades, verifique Atividade de pesquisa.

Para obter uma lista de armazenamentos de dados que a Atividade de Cópia suporta como fontes e coletores, consulte Formatos e armazenamentos de dados suportados.