Dela via


postgresql_request insticksprogram

Växla tjänster genom att använda listrutan Version. Läs mer om navigering.
Gäller för: ✅ Microsoft Fabric ✅ Azure Data Explorer

Plugin-programmet postgresql_request skickar en SQL-fråga till en Azure PostgreSQL Server-nätverksslutpunkt och returnerar den första raduppsättningen i resultatet. Frågan kan returnera fler än en raduppsättning, men endast den första raduppsättningen görs tillgänglig för resten av Kusto-frågan.

Plugin-programmet anropas med operatorn evaluate.

Viktigt!

Plugin-programmet postgresql_request är inaktiverat som standard. Om du vill aktivera plugin-programmet kör du .enable plugin postgresql_request kommandot . Om du vill se vilka plugin-program som är aktiverade använder du .show plugin hanteringskommandon.

Syntax

evaluate postgresql_request ( Connectionstring,SqlQuery [,SqlParameters] ) [:OutputSchema]

Läs mer om syntaxkonventioner.

Parameterar

Namn Typ Krävs Description
Connectionstring string ✔️ Anslutningssträngen som pekar på PostgreSQL Server-nätverksslutpunkten. Se autentisering och hur du anger nätverksslutpunkten.
SqlQuery string ✔️ Frågan som ska köras mot SQL-slutpunkten. Måste returnera en eller flera raduppsättningar. Endast den första uppsättningen görs tillgänglig för resten av frågan.
SqlParameters dynamic Ett egenskapsuppsättningsobjekt som innehåller nyckel/värde-par som ska skickas som parametrar tillsammans med frågan.
OutputSchema Namn och typer för de förväntade kolumnerna i postgresql_request plugin-utdata.

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

Anmärkning

  • Att ange OutputSchema rekommenderas starkt eftersom det gör att plugin-programmet kan användas i scenarier som annars inte fungerar utan det, till exempel en fråga mellan kluster. OutputSchema kan också aktivera flera frågeoptimeringar.
  • Ett fel uppstår om körningsschemat för den första raduppsättningen som returneras av SQL-nätverksslutpunkten inte matchar OutputSchema-schemat .

Autentisering och auktorisering

Om du vill auktorisera en PostgreSQL Server-nätverksslutpunkt måste du ange auktoriseringsinformationen i anslutningssträngen. Den auktoriseringsmetod som stöds är via användarnamn och lösenord.

Ange pratbubblans princip

Plugin-programmet gör pratbubblar till PostgreSQL-databasen. Kontrollera att klustrets pratbubblans princip aktiverar anrop av typ postgresql till målet PostgreSqlDbUri.

I följande exempel visas hur du definierar pratbubblan för PostgreSQL-databaser. Vi rekommenderar att du begränsar pratbubblan till specifika slutpunkter (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
  }
]

I följande exempel visas ett .alter callout policy kommando för postgresqlCalloutType:

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

Användarnamns- och lösenordsautentisering

Plugin-programmet postgresql_request stöder endast autentisering med användarnamn och lösenord till PostgreSQL-serverslutpunkten och integreras inte med Microsoft Entra-autentisering.

Användarnamnet och lösenordet anges som en del av anslutningssträngen med hjälp av följande parametrar:

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

Varning

Konfidentiell eller skyddad information bör döljas från anslutningssträngar och frågor så att de utelämnas från kusto-spårning. Mer information finns i dolda strängliteraler.

Kryptering och serververifiering

För säkerhet SslMode är villkorslöst inställt på Required när du ansluter till en PostgreSQL-servernätverksslutpunkt. Därför måste servern konfigureras med ett giltigt SSL/TLS-servercertifikat.

Ange nätverksslutpunkten

Ange PostgreSQL-nätverksslutpunkten som en del av anslutningssträngen.

Syntax:

Host = FQDN [Port=Port]

Where:

  • FQDN är slutpunktens fullständigt kvalificerade domännamn.
  • Port är TCP-porten för slutpunkten.

Examples

SQL-fråga till Azure PostgreSQL DB

I följande exempel skickas en SQL-fråga till en Azure PostgreSQL-databas. Den hämtar alla poster från public."Table"och bearbetar sedan resultatet.

Anmärkning

Det här exemplet bör inte ses som en rekommendation att filtrera eller projicera data på det här sättet. SQL-frågor bör konstrueras för att returnera den minsta möjliga datamängden.

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

SQL-fråga till en Azure PostgreSQL-databas med ändringar

I följande exempel skickas en SQL-fråga till en Azure PostgreSQL-databas som hämtar alla poster från public."Table", medan du lägger till en annan datetime kolumn och bearbetar sedan resultatet. Den anger en SQL-parameter (@param0) som ska användas i SQL-frågan.

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

SQL-fråga till en Azure PostgreSQL-databas utan ett frågedefinierat utdataschema

I följande exempel skickas en SQL-fråga till en Azure PostgreSQL-databas utan utdataschema. Detta rekommenderas inte om inte schemat är okänt, eftersom det kan påverka frågans prestanda

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