plug-in postgresql_request
Aplica-se a: ✅Microsoft Fabric✅Azure 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
evaluate
postgresql_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