Freigeben über


postgresql_request plugin

Gilt für: ✅Microsoft Fabric✅Azure Data Explorer

Das postgresql_request Plug-In sendet eine SQL-Abfrage an einen Azure PostgreSQL Server-Netzwerkendpunkt und gibt das erste Rowset in den Ergebnissen zurück. Die Abfrage gibt möglicherweise mehrere Rowset zurück, aber nur das erste Rowset wird für den Rest der Kusto-Abfrage verfügbar gemacht.

Das Plug-In wird mit dem evaluate Operator aufgerufen.

Wichtig

Das postgresql_request Plug-In ist standardmäßig deaktiviert. Führen Sie den .enable plugin postgresql_request Befehl aus, um das Plug-In zu aktivieren. Verwenden Sie .show plugin Verwaltungsbefehle, um zu sehen, welche Plug-Ins aktiviert sind.

Syntax

evaluatepostgresql_request ( ConnectionString , SqlQuery [, SqlParameters] ) [: OutputSchema]

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Type Erforderlich Beschreibung
ConnectionString string ✔️ Die Verbindungszeichenfolge, die auf den PostgreSQL Server-Netzwerkendpunkt verweist. Siehe Authentifizierung und Angeben des Netzwerkendpunkts.
SqlQuery string ✔️ Die Abfrage, die für den SQL-Endpunkt ausgeführt werden soll. Muss einen oder mehrere Zeilensätze zurückgeben. Nur der erste Satz wird für den Rest der Abfrage verfügbar gemacht.
SqlParameters dynamic Ein Eigenschaftenbehälterobjekt, das Schlüsselwertpaare enthält, die zusammen mit der Abfrage als Parameter übergeben werden.
OutputSchema Die Namen und Typen für die erwarteten Spalten der postgresql_request Plug-In-Ausgabe.

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

Hinweis

  • Die Angabe des OutputSchema-Schemas wird dringend empfohlen, da das Plug-In in Szenarien verwendet werden kann, die andernfalls nicht funktionieren, z. B. eine clusterübergreifende Abfrage. Das OutputSchema kann auch mehrere Abfrageoptimierungen aktivieren.
  • Ein Fehler wird ausgelöst, wenn das Laufzeitschema des vom SQL-Netzwerkendpunkt zurückgegebenen ersten Zeilensatzes nicht mit dem OutputSchema-Schema übereinstimmt.

Authentifizierung und Autorisierung

Um einen PostgreSQL Server-Netzwerkendpunkt zu autorisieren, müssen Sie die Autorisierungsinformationen im Verbindungszeichenfolge angeben. Die unterstützte Autorisierungsmethode erfolgt über Benutzername und Kennwort.

Festlegen der Beschriftungsrichtlinie

Das Plug-In führt Legenden an die PostgreSQL-Datenbank aus. Stellen Sie sicher, dass die Beschriftungsrichtlinie des Clusters Aufrufe vom Typ postgresql an das Ziel PostgreSqlDbUri aktiviert.

Das folgende Beispiel zeigt, wie die Popuprichtlinie für PostgreSQL-Datenbanken definiert wird. Es wird empfohlen, die Popuprichtlinie auf bestimmte Endpunkte (my_endpoint1, my_endpoint2) zu beschränken.

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

Das folgende Beispiel zeigt einen .alter callout policy Befehl für postgresql CalloutType:

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

Authentifizierung per Benutzername und Kennwort

Das postgresql_request Plug-In unterstützt nur die Benutzernamen- und Kennwortauthentifizierung an den PostgreSQL-Serverendpunkt und lässt sich nicht in die Microsoft Entra-Authentifizierung integrieren.

Der Benutzername und das Kennwort werden als Teil der Verbindungszeichenfolge mit den folgenden Parametern bereitgestellt:

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

Warnung

Vertrauliche oder geschützte Informationen sollten von Verbindungszeichenfolge und Abfragen verschleiert werden, damit sie von jeder Kusto-Ablaufverfolgung weggelassen werden. Weitere Informationen finden Sie unter verschleierten Zeichenfolgenliteralen.

Verschlüsselung und Serverüberprüfung

Für die Sicherheit SslMode ist die Verbindung mit einem PostgreSQL-Servernetzwerkendpunkt bedingungslos festgelegt Required . Daher muss der Server mit einem gültigen SSL/TLS-Serverzertifikat konfiguriert werden.

Angeben des Netzwerkendpunkts

Geben Sie den PostgreSQL-Netzwerkendpunkt als Teil des Verbindungszeichenfolge an.

Syntax:

Host= FQDN [Port = Port]

Hierbei gilt:

  • FQDN ist der vollqualifizierte Domänenname des Endpunkts.
  • Port ist der TCP-Port des Endpunkts.

Beispiele

SQL-Abfrage zu Azure PostgreSQL DB

Im folgenden Beispiel wird eine SQL-Abfrage an eine Azure PostgreSQL-Datenbank gesendet. Es ruft alle Datensätze aus public."Table"und verarbeitet dann die Ergebnisse.

Hinweis

Dieses Beispiel sollte nicht als Empfehlung zum Filtern oder Projektdaten auf diese Weise verwendet werden. SQL-Abfragen sollten erstellt werden, um möglichst kleine Datasets zurückzugeben.

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-Abfrage an eine Azure PostgreSQL-Datenbank mit Änderungen

Im folgenden Beispiel wird eine SQL-Abfrage an eine Azure PostgreSQL-Datenbank gesendet, aus public."Table"der alle Datensätze abgerufen werden, während eine andere datetime Spalte angefügt und dann die Ergebnisse verarbeitet werden. Er gibt einen SQL-Parameter (@param0) an, der in der SQL-Abfrage verwendet werden soll.

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-Abfrage an eine Azure PostgreSQL-Datenbank ohne abfragedefiniertes Ausgabeschema

Im folgenden Beispiel wird eine SQL-Abfrage ohne Ausgabeschema an eine Azure PostgreSQL-Datenbank gesendet. Dies wird nur empfohlen, wenn das Schema unbekannt ist, da es sich auf die Leistung der Abfrage auswirken kann.

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