Подключаемый модуль mysql_request
Область применения: ✅Microsoft Fabric✅Azure Data Explorer
Подключаемый mysql_request
модуль отправляет SQL-запрос в конечную точку сети Azure MySQL Server и возвращает первый набор строк в результатах. Запрос может возвращать несколько наборов строк, но для остальной части запроса Kusto доступен только первый набор строк.
Подключаемый модуль вызывается оператором evaluate
.
Внимание
Подключаемый mysql_request
модуль отключен по умолчанию.
Чтобы включить подключаемый модуль, выполните .enable plugin mysql_request
команду. Чтобы узнать, какие подключаемые модули включены, используйте .show plugin
команды управления.
Синтаксис
evaluate
mysql_request
(
ConnectionString ,
SqlQuery [,
SqlParameters] )
[:
OutputSchema]
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
ConnectionString | string |
✔️ | Строка подключения, указывающий на конечную точку сети Сервера MySQL. Ознакомьтесь с проверкой подлинности и указанием конечной точки сети. |
SqlQuery | string |
✔️ | Запрос, выполняемый в конечной точке SQL. Должен возвращать один или несколько наборов строк. Только первый набор доступен для остальной части запроса. |
SqlParameters | dynamic |
Объект контейнера свойств, содержащий пары "ключ-значение", передаваемые в качестве параметров вместе с запросом. | |
OutputSchema | Имена и типы ожидаемых столбцов выходных данных подключаемого mysql_request модуля.Синтаксис: ( ColumnName : ColumnType [, ...] ) |
Примечание.
- Указание OutputSchema настоятельно рекомендуется, так как он позволяет использовать подключаемый модуль в сценариях, которые в противном случае могут не работать без него, например запрос между кластерами. OutputSchema также может включать несколько оптимизаций запросов.
- Ошибка возникает, если схема времени выполнения первого набора строк, возвращаемого конечной точкой сети SQL, не соответствует схеме OutputSchema .
Проверка подлинности и авторизация
Чтобы авторизовать конечную точку сети MySQL Server, необходимо указать сведения о авторизации в строка подключения. Поддерживаемый метод авторизации осуществляется через имя пользователя и пароль.
Настройка политики выноски
Подключаемый модуль выполняет выноски в базу данных MySql. Убедитесь, что политика выноски кластера включает вызовы типа mysql
в целевой MySqlDbUri.
В следующем примере показано, как определить политику выноски для баз данных MySQL. Мы рекомендуем ограничить политику выноски определенными конечными точками (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
}
]
В следующем примере показана .alter callout policy
команда calloutTypemysql
:
.alter cluster policy callout @'[{"CalloutType": "mysql", "CalloutUriRegex": "\\.mysql\\.database\\.azure\\.com", "CanCall": true}]'
Проверка подлинности по имени пользователя и с помощью пароля
Подключаемый mysql_request
модуль поддерживает только проверку подлинности имени пользователя и пароля для конечной точки сервера MySQL и не интегрируется с проверкой подлинности Microsoft Entra.
Имя пользователя и пароль предоставляются в составе строки подключений с помощью следующих параметров:
User ID=...; Password=...;
Предупреждение
Конфиденциальная или защищенная информация должна быть скрыта от строка подключения и запросов, чтобы они были пропущены из любой трассировки Kusto. Дополнительные сведения см. в скрытых строковых литералах.
Шифрование и проверка сервера
Для обеспечения безопасности SslMode
при подключении к конечной точке сети сервера MySQL устанавливается безусловное значение Required
. В результате сервер должен быть настроен с допустимым сертификатом СЕРВЕРА SSL/TLS.
Указание конечной точки сети
Укажите конечную точку сети MySQL в рамках строка подключения.
Синтаксис
Server
=
Полное доменное имя [Port
=
порт]
Где:
- Полное доменное имя — это полное доменное имя конечной точки.
- Порт — это TCP-порт конечной точки. По умолчанию предполагается значение
3306
.
Примеры
SQL-запрос к Базе данных MySQL Azure
В следующем примере sql-запрос отправляется в базу данных Azure MySQL. Он извлекает все записи из [dbo].[Table]
, а затем обрабатывает результаты.
Примечание.
Этот пример не следует принимать в качестве рекомендации для фильтрации или проекта данных таким образом. Sql-запросы должны быть созданы для возврата наименьшего набора данных.
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
SQL-запрос к базе данных Azure MySQL с изменениями
В следующем примере sql-запрос отправляется в базу данных Azure MySQL, из нее извлекают все записи [dbo].[Table]
, добавляя другой datetime
столбец, а затем обрабатывают результаты на стороне Kusto.
Он указывает параметр SQL (@param0
), используемый в 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
SQL-запрос к базе данных Azure MySQL без определяемой запросом выходной схемы
В следующем примере sql-запрос отправляется в базу данных Azure MySQL без выходной схемы. Это не рекомендуется, если схема неизвестна, так как это может повлиять на производительность запроса.
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