Condividi tramite


Plug-in postgresql_request

Si applica a: ✅Microsoft FabricAzure 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

evaluatepostgresql_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