Partager via


mysql_request, plug-in

S’applique à : ✅Microsoft Fabric✅Azure Data Explorer

Le mysql_request plug-in envoie une requête SQL à un point de terminaison réseau Azure MySQL 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 mysql_request plug-in est désactivé par défaut. Pour activer le plug-in, exécutez la .enable plugin mysql_request commande. Pour voir quels plug-ins sont activés, utilisez .show plugin des commandes de gestion.

Syntaxe

evaluatemysql_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 mySQL Server. 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 mysql_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 MySQL 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 MySql. Assurez-vous que la stratégie de légende du cluster active les appels de type mysql vers mySqlDbUri cible.

L’exemple suivant montre comment définir la stratégie de légende pour les bases de données MySQL. Nous vous recommandons de restreindre la stratégie de légende à des points de terminaison spécifiques (my_endpoint1, my_endpoint2).

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

L’exemple suivant montre une .alter callout policy commande pour mysql CalloutType :

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

Authentification par nom d'utilisateur et mot de passe

Le mysql_request plug-in prend uniquement en charge l’authentification par nom d’utilisateur et mot de passe sur le point de terminaison du serveur MySQL 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 MySQL. 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 MySQL dans le cadre de la chaîne de connexion.

Syntaxe :

Server= 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. Par défaut, la valeur 3306 est supposée.

Exemples

Requête SQL vers Azure MySQL DB

L’exemple suivant envoie une requête SQL à une base de données Azure MySQL. Il récupère tous les enregistrements à partir de [dbo].[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 mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    'select * from `dbo`.`Table`') : (Id: int, Name: string)
| where Id > 0
| project Name

Requête SQL vers une base de données Azure MySQL avec des modifications

L’exemple suivant envoie une requête SQL à une base de [dbo].[Table]données Azure MySQL qui récupère tous les enregistrements, tout en ajoutant une autre datetime colonne, puis traite les résultats côté Kusto. Il spécifie un paramètre SQL (@param0) à utiliser dans la requête SQL.

evaluate mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    'select *, @param0 as dt from `dbo`.`Table`',
    dynamic({'param0': datetime(2020-01-01 16:47:26.7423305)})) : (Id:long, Name:string, dt: datetime)
| where Id > 0
| project Name

Requête SQL vers une base de données Azure MySQL 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 MySQL 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 mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    'select * from `dbo`.`Table`')
| where Id > 0
| project Name