mysql_request plugin
Se aplica a: ✅Microsoft Fabric✅Azure 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
evaluate
mysql_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