Подключаемый модуль mysql_request

Подключаемый mysql_request модуль отправляет SQL-запрос в конечную точку сети Azure MySQL Server и возвращает первый набор строк в результатах. Запрос может возвращать несколько наборов строк, но для остальной части запроса Kusto доступен только первый набор строк.

Подключаемый модуль вызывается оператором evaluate .

Внимание

Подключаемый mysql_request модуль отключен по умолчанию. Чтобы включить подключаемый модуль, выполните .enable plugin mysql_request команду. Чтобы узнать, какие подключаемые модули включены, используйте .show plugin команды управления.

Синтаксис

evaluatemysql_request(Подключение ionString,SqlQuery [,SqlParameters] ) [:OutputSchema]

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
Подключение ionString 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

Эта возможность не поддерживается в Azure Monitor.