plugin postgresql_request
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer
Le postgresql_request
plug-in envoie une requête SQL à un point de terminaison réseau Azure PostgreSQL Server et retourne le premier ensemble de lignes dans les résultats. La requête peut retourner plusieurs ensembles de lignes, mais seul le premier ensemble de lignes est disponible pour le reste de la requête Kusto.
Le plug-in est appelé avec l’opérateur evaluate
.
Important
Le postgresql_request
plug-in est désactivé par défaut.
Pour activer le plug-in, exécutez la .enable plugin postgresql_request
commande. Pour voir quels plug-ins sont activés, utilisez .show plugin
des commandes de gestion.
Syntaxe
evaluate
postgresql_request
(
ConnectionString ,
SqlQuery [,
SqlParameters] )
[:
OutputSchema]
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
ConnectionString | string |
✔️ | Le chaîne de connexion qui pointe vers le point de terminaison réseau du serveur PostgreSQL. Consultez l’authentification et comment spécifier le point de terminaison réseau. |
SqlQuery | string |
✔️ | Requête à exécuter sur le point de terminaison SQL. Doit retourner un ou plusieurs jeux de lignes. Seul le premier jeu est disponible pour le reste de la requête. |
SqlParameters | dynamic |
Objet conteneur de propriétés qui contient des paires clé-valeur à passer en tant que paramètres avec la requête. | |
OutputSchema | Noms et types pour les colonnes attendues de la sortie du postgresql_request plug-in.Syntaxe : ( ColumnName : ColumnType [, ...] ) |
Remarque
- La spécification de OutputSchema est vivement recommandée, car elle permet au plug-in d’être utilisé dans des scénarios qui peuvent ne pas fonctionner sans cela, comme une requête inter-cluster. OutputSchema peut également activer plusieurs optimisations de requête.
- Une erreur est générée si le schéma d’exécution du premier jeu de lignes retourné par le point de terminaison réseau SQL ne correspond pas au schéma OutputSchema .
Authentification et autorisation
Pour autoriser un point de terminaison réseau PostgreSQL Server, vous devez spécifier les informations d’autorisation dans le chaîne de connexion. La méthode d’autorisation prise en charge est via le nom d’utilisateur et le mot de passe.
Définir la stratégie de légende
Le plug-in effectue des légendes dans la base de données PostgreSQL. Assurez-vous que la stratégie de légende du cluster active les appels de type postgresql
vers PostgreSqlDbUri cible.
L’exemple suivant montre comment définir la stratégie de légende pour les bases de données PostgreSQL. Nous vous recommandons de restreindre la stratégie de légende à des points de terminaison spécifiques (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’exemple suivant montre une .alter callout policy
commande pour postgresql
CalloutType :
.alter cluster policy callout @'[{"CalloutType": "postgresql", "CalloutUriRegex": "\\.postgresql\\.database\\.azure\\.com", "CanCall": true}]'
Authentification par nom d'utilisateur et mot de passe
Le postgresql_request
plug-in prend uniquement en charge l’authentification par nom d’utilisateur et mot de passe sur le point de terminaison du serveur PostgreSQL et ne s’intègre pas à l’authentification Microsoft Entra.
Le nom d’utilisateur et le mot de passe sont fournis dans le cadre de la chaîne de connexions à l’aide des paramètres suivants :
User ID=...; Password=...;
Avertissement
Les informations confidentielles ou surveillées doivent être masquées par les chaîne de connexion et les requêtes afin qu’elles soient omises de tout suivi Kusto. Pour plus d’informations, consultez littéraux de chaîne obfusqués.
Validation du chiffrement et du serveur
Pour la sécurité, SslMode
elle est définie Required
de manière inconditionnelle lors de la connexion à un point de terminaison réseau de serveur PostgreSQL. Par conséquent, le serveur doit être configuré avec un certificat de serveur SSL/TLS valide.
Spécifier le point de terminaison réseau
Spécifiez le point de terminaison réseau PostgreSQL dans le cadre de la chaîne de connexion.
Syntaxe :
Host
=
Nom de domaine complet [Port
=
Port]
Où :
- Le nom de domaine complet du point de terminaison est le nom de domaine complet.
- Le port est le port TCP du point de terminaison.
Exemples
Requête SQL vers Azure PostgreSQL DB
L’exemple suivant envoie une requête SQL à une base de données Azure PostgreSQL. Il récupère tous les enregistrements à partir de public."Table"
, puis traite les résultats.
Remarque
Cet exemple ne doit pas être considéré comme une recommandation pour filtrer ou projeter les données de cette manière. Les requêtes SQL doivent être construites pour retourner le plus petit jeu de données possible.
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
Requête SQL vers une base de données Azure PostgreSQL avec des modifications
L’exemple suivant envoie une requête SQL à une base de public."Table"
données Azure PostgreSQL récupérant tous les enregistrements, tout en ajoutant une autre datetime
colonne, puis traite les résultats.
Il spécifie un paramètre SQL (@param0
) à utiliser dans la requête 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
Requête SQL vers une base de données Azure PostgreSQL sans schéma de sortie défini par une requête
L’exemple suivant envoie une requête SQL à une base de données Azure PostgreSQL sans schéma de sortie. Cela n’est pas recommandé, sauf si le schéma est inconnu, car il peut avoir un impact sur les performances de la requête
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