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
evaluate
postgresql_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