Plug-in postgresql_request
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati
Il postgresql_request
plug-in invia una query SQL a un endpoint di rete del server PostgreSQL di Azure e restituisce il primo set di righe nei risultati. La query può restituire più set di righe, ma solo il primo set di righe viene reso disponibile per il resto della query Kusto.
Il plug-in viene richiamato con l'operatore evaluate
.
Importante
Il postgresql_request
plug-in è disabilitato per impostazione predefinita.
Per abilitare il plug-in, eseguire il .enable plugin postgresql_request
comando . Per vedere quali plug-in sono abilitati, usare .show plugin
i comandi di gestione.
Sintassi
evaluate
postgresql_request
(
ConnectionString ,
SqlQuery [,
SqlParameters] )
[:
OutputSchema]
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
ConnectionString | string |
✔️ | Il stringa di connessione che punta all'endpoint di rete del server PostgreSQL. Vedere Autenticazione e come specificare l'endpoint di rete. |
SqlQuery | string |
✔️ | Query da eseguire sull'endpoint SQL. Deve restituire uno o più set di righe. Solo il primo set viene reso disponibile per il resto della query. |
SqlParameters | dynamic |
Oggetto contenitore delle proprietà che contiene coppie chiave-valore da passare come parametri insieme alla query. | |
OutputSchema | Nomi e tipi per le colonne previste dell'output del plug-in postgresql_request .Sintassi: ( ColumnName : ColumnType [, ...]) |
Nota
- È consigliabile specificare OutputSchema , in quanto consente l'uso del plug-in in scenari che potrebbero altrimenti non funzionare senza di esso, ad esempio una query tra cluster. OutputSchema può anche abilitare più ottimizzazioni delle query.
- Viene generato un errore se lo schema di runtime del primo set di righe restituito dall'endpoint di rete SQL non corrisponde allo schema OutputSchema .
Autenticazione e autorizzazione
Per autorizzare un endpoint di rete di PostgreSQL Server, è necessario specificare le informazioni di autorizzazione nel stringa di connessione. Il metodo di autorizzazione supportato è tramite nome utente e password.
Impostare i criteri di callout
Il plug-in effettua callout al database PostgreSQL. Assicurarsi che i criteri di callout del cluster consentano le chiamate di tipo postgresql
all'uri PostgreSqlDbUri di destinazione.
L'esempio seguente illustra come definire i criteri di callout per i database PostgreSQL. È consigliabile limitare i criteri di callout a endpoint specifici (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
}
]
L'esempio seguente mostra un .alter callout policy
comando per postgresql
CalloutType:
.alter cluster policy callout @'[{"CalloutType": "postgresql", "CalloutUriRegex": "\\.postgresql\\.database\\.azure\\.com", "CanCall": true}]'
Autenticazione con nome utente e password
Il postgresql_request
plug-in supporta solo l'autenticazione di nome utente e password per l'endpoint server PostgreSQL e non si integra con l'autenticazione di Microsoft Entra.
Il nome utente e la password vengono forniti come parte della stringa di connessione usando i parametri seguenti:
User ID=...; Password=...;
Avviso
Le informazioni riservate o protette devono essere offuscate da stringa di connessione e query in modo che vengano omesse da qualsiasi traccia Kusto. Per altre informazioni, vedere Valori letterali stringa offuscati.
Crittografia e convalida del server
Per la sicurezza, SslMode
è impostato in modo incondizionato su Required
quando ci si connette a un endpoint di rete del server PostgreSQL. Di conseguenza, il server deve essere configurato con un certificato server SSL/TLS valido.
Specificare l'endpoint di rete
Specificare l'endpoint di rete PostgreSQL come parte del stringa di connessione.
Sintassi:
Host
=
FQDN [Port
=
Porta]
Dove:
- FQDN è il nome di dominio completo dell'endpoint.
- La porta è la porta TCP dell'endpoint.
Esempi
Query SQL nel database PostgreSQL di Azure
L'esempio seguente invia una query SQL a un database PostgreSQL di Azure. Recupera tutti i record da public."Table"
e quindi elabora i risultati.
Nota
Questo esempio non deve essere considerato come raccomandazione per filtrare o proiettare i dati in questo modo. Le query SQL devono essere costruite per restituire il set di dati più piccolo possibile.
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
Query SQL in un database PostgreSQL di Azure con modifiche
L'esempio seguente invia una query SQL a un database PostgreSQL di Azure che recupera tutti i record da public."Table"
, aggiungendo un'altra datetime
colonna e quindi elabora i risultati.
Specifica un parametro SQL (@param0
) da usare nella query 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
Query SQL in un database PostgreSQL di Azure senza uno schema di output definito da query
L'esempio seguente invia una query SQL a un database PostgreSQL di Azure senza uno schema di output. Questa operazione non è consigliata a meno che lo schema non sia sconosciuto, perché potrebbe influire sulle prestazioni della query
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