Compartilhar via


plug-in postgresql_request

Aplica-se a: ✅Microsoft FabricAzure Data Explorer

O postgresql_request plug-in envia uma consulta SQL para um ponto de extremidade de rede do Azure PostgreSQL Server e retorna o primeiro conjunto de linhas nos resultados. A consulta pode retornar mais de um conjunto de linhas, mas apenas o primeiro conjunto de linhas é disponibilizado para o restante da consulta Kusto.

O plug-in é invocado com o evaluate operador.

Importante

O postgresql_request plug-in está desabilitado por padrão. Para habilitar o plug-in, execute o .enable plugin postgresql_request comando. Para ver quais plug-ins estão ativados, use .show plugin comandos de gerenciamento.

Sintaxe

evaluatepostgresql_request ( ConnectionString , SqlQuery [ , SqlParameters] ) [: Esquema de saída]

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
ConnectionString string ✔️ A cadeia de conexão que aponta para o ponto de extremidade de rede do PostgreSQL Server. Consulte autenticação e como especificar o ponto de extremidade de rede.
SqlQuery string ✔️ A consulta que deve ser executada no ponto de extremidade SQL. Deve retornar um ou mais conjuntos de linhas. Somente o primeiro conjunto é disponibilizado para o restante da consulta.
Parâmetros SQL dynamic Um objeto de recipiente de propriedades que contém pares de chave-valor para passar como parâmetros junto com a consulta.
Esquema de saída Os nomes e tipos das colunas esperadas da saída do postgresql_request plug-in.

Sintaxe: ( ColumnName : ColumnType [, ...])

Observação

  • Especificar o OutputSchema é altamente recomendado, pois permite que o plug-in seja usado em cenários que, de outra forma, não funcionariam sem ele, como uma consulta entre clusters. O OutputSchema também pode habilitar várias otimizações de consulta.
  • Um erro será gerado se o esquema de tempo de execução do primeiro conjunto de linhas retornado pelo ponto de extremidade de rede SQL não corresponder ao esquema OutputSchema .

Autenticação e autorização

Para autorizar um ponto de extremidade de rede do PostgreSQL Server, você deve especificar as informações de autorização na cadeia de conexão. O método de autorização suportado é por meio de nome de usuário e senha.

Definir política de texto explicativo

O plug-in faz chamadas para o banco de dados PostgreSQL. Verifique se a política de texto explicativo do cluster habilita chamadas do tipo postgresql para o PostgreSqlDbUri de destino.

O exemplo a seguir mostra como definir a política de texto explicativo para bancos de dados PostgreSQL. Recomendamos restringir a política de texto explicativo a pontos de extremidade específicos (my_endpoint1, my_endpoint2).

[
  {
    "CalloutType": "postgresql",
    "CalloutUriRegex": "my_endpoint1\\.postgres\\.database\\.azure\\.com",
    "CanCall": true
  },
  {
    "CalloutType": "postgresql",
    "CalloutUriRegex": "my_endpoint2\\.postgres\\.database\\.azure\\.com",
    "CanCall": true
  }
]

O exemplo a seguir mostra um .alter callout policy comando para postgresql CalloutType:

.alter cluster policy callout @'[{"CalloutType": "postgresql", "CalloutUriRegex": "\\.postgresql\\.database\\.azure\\.com", "CanCall": true}]'

Nome de usuário e autenticação de senha

O postgresql_request plug-in só dá suporte à autenticação de nome de usuário e senha para o ponto de extremidade do servidor PostgreSQL e não se integra à autenticação do Microsoft Entra.

O nome de usuário e a senha são fornecidos como parte da cadeia de conexão usando os seguintes parâmetros:

User ID=...; Password=...;

Aviso

Informações confidenciais ou protegidas devem ser ofuscadas de cadeias de conexão e consultas para que sejam omitidas de qualquer rastreamento Kusto. Para obter mais informações, consulte literais de cadeia de caracteres ofuscados.

Criptografia e validação do servidor

Por segurança, SslMode é definido incondicionalmente como Required ao se conectar a um ponto de extremidade de rede do servidor PostgreSQL. Como resultado, o servidor deve ser configurado com um certificado de servidor SSL/TLS válido.

Especificar o ponto de extremidade de rede

Especifique o ponto de extremidade de rede do PostgreSQL como parte da cadeia de conexão.

Sintaxe:

Host= FQDN [Port = Porta]

Em que:

  • FQDN é o nome de domínio totalmente qualificado do ponto de extremidade.
  • Porta é a porta TCP do ponto de extremidade.

Exemplos

Consulta SQL ao BD PostgreSQL do Azure

O exemplo a seguir envia uma consulta SQL para um banco de dados PostgreSQL do Azure. Ele recupera todos os registros do public."Table"e processa os resultados.

Observação

Este exemplo não deve ser considerado uma recomendação para filtrar ou projetar dados dessa maneira. As consultas SQL devem ser construídas para retornar o menor conjunto de dados possível.

evaluate postgresql_request(
    'Host=contoso.postgres.database.azure.com; Port = 5432;'
    'Database=Fabrikam;'
    h'User Id=USERNAME;'
    h'Password=PASSWORD;',
    'select * from public."Table"') : (Id: int, Name: string)
| where Id > 0
| project Name

Consulta SQL a um banco de dados PostgreSQL do Azure com modificações

O exemplo a seguir envia uma consulta SQL para um banco de dados PostgreSQL do Azure recuperando todos os registros do public."Table", acrescentando outra datetime coluna e, em seguida, processa os resultados. Ele especifica um parâmetro SQL (@param0) a ser usado na consulta SQL.

evaluate postgresql_request(
    'Server=contoso.postgres.database.azure.com; Port = 5432;'
    'Database=Fabrikam;'
    h'User Id=USERNAME;'
    h'Password=PASSWORD;',
    'select *, @param0 as dt from public."Table"',
    dynamic({'param0': datetime(2020-01-01 16:47:26.7423305)})) : (Id: int, Name: string, dt: datetime)
| where Id > 0
| project Name

Consulta SQL a um banco de dados PostgreSQL do Azure sem um esquema de saída definido por consulta

O exemplo a seguir envia uma consulta SQL para um banco de dados PostgreSQL do Azure sem um esquema de saída. Isso não é recomendado, a menos que o esquema seja desconhecido, pois pode afetar o desempenho da consulta

evaluate postgresql_request(
    'Host=contoso.postgres.database.azure.com; Port = 5432;'
    'Database=Fabrikam;'
    h'User Id=USERNAME;'
    h'Password=PASSWORD;',
    'select * from public."Table"')
| where Id > 0
| project Name