Partager via


postgresql_request plugin

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

evaluatepostgresql_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 côté Azure Data Explorer. 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

Cette fonctionnalité n’est pas prise en charge dans Azure Monitor.