Compartir a través de


mysql_request plugin

Se aplica a: ✅Microsoft FabricAzure Data Explorer

El mysql_request complemento envía una consulta SQL a un punto de conexión de red de Azure MySQL Server y devuelve el primer conjunto de filas de los resultados. La consulta puede devolver más de un conjunto de filas, pero solo el primer conjunto de filas está disponible para el resto de la consulta de Kusto.

El complemento se invoca con el evaluate operador .

Importante

El mysql_request complemento está deshabilitado de forma predeterminada. Para habilitar el complemento, ejecute el .enable plugin mysql_request comando . Para ver qué complementos están habilitados, use .show plugin comandos de administración.

Sintaxis

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

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Type Obligatorio Descripción
ConnectionString string ✔️ El cadena de conexión que apunta al punto de conexión de red de MySQL Server. Consulte autenticación y cómo especificar el punto de conexión de red.
SqlQuery string ✔️ Consulta que se va a ejecutar en el punto de conexión de SQL. Debe devolver uno o varios conjuntos de filas. Solo el primer conjunto está disponible para el resto de la consulta.
SqlParameters dynamic Objeto de contenedor de propiedades que contiene pares clave-valor para pasar como parámetros junto con la consulta.
OutputSchema Los nombres y tipos de las columnas esperadas de la salida del mysql_request complemento.

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

Nota:

  • Se recomienda especificar OutputSchema, ya que permite usar el complemento en escenarios que podrían no funcionar sin él, como una consulta entre clústeres. OutputSchema también puede habilitar varias optimizaciones de consulta.
  • Se produce un error si el esquema en tiempo de ejecución del primer conjunto de filas devuelto por el punto de conexión de red SQL no coincide con el esquema OutputSchema .

Autenticación y autorización

Para autorizar a un punto de conexión de red de MySQL Server, debe especificar la información de autorización en el cadena de conexión. El método de autorización admitido es a través del nombre de usuario y la contraseña.

Establecimiento de la directiva de llamada

El complemento realiza llamadas a la base de datos MySql. Asegúrese de que la directiva de llamada del clúster habilita las llamadas de tipo mysql al MySqlDbUri de destino.

En el ejemplo siguiente se muestra cómo definir la directiva de llamada para las bases de datos MySQL. Se recomienda restringir la directiva de llamada a puntos de conexión específicos (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
  }
]

En el ejemplo siguiente se muestra un .alter callout policy comando para mysql CalloutType:

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

Autenticación mediante nombre de usuario y contraseña

El mysql_request complemento solo admite la autenticación de nombre de usuario y contraseña en el punto de conexión del servidor MySQL y no se integra con la autenticación de Microsoft Entra.

El nombre de usuario y la contraseña se proporcionan como parte de la cadena de conexiones mediante los parámetros siguientes:

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

Advertencia

La información confidencial o protegida debe ofuscarse de cadena de conexión y consultas para que se omitan de cualquier seguimiento de Kusto. Para obtener más información, consulte literales de cadena ofuscados.

Cifrado y validación del servidor

Para la seguridad, SslMode se establece incondicionalmente en Required al conectarse a un punto de conexión de red del servidor MySQL. Como resultado, el servidor debe configurarse con un certificado de servidor SSL/TLS válido.

Especificar el punto de conexión de red

Especifique el punto de conexión de red mySQL como parte del cadena de conexión.

Sintaxis:

Server= FQDN [Port = Puerto]

Donde:

  • FQDN es el nombre de dominio completo del punto de conexión.
  • El puerto es el puerto TCP del punto de conexión. De manera predeterminada, se presupone que es 3306.

Ejemplos

Consulta SQL a Azure MySQL DB

En el ejemplo siguiente se envía una consulta SQL a una base de datos de Azure MySQL. Recupera todos los registros de [dbo].[Table]y, a continuación, procesa los resultados.

Nota:

Este ejemplo no se debe tomar como recomendación para filtrar o proyectar datos de esta manera. Las consultas SQL se deben construir para devolver el conjunto de datos más pequeño posible.

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

Consulta SQL a una base de datos de Azure MySQL con modificaciones

En el ejemplo siguiente se envía una consulta SQL a una base de datos de Azure MySQL que recupera todos los registros de [dbo].[Table], al anexar otra datetime columna y, a continuación, se procesan los resultados en el lado de Kusto. Especifica un parámetro SQL (@param0) que se va a usar en la consulta 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

Consulta SQL a una base de datos de Azure MySQL sin un esquema de salida definido por la consulta

En el ejemplo siguiente se envía una consulta SQL a una base de datos de Azure MySQL sin un esquema de salida. Esto no se recomienda a menos que se desconoce el esquema, ya que puede afectar al rendimiento de la consulta.

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