Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
APLICA-SE A:
Azure Data Factory
Azure Synapse Analytics
Sugestão
Data Factory em Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA incorporada e novas funcionalidades. Se és novo na integração de dados, começa pelo Fabric Data Factory. As cargas de trabalho existentes do ADF podem atualizar para o Fabric para aceder a novas capacidades em ciência de dados, análise em tempo real e relatórios.
Este artigo descreve como utilizar a atividade "Copy Activity" nos pipelines do Azure Data Factory e do Synapse Analytics para copiar dados para e da Base de Dados do Azure para PostgreSQL. E como usar o Fluxo de Dados para transformar dados no Base de Dados do Azure para PostgreSQL. Para saber mais, leia os artigos introdutórios para Azure Data Factory e Synapse Analytics.
Importante
A versão 2.0 do Base de Dados do Azure para PostgreSQL oferece suporte nativo melhorado para o Base de Dados do Azure para PostgreSQL. Se estiveres a usar a versão 1.0 da Base de Dados do Azure para PostgreSQL na tua solução, recomenda-te que atualizes o teu conector Base de Dados do Azure para PostgreSQL assim que possível.
Este conector é especializado para o serviço Base de Dados do Azure para PostgreSQL. Para copiar dados de um banco de dados PostgreSQL genérico localizado no local ou na nuvem, use o conector PostgreSQL.
Capacidades suportadas
Este conector Base de Dados do Azure para PostgreSQL suporta as seguintes capacidades:
| Capacidades suportadas | IR | Endpoint privado gerido | Versões suportadas pelo conector |
|---|---|---|---|
| atividade Copy (fonte/sumidouro) | (1) (2) | 1,0 & 2,0 | |
| Mapeamento do fluxo de dados (origem/destino) | (1) | 1,0 & 2,0 | |
| Atividade de Pesquisa | (1) (2) | 1,0 & 2,0 | |
| Atividade de script | (1) (2) | 2.0 |
(1) Runtime de integração Azure (2) Runtime de integração auto-hospedado
As três atividades funcionam em Base de Dados do Azure para PostgreSQL Single Server, Flexible Server e Azure Cosmos DB para PostgreSQL.
Importante
Base de Dados do Azure para PostgreSQL Single Server será retirado a 28 de março de 2025. Migre para o Servidor Flexível até essa data. Você pode consultar este artigo e as Perguntas frequentes para obter as diretrizes de migração.
Como Começar
Para executar a atividade de cópia com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:
- Ferramenta Copiar dados
- Portal do Azure
- .NET SDK
- Python SDK
- Azure PowerShell
- API REST
- Modelo do Azure Resource Manager
Criar um serviço ligado para a Base de Dados do Azure para PostgreSQL usando UI
Use os seguintes passos para criar um serviço ligado à base de dados Azure para PostgreSQL na interface do portal Azure.
Navegue até ao separador Gerir no seu espaço de trabalho Azure Data Factory ou Synapse e selecione Serviços Ligados, depois selecione Novo:
Procure por PostgreSQL e selecione a base de dados Azure para o conector PostgreSQL.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
Detalhes de configuração do conector
As secções seguintes oferecem detalhes sobre propriedades usadas para definir entidades Data Factory específicas do conector Base de Dados do Azure para PostgreSQL.
Propriedades do serviço vinculado
A versão do conector Base de Dados do Azure para PostgreSQL 2.0 suporta Transport Layer Security (TLS) 1.3 e múltiplos modos Secured Socket Layer (SSL). Consulte esta secção para atualizar a versão do seu conector do Base de Dados SQL do Azure da versão 1.0. Para obter os detalhes da propriedade, consulte as seções correspondentes.
Versão 2.0
As seguintes propriedades são suportadas para o serviço associado Base de Dados do Azure para PostgreSQL ao aplicar a versão 2.0:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type deve ser definida como: AzurePostgreSql. | Sim |
| versão | A versão que especificares. O valor é 2.0. |
Sim |
| tipo de autenticação | Selecione entre tipos de autenticação básica, principal de serviço, identidade gerenciada atribuída pelo sistema ou identidade gerenciada atribuída pelo usuário. | Sim |
| servidor | Especifica o nome do host e, opcionalmente, a porta em qual base de dados Base de Dados do Azure para PostgreSQL está a correr. | Sim |
| porta | A porta TCP do servidor Base de Dados do Azure para PostgreSQL. O valor predefinido é 5432. |
Não |
| base de dados | O nome da base de dados do Base de Dados do Azure para PostgreSQL a que se deve estabelecer ligação. | Sim |
| modo SSL | Controla se o SSL é usado, dependendo do suporte ao servidor. - Desativado: SSL está desativado. Se o servidor requer SSL, a conexão falha. - Permitir: Prefira conexões não SSL se o servidor permitir, mas permita conexões SSL. - Preferencial: Prefere ligações SSL se o servidor permitir, mas permite ligações sem SSL. - Obrigatório: A ligação falha se o servidor não suportar SSL. - Verify_ca: A ligação falha se o servidor não suportar SSL. Também verifica o certificado do servidor. - Verify_full: A ligação falha se o servidor não suportar SSL. Também verifica o certificado do servidor com o nome do host. Opções: Desativado (0) / Permitir (1) / Preferencial (2) (Padrão) / Obrigatório (3) / Verify_ca (4) / Verify_full (5) |
Não |
| ConecteVia | Essa propriedade representa o tempo de execução de integração a ser usado para se conectar ao repositório de dados. Pode utilizar o Azure Integration Runtime ou o Integration Runtime auto-hospedado (caso o seu armazenamento de dados esteja localizado numa rede privada). Se não for especificado, usa o Azure Integration Runtime padrão. | Não |
| Propriedades de conexão adicionais: | ||
| esquema | Define o caminho de pesquisa do esquema. | Não |
| Agrupamento | Se o pool de conexões deve ser usado. | Não |
| tempo de espera da conexão | O tempo de espera (em segundos) ao tentar estabelecer uma conexão antes de encerrar a tentativa e gerar um erro. | Não |
| commandTimeout | O tempo de espera (em segundos) ao tentar executar um comando antes de encerrar a tentativa e gerar um erro. Defina para zero para obter o infinito. | Não |
| trustServerCertificate | Se o certificado do servidor deve ser confiado sem validá-lo. | Não |
| tamanho do buffer de leitura | Determina o tamanho do buffer interno que o Npgsql usa durante a leitura. Aumentar o tamanho pode melhorar o desempenho ao transferir grandes valores do banco de dados. | Não |
| Fuso horário | Obtém ou define o fuso horário da sessão. | Não |
| codificação | Obtém ou define a codificação .NET para codificar/decodificar dados de strings PostgreSQL. | Não |
autenticação Básica
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| nome de utilizador | O nome de usuário com o qual se conectar. Não é necessário se estiver usando IntegratedSecurity. | Sim |
| palavra-passe | A senha com a qual se conectar. Não é necessário se estiver usando IntegratedSecurity. Marque este campo como SecureString para armazená-lo com segurança. Ou pode referenciar um segredo armazenado em Azure Key Vault. | Sim |
Exemplo:
{
"name": "AzurePostgreSqlLinkedService",
"properties": {
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": "5432",
"database": "<database name>",
"sslMode": 2,
"username": "<user name>",
"password": {
"type": "SecureString",
"value": "<password>"
}
}
}
}
Exemplo:
Guardar a palavra-passe em Azure Key Vault
{
"name": "AzurePostgreSqlLinkedService",
"properties": {
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": "5432",
"database": "<database name>",
"sslMode": 2,
"username": "<user name>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
}
}
}
Autenticação de identidade gerenciada atribuída pelo sistema
Uma fábrica de dados ou um espaço de trabalho Synapse pode ser associado a uma identidade gerida atribuída ao sistema que representa o serviço ao autenticar-se com outros recursos no Azure. Pode usar esta identidade gerida para a base de dados Azure para autenticação PostgreSQL. A fábrica designada ou o espaço de trabalho Synapse pode acessar e copiar dados de ou para seu banco de dados usando essa identidade.
Para usar a identidade gerenciada atribuída ao sistema, siga as etapas:
Uma fábrica de dados ou um espaço de trabalho Synapse pode ser associado a uma identidade gerenciada atribuída ao sistema. Saiba mais, Gerar identidade gerenciada atribuída ao sistema
Os dados do Azure para o PostgreSQL com a identidade gerida atribuída pelo sistema estão Ativados.
No seu recurso Base de Dados do Azure para PostgreSQL na seção Segurança
Selecione Autenticação
Selecione apenas autenticação Microsoft Entra ou método de autenticação PostgreSQL e Microsoft Entra.
Selecione + Adicionar administradores do Microsoft Entra
Adicione a identidade gerida atribuída pelo sistema ao recurso Azure Data Factory como um dos administradores da Microsoft Entra
Configure uma base de dados do Azure para o serviço vinculado PostgreSQL.
Exemplo:
{
"name": "AzurePostgreSqlLinkedService",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"annotations": [],
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": 5432,
"database": "<database name>",
"sslMode": 2,
"authenticationType": "SystemAssignedManagedIdentity"
}
}
}
Observação
Esse tipo de autenticação não é suportado no tempo de execução de integração auto-hospedado.
Autenticação de identidade gerenciada atribuída pelo usuário
Uma fábrica de dados ou um espaço de trabalho Synapse pode ser associado a uma identidade gerida Atribuída pelo utilizador que representa o serviço ao autenticar com outros recursos em Azure. Pode usar esta identidade gerida para a base de dados Azure para autenticação PostgreSQL. A fábrica designada ou o espaço de trabalho Synapse pode acessar e copiar dados de ou para seu banco de dados usando essa identidade.
Para usar a autenticação de identidade gerenciada atribuída pelo usuário, além das propriedades genéricas descritas na seção anterior, especifique as seguintes propriedades:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| credencial | Especifique a identidade gerenciada atribuída pelo usuário como o objeto de credencial. | Sim |
Você também precisa seguir as etapas:
Certifique-se de criar um recurso Identidade Gerida Atribuída pelo Utilizador no portal da Azure. Para saber mais, vá para Gerenciar identidades gerenciadas atribuídas pelo usuário
Atribui a User-assigned Managed Identity à tua base de dados de Azure para o recurso PostgreSQL
Na sua base de dados Azure para o recurso de servidor PostgreSQL, em Security
Selecione Autenticação
Verifique se o método de autenticação é apenas autenticação Microsoft Entra ou autenticação PostgreSQL e Microsoft Entra
Selecione o link + Adicionar Administradores Microsoft Entra e selecione a identidade gerida atribuída pelo utilizador.
Atribua a Identidade Gerida Atribuída pelo Utilizador ao teu recurso Azure Data Factory
Configure uma base de dados Azure para o serviço ligado PostgreSQL.
Exemplo:
{
"name": "AzurePostgreSqlLinkedService",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"annotations": [],
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": 5432,
"database": "<database name>",
"sslMode": 2,
"authenticationType": "UserAssignedManagedIdentity",
"credential": {
"referenceName": "<your credential>",
"type": "CredentialReference"
}
}
}
}
Autenticação do Service Principal
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| nome de utilizador | O nome para exibição da entidade de serviço | Sim |
| inquilino | O inquilino onde está localizado o servidor Base de Dados do Azure para PostgreSQL | Sim |
| ID do Serviço Principal | ID do aplicativo da entidade de serviço | Sim |
| Tipo de Credencial do Principal de Serviço | Selecione se o certificado da entidade de serviço ou a chave da entidade de serviço é o método de autenticação desejado - ServicePrincipalCert: Defina como certificado de entidade de serviço para certificado de entidade de serviço. - ServicePrincipalKey: Defina como chave do principal do serviço para autenticação pela chave do principal do serviço. |
Sim |
| chavePrincipalDoServiço | Valor secreto do cliente. Usado quando a chave principal de serviço é selecionada | Sim |
| azureCloudType | Selecione o tipo de nuvem do seu servidor do Banco de Dados Azure para PostgreSQL | Sim |
| serviçoPrincipalEmbeddedCert | Arquivo de certificado da entidade de serviço | Sim |
| servicePrincipalEmbeddedCertPassword | Palavra-passe do certificado da entidade de serviço, quando necessário | Não |
Exemplo:
Chave da entidade de serviço
{
"name": "AzurePostgreSqlLinkedService",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"annotations": [],
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": 5432,
"database": "<database name>",
"sslMode": 2,
"username": "<service principal name>",
"authenticationType": "<authentication type>",
"tenant": "<tenant>",
"servicePrincipalId": "<service principal ID>",
"azureCloudType": "<azure cloud type>",
"servicePrincipalCredentialType": "<service principal type>",
"servicePrincipalKey": "<service principal key>"
}
}
}
Exemplo:
Certificado de principal de serviço
{
"name": "AzurePostgreSqlLinkedService",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"annotations": [],
"type": "AzurePostgreSql",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"port": 5432,
"database": "<database name>",
"sslMode": 2,
"username": "<service principal name>",
"authenticationType": "<authentication type>",
"tenant": "<tenant>",
"servicePrincipalId": "<service principal ID>",
"azureCloudType": "<azure cloud type>",
"servicePrincipalCredentialType": "<service principal type>",
"servicePrincipalEmbeddedCert": "<service principal certificate>",
"servicePrincipalEmbeddedCertPassword": "<service principal embedded certificate password>"
}
}
}
Observação
A autenticação Microsoft Entra ID usando principal de serviço e identidade gerida atribuída pelo utilizador é suportada na versão de execução de integração auto-hospedada 5.50 ou superior.
Versão 1.0
As seguintes propriedades são suportadas para o serviço vinculado Base de Dados do Azure para PostgreSQL ao aplicar a versão 1.0:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type deve ser definida como: AzurePostgreSql. | Sim |
| versão | A versão que especificares. O valor é 1.0. |
Sim |
| string de conexão | Uma cadeia de conexão Npgsql para ligar ao Base de Dados do Azure para PostgreSQL. Também pode colocar uma palavra-passe no Azure Key Vault e extrair a configuração password da cadeia de ligação. Consulte os seguintes exemplos e armazene as credenciais no Azure Key Vault para mais detalhes. |
Sim |
| ConecteVia | Essa propriedade representa o tempo de execução de integração a ser usado para se conectar ao repositório de dados. Pode utilizar o Azure Integration Runtime ou o Integration Runtime auto-hospedado (caso o seu armazenamento de dados esteja localizado numa rede privada). Se não for especificado, usa o Azure Integration Runtime padrão. | Não |
Um cadeia de ligação típico é host=<server>.postgres.database.azure.com;database=<database>;port=<port>;uid=<username>;password=<password>. Aqui estão mais propriedades que você pode definir de acordo com o seu caso:
| Propriedade | Descrição | Opções | Obrigatório |
|---|---|---|---|
| Método de criptografia (EM) | O método que o driver usa para criptografar dados enviados entre o driver e o servidor de banco de dados. Por exemplo, EncryptionMethod=<0/1/6>; |
0 (Sem criptografia) (padrão) / 1 (SSL) / 6 (RequestSSL) | Não |
| ValidateServerCertificate (VSC) | Determina se o driver valida o certificado enviado pelo servidor de banco de dados quando a criptografia SSL está habilitada (Método de Criptografia=1). Por exemplo, ValidateServerCertificate=<0/1>; |
0 (Desativado) (Padrão) / 1 (Habilitado) | Não |
Exemplo:
{
"name": "AzurePostgreSqlLinkedService",
"properties": {
"type": "AzurePostgreSql",
"version": "1.0",
"typeProperties": {
"connectionString": "host=<server>.postgres.database.azure.com;database=<database>;port=<port>;uid=<username>;password=<password>"
}
}
}
Exemplo:
Guardar a palavra-passe em Azure Key Vault
{
"name": "AzurePostgreSqlLinkedService",
"properties": {
"type": "AzurePostgreSql",
"version": "1.0",
"typeProperties": {
"connectionString": "host=<server>.postgres.database.azure.com;database=<database>;port=<port>;uid=<username>;",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
}
}
}
Propriedades do conjunto de dados
Para obter uma lista completa de seções e propriedades disponíveis para definir conjuntos de dados, consulte Conjuntos de dados. Esta secção fornece uma lista de propriedades que o Base de Dados do Azure para PostgreSQL suporta em conjuntos de dados.
Para copiar dados de Base de Dados do Azure para PostgreSQL, defina a propriedade de tipo do conjunto de dados como AzurePostgreSqlTable. As seguintes propriedades são suportadas:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type do conjunto de dados deve ser definida como AzurePostgreSqlTable. | Sim |
| esquema | Nome do esquema. | Não (caso "consulta" esteja especificada na fonte da atividade) |
| tabela | Nome da tabela/vista. | Não (caso "consulta" esteja especificada na fonte da atividade) |
| nome da tabela | Nome da tabela. Esta propriedade é suportada para compatibilidade com versões anteriores. Para nova carga de trabalho, use schema e table. |
Não (caso "consulta" esteja especificada na fonte da atividade) |
Exemplo:
{
"name": "AzurePostgreSqlDataset",
"properties": {
"type": "AzurePostgreSqlTable",
"linkedServiceName": {
"referenceName": "<AzurePostgreSql linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
}
}
}
Propriedades da atividade de cópia
Para obter uma lista completa de seções e propriedades disponíveis para definir atividades, consulte Pipelines e atividades. Esta secção fornece uma lista de propriedades suportadas por uma fonte do Base de Dados do Azure para PostgreSQL.
Azure Database for PostgreSQL como fonte
Para copiar dados de Base de Dados do Azure para PostgreSQL, defina o tipo de origem na atividade de cópia para AzurePostgreSqlSource. As seguintes propriedades são suportadas na seção de origem da atividade de cópia:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type da fonte de atividade de cópia deve ser definida como AzurePostgreSqlSource | Sim |
| consulta | Utilize a consulta SQL personalizada para ler os dados. Por exemplo: SELECT * FROM mytable ou SELECT * FROM "MyTable". Observação: no PostgreSQL, o nome da entidade é tratado como sem distinção entre maiúsculas e minúsculas se não for citado. |
Não (se a propriedade tableName no conjunto de dados for especificada) |
| tempo de espera da consulta | O tempo de espera antes de encerrar a tentativa de executar um comando e gerar um erro, o padrão é de 120 minutos. Se o parâmetro for definido para essa propriedade, os valores permitidos serão de intervalo de tempo, como "02:00:00" (120 minutos). Para obter mais informações, consulte CommandTimeout. | Não |
| opçõesDePartição | Especifica as opções de particionamento de dados usadas para carregar dados do Base de Dados SQL do Azure. Os valores permitidos são: None (padrão), PhysicalPartitionsOfTable e DynamicRange. Quando uma opção de partição está ativada (ou seja, não None), o grau de paralelismo para carregar simultaneamente dados de um Base de Dados SQL do Azure é controlado pela definição parallelCopies na atividade de cópia. |
Não |
| definições de partição | Especifique o grupo de configurações para particionamento de dados. Aplique quando a opção de partição não for None. |
Não |
Em partitionSettings: |
||
| nomes de partições | A lista de partições físicas que precisam ser copiadas. Aplique quando a opção de partição for PhysicalPartitionsOfTable. Se utilizar uma consulta para recuperar os dados de origem, insira ?AdfTabularPartitionName na cláusula WHERE. Para um exemplo, veja a cópia paralela na secção Parallel copy from Base de Dados do Azure para PostgreSQL. |
Não |
| nomeDaColunaDePartição | Especifique o nome da coluna de origem do tipo inteiro ou data/datetime (int, smallint, bigint, date, timestamp without time zone, timestamp with time zone, ou time without time zone) 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 utilizar uma consulta para recuperar os dados de origem, insira ?AdfRangePartitionColumnName na cláusula WHERE. Para um exemplo, veja a secção Cópia Paralela do Azure Database para PostgreSQL. |
Não |
| limiteSuperiorDePartição | O valor máximo da coluna de partição para exportar dados. Aplique quando a opção de partição for DynamicRange. Se utilizar uma consulta para recuperar os dados de origem, insira ?AdfRangePartitionUpbound na cláusula WHERE. Para um exemplo, veja a cópia paralela na secção Base de Dados do Azure para PostgreSQL. |
Não |
| limiteInferiorDaPartição | O valor mínimo da coluna de partição para copiar dados. Aplique quando a opção de partição for DynamicRange. Se utilizar uma consulta para recuperar os dados de origem, insira ?AdfRangePartitionLowbound na cláusula WHERE. Para um exemplo, veja a secção Cópia Paralela de Base de Dados do Azure para PostgreSQL. |
Não |
Exemplo:
"activities":[
{
"name": "CopyFromAzurePostgreSql",
"type": "Copy",
"inputs": [
{
"referenceName": "<AzurePostgreSql input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzurePostgreSqlSource",
"query": "<custom query e.g. SELECT * FROM mytable>",
"queryTimeout": "00:10:00"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Base de Dados do Azure para PostgreSQL como alvo
Para copiar dados para Base de Dados do Azure para PostgreSQL, defina o tipo de sink na atividade de cópia para SqlSink. As seguintes propriedades são suportadas na seção coletor de atividade de cópia:
| Propriedade | Descrição | Obrigatório | Versão de suporte para conectores |
|---|---|---|---|
| tipo | A propriedade type do coletor de atividade de cópia deve ser definida como AzurePostgreSQLSink. | Sim | Versão 1.0 & Versão 2.0 |
| PreCopyScript | Especifique uma consulta SQL para a atividade de cópia a executar antes de escrever dados no Base de Dados do Azure para PostgreSQL em cada execução. Você pode usar essa propriedade para limpar os dados pré-carregados. | Não | Versão 1.0 & Versão 2.0 |
| writeMethod | O método usado para escrever dados no Base de Dados do Azure para PostgreSQL. Os valores permitidos são: CopyCommand (padrão, que é mais eficiente), BulkInsert e Upsert (somente versão 2.0). |
Não | Versão 1.0 & Versão 2.0 |
| upsertSettings | Especifique o grupo de configurações para o comportamento de gravação. Aplique quando a opção WriteBehavior estiver configurada para Upsert. |
Não | Versão 2.0 |
Em upsertSettings: |
|||
| Teclas | Especifique os nomes das colunas para identificação única das linhas. Uma única chave ou uma série de chaves podem ser usadas. As chaves devem ser uma chave primária ou uma coluna exclusiva. Se não for especificado, a chave primária será usada. | Não | Versão 2.0 |
| writeBatchSize | O número de linhas carregadas no Base de Dados do Azure para PostgreSQL por lote. O valor permitido é um número inteiro que representa o número de linhas. |
Não (o padrão é 1.000.000) | Versão 1.0 & Versão 2.0 |
| writeBatchTimeout | Aguarde o tempo para que a operação de inserção em lote seja concluída antes de atingir o tempo limite. Os valores permitidos são cadeias de caracteres Timespan. Um exemplo é 00:30:00 (30 minutos). |
Não (o padrão é 00:30:00) | Versão 1.0 & Versão 2.0 |
Exemplo 1: Comando Copiar
"activities":[
{
"name": "CopyToAzureDatabaseForPostgreSQL",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure PostgreSQL output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzurePostgreSqlSink",
"preCopyScript": "<custom SQL script>",
"writeMethod": "CopyCommand",
"writeBatchSize": 1000000
}
}
}
]
Exemplo 2: Inserir ou atualizar dados (Upsert)
"activities":[
{
"name": "CopyToAzureDatabaseForPostgreSQL",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure PostgreSQL output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzurePostgreSQLSink",
"writeMethod": "Upsert",
"upsertSettings": {
"keys": [
"<column name>"
]
},
}
}
}
]
Atualizar ou inserir dados
A função de cópia suporta nativamente operações de upsert. Para executar um upsert, o usuário deve fornecer coluna(s) de chave que são chaves primárias ou colunas exclusivas. Se o usuário não fornecer coluna(s) de chave, então a(s) coluna(s) de chave primária na tabela de coletor serão usadas. A Atividade de Cópia atualizará a(s) coluna(s) não-chave(s) na tabela do coletor onde o(s) valor(es) da(s) coluna(s) chave(s) corresponde(m) aos da tabela de origem; caso contrário, inserirá novos dados.
Cópia paralela do Base de Dados do Azure para PostgreSQL
O conector do Base de Dados do Azure para PostgreSQL em atividades de cópia oferece particionamento de dados embutido para permitir a cópia de dados em paralelo. Você pode encontrar opções de particionamento de dados na guia Origem da atividade de cópia.
Quando ativas a cópia particionada, a atividade de cópia executa consultas paralelas na tua fonte do Base de Dados do Azure para PostgreSQL para carregar os dados por partições. O grau de paralelismo é controlado pela configuração parallelCopies na atividade de cópia. Por exemplo, se definir parallelCopies como quatro, o serviço gera e executa simultaneamente quatro consultas com base na opção de partição e definições especificadas, e cada consulta recupera uma parte dos dados do seu Base de Dados do Azure para PostgreSQL.
Recomenda-se ativar a cópia paralela com particionamento de dados, especialmente quando carrega grandes quantidades de dados do seu Base de Dados do Azure para PostgreSQL. A seguir estão sugeridas configurações para diferentes cenários. Ao copiar dados para o armazenamento de dados baseado em arquivo, a recomendação é 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.
| Cenário | Configurações sugeridas |
|---|---|
| Carga completa a partir de uma tabela grande, com partições físicas. |
Opção de partição: Partições físicas da tabela. Durante a execução, o serviço deteta automaticamente as partições físicas e copia os dados por partições. |
| Carga completa de uma tabela grande, sem partições físicas, mas com uma coluna inteira para particionamento de dados. |
Opções de partição: Partição de intervalo dinâmico. Coluna de partição: especifique a coluna usada para particionar dados. Se não for especificado, a coluna de chave primária será usada. |
| Carregue uma grande quantidade de dados usando uma consulta personalizada, com partições físicas. |
Opção de partição: Partições físicas da tabela. Consulta: SELECT * FROM ?AdfTabularPartitionName WHERE <your_additional_where_clause>.Nome da partição: especifique um ou mais nomes de partição dos quais copiar dados. Se não for especificado, o serviço detetará automaticamente as partições físicas na tabela especificada no conjunto de dados PostgreSQL. Durante a execução, o serviço substitui ?AdfTabularPartitionName pelo nome real da partição e envia para Base de Dados do Azure para PostgreSQL. |
| Carregue uma grande quantidade de dados usando uma consulta personalizada, sem partições físicas, mas com uma coluna de inteiro para particionamento de dados. |
Opções de partição: Partição de intervalo dinâmico. Consulta: SELECT * FROM ?AdfTabularPartitionName 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 a coluna com tipo de dados inteiro ou data/hora. 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, ?AdfRangePartitionUpbound e ?AdfRangePartitionLowbound pelos intervalos reais de nomes e valores das colunas para cada partição, e envia para Base de Dados do Azure para PostgreSQL. Por exemplo, se a coluna de partição "ID" estiver 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 quatro partições. Os seus IDs situam-se entre [1,20], [21, 40], [41, 60] e [61, 80], respetivamente. |
Práticas recomendadas para carregar dados com a opção de partição:
- Escolha uma coluna distinta como coluna de partição (como chave primária ou chave exclusiva) para evitar distorção de dados.
- Se a tabela tiver partição incorporada, use a opção de partição "Partições físicas da tabela" para obter um melhor desempenho.
- Se usar Azure Integration Runtime para copiar dados, pode definir "Unidades de Integração de Dados (DIU)" (>4) maiores para utilizar mais recursos computacionais. Verifique os cenários aplicáveis lá.
- "Grau de paralelismo de cópia controla os números de partição; definir um número muito grande às vezes prejudica o desempenho." Recomendo definir este número como (DIU ou número de nós IR auto-hospedados) * (2 a 4).
Exemplo: carga completa de tabela grande com partições físicas
"source": {
"type": "AzurePostgreSqlSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
Exemplo: consulta com partição de intervalo dinâmico
"source": {
"type": "AzurePostgreSqlSource",
"query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>",
"partitionOption": "DynamicRange",
"partitionSettings": {
"partitionColumnName": "<partition_column_name>",
"partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
"partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
}
}
Mapeando propriedades de fluxo de dados
Ao transformar dados no mapeamento do fluxo de dados, pode ler e escrever em tabelas do Base de Dados do Azure para PostgreSQL. Para obter mais informações, consulte a transformação de origem e transformação de destino no mapeamento de fluxos de dados. Pode escolher usar um conjunto de dados Base de Dados do Azure para PostgreSQL ou um conjunto de dados inline como tipo de origem e de destino.
Observação
Atualmente, apenas a autenticação básica é suportada tanto para as versões V1 como V2 do conector Base de Dados do Azure para PostgreSQL em Mapeamento de Fluxos de Dados.
Transformação da fonte
A tabela abaixo lista as propriedades suportadas pelo Base de Dados do Azure para PostgreSQL source. Você pode editar essas propriedades na guia Opções de origem .
| Nome | Descrição | Obrigatório | Valores permitidos | Propriedade do script de fluxo de dados |
|---|---|---|---|---|
| Tabela | Se você selecionar Tabela como entrada, o fluxo de dados buscará todos os dados da tabela especificada no conjunto de dados. | Não | - |
(apenas para conjunto de dados integrado) nome da tabela |
| Pergunta | Se você selecionar Consulta como entrada, especifique uma consulta SQL para buscar dados da origem, que substituirá qualquer tabela especificada no conjunto de dados. Usar consultas é uma ótima maneira de reduzir linhas para testes ou pesquisas. A cláusula Order By não é suportada, mas você pode definir uma instrução SELECT FROM completa. Você também pode usar funções de tabela definidas pelo usuário. select * from udfGetData() é um UDF em SQL que retorna uma tabela que você pode usar no fluxo de dados. Exemplo de consulta: select * from mytable where customerId > 1000 and customerId < 2000 ou select * from "MyTable". Observação: no PostgreSQL, o nome da entidade é tratado como sem distinção entre maiúsculas e minúsculas se não for citado. |
Não | Cordão | consulta |
| Nome do esquema | Se você selecionar Procedimento armazenado como entrada, especifique um nome de esquema do procedimento armazenado ou selecione Atualizar para solicitar que o serviço descubra os nomes do esquema. | Não | Cordão | nomeDoEsquema |
| Procedimento armazenado | Se você selecionar Procedimento armazenado como entrada, especifique um nome do procedimento armazenado para ler dados da tabela de origem ou selecione Atualizar para solicitar que o serviço descubra os nomes dos procedimentos. | Sim (se você selecionar Procedimento armazenado como entrada) | Cordão | nome procedimento |
| Parâmetros do procedimento | Se você selecionar Procedimento armazenado como entrada, especifique quaisquer parâmetros de entrada para o procedimento armazenado na ordem definida no procedimento ou selecione Importar para importar todos os parâmetros do procedimento usando o formulário @paraName. |
Não | Matriz | Insumos |
| Tamanho do lote | Especifique um tamanho de lote para fragmentar dados grandes em lotes. | Não | Número inteiro | tamanho de batch |
| Nível de isolamento | Escolha um dos seguintes níveis de isolamento: - Ler Comprometido - Ler Não confirmado (padrão) - Leitura repetível - Serializável - Nenhum (ignorar o nível de isolamento) |
Não | LEITURA_CONFIRMADA READ_UNCOMMITTED (Leitura Não Confirmada) Leitura Repetível SERIALIZÁVEL NENHUM |
Nível de isolamento |
Exemplo de script de origem do Base de Dados do Azure para PostgreSQL
Quando usa o Base de Dados do Azure para PostgreSQL como tipo de fonte, o script de fluxo de dados associado é:
source(allowSchemaDrift: true,
validateSchema: false,
isolationLevel: 'READ_UNCOMMITTED',
query: 'select * from mytable',
format: 'query') ~> AzurePostgreSQLSource
Transformação do lavatório
A tabela abaixo lista as propriedades suportadas pelo Base de Dados do Azure para PostgreSQL sink. Você pode editar essas propriedades no separador Opções do Sink.
| Nome | Descrição | Obrigatório | Valores permitidos | Propriedade do script de fluxo de dados |
|---|---|---|---|---|
| Método de atualização | Especifique quais operações são permitidas no destino do banco de dados. O padrão é permitir apenas inserções. Para atualizar, inserir ou excluir linhas, uma transformação Alter row é necessária para marcar linhas para essas ações. |
Sim |
true ou false |
eliminável inserível atualizável Inserção-Atualização |
| Colunas-chave | Para atualizações, upserts e exclusões, as colunas de chave devem ser definidas para determinar qual linha alterar. O nome da coluna que escolher como chave é usado como parte da atualização subsequente, inserção/atualização e exclusão. Portanto, você deve escolher uma coluna que existe no mapeamento de coletor. |
Não | Matriz | Teclas |
| Ignorar colunas chave | Se não desejar escrever o valor na coluna-chave, selecione "Ignorar a escrita das colunas-chave". | Não |
true ou false |
ignorarEscritasChave |
| Ação de tabela | Determina se todas as linhas da tabela de destino devem ser recriadas ou removidas antes de escrever. - Nenhuma: Nenhuma ação é feita na tabela. - Recriar: A tabela é descartada e recriada. Necessário caso crie uma nova tabela de forma dinâmica. - Truncate: Todas as linhas da tabela de destino são removidas. |
Não |
true ou false |
recriar truncar |
| Tamanho do lote | Especifique quantas linhas estão sendo escritas em cada lote. Lotes maiores melhoram a compactação e a otimização da memória, mas correm o risco de exceções de falta de memória ao armazenar dados em cache. | Não | Número inteiro | tamanho de batch |
| Selecionar esquema de banco de dados do usuário | Por padrão, uma tabela temporária é criada sob o esquema de coletor como preparação. Como alternativa, você pode desmarcar a opção Usar esquema de coletor e, em vez disso, especificar um nome de esquema sob o qual o Data Factory cria uma tabela de preparo para carregar dados upstream e limpá-los automaticamente após a conclusão. Verifique se você tem permissão para criar tabela no banco de dados e alterar permissão no esquema. | Não | Cordão | nomeDoEsquemaDeTransição |
| Scripts pré e pós SQL | Especifique scripts SQL de várias linhas que serão executados antes (pré-processamento) e depois que os dados (pós-processamento) forem gravados no banco de dados do coletor. | Não | Cordão | pré-SQLs postSQLs |
Sugestão
- Divida scripts de um único lote que contêm vários comandos em múltiplos lotes.
- Somente instruções DDL (Data Definition Language) e DML (Data Manipulation Language) que retornam uma contagem de atualização simples podem ser executadas como parte de um lote. Saiba mais em Executando operações em lote
Habilitar extração incremental: use esta opção para configurar o ADF para processar apenas as linhas que mudaram desde a última execução do pipeline.
Coluna incremental: Ao usar o recurso de extração incremental, deve-se escolher a coluna de data/hora ou a coluna numérica que se deseja usar como marca d'água na tabela de origem.
Comece a ler desde o início: definir essa opção com extração incremental instrui o ADF a ler todas as linhas na primeira execução de um pipeline com a extração incremental ativada.
Exemplo de script de saída do Azure Database para PostgreSQL
Quando usa o Base de Dados do Azure para PostgreSQL como tipo sink, o script de fluxo de dados associado é:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:false,
insertable:true,
updateable:true,
upsertable:true,
keys:['keyColumn'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> AzurePostgreSqlSink
Atividade de script
Importante
A atividade de script só é suportada no conector da versão 2.0.
Importante
Não há suporte para instruções de múltiplas consultas usando parâmetros de saída. É recomendável dividir todas as consultas de saída em blocos de script separados dentro da mesma atividade de script ou diferente.
Não há suporte para declarações de múltiplas consultas usando parâmetros posicionais. É recomendável dividir todas as consultas posicionais em blocos de script separados dentro da mesma atividade de script ou diferente.
Para obter mais informações sobre a atividade de script, consulte Atividade de script.
Propriedades da atividade de consulta
Para obter mais informações sobre as propriedades, consulte Atividade de pesquisa.
Atualizar o conector do Base de Dados do Azure para PostgreSQL
Na página Editar serviço vinculado , selecione 2.0 em Versão e configure o serviço vinculado consultando Propriedades do serviço vinculado versão 2.0.
Conteúdos relacionados
Para obter uma lista de armazenamentos de dados suportados como fontes e coletores pela atividade de cópia, consulte Armazenamentos de dados suportados.