Поделиться через


Политика классификации запросов

Процесс классификации назначает входящие запросы группе рабочей нагрузки с учетом характеристик этих запросов. Настройте логику классификации, создав определяемую пользователем функцию в рамках политики классификации запросов на уровне кластера.

При отсутствии включенной политики классификации запросов все запросы классифицируются в группу рабочей нагрузки default .

Объект политики

Политика имеет следующие свойства.

  • IsEnabled: bool — указывает, включена ли политика.
  • ClassificationFunction: string — текст функции, которая используется для классификации запросов.

Классифицирующая функция

Классификация входящих запросов основана на определяемой пользователем функции. Результаты этой функции используются для классификации запросов в существующие группы рабочей нагрузки.

Определяемая пользователем функция имеет следующие характеристики и поведение.

  • Если в политике для параметра IsEnabled задано значение true, определяемая пользователем функция вычисляется для каждого нового запроса.
  • Определяемая пользователем функция предоставляет для запроса контекст группы рабочей нагрузки на все время существования этого запроса.
  • Запрос получает контекст группы рабочей нагрузки default в следующих ситуациях:
    • Определяемая пользователем функция возвращает пустую строку defaultили имя несуществующей группы рабочей нагрузки.
    • эта функция завершается ошибкой по любой причине.
  • В указанный момент времени может быть назначена только одна определяемая пользователем функция.

Важно!

Функция классификации запросов будет оцениваться для каждого запроса, выполняемого в кластере. Мы рекомендуем сделать ее как можно более простой, не выполняя сложных вычислений. Например, избегайте вычисления большого количества регулярных выражений в рамках его выполнения.

Требования и ограничения

Классифицирующая функция имеет следующие ограничения:

  • Она должна возвращать одно скалярное значение типа string, которое соответствует имени группы рабочей нагрузки, в которую нужно назначить запрос.

  • Она не может ссылаться на любую другую сущность (базу данных, таблицу или функцию).

    • В частности, она не может использовать следующие функции и операторы:
      • cluster()
      • database()
      • table()
      • external_table()
      • externaldata
  • Она имеет доступ к специальному символу dynamic, который является контейнером свойств с именем request_properties и содержит следующие свойства:

    Имя Тип Описание Примеры
    current_database string Имя базы данных, к которой направлен запрос. "MyDatabase"
    current_application string Имя приложения, отправившего запрос. "Kusto.Explorer", "KusWeb"
    current_principal string Полное доменное имя основного удостоверения, отправившего запрос. "aaduser=1793eb1f-4a18-418c-be4c-728e310c86d3;83af1c0e-8c6d-4f09-b249-c67a2e8fda65"
    query_consistency string Определяет уровень согласованности для запроса: strongconsistency или weakconsistency. Это свойство может быть задано вызывающим абонентом как часть свойств запроса запроса. Свойство клиентского запроса, которое необходимо задать, равно: queryconsistency. "strongconsistency", "weakconsistency"
    request_description string Произвольный текст, который может добавить автор запроса. Этот текст может быть задан вызывающим объектом в составе свойств запроса клиента. Свойству запроса задано значение request_description. "Some custom description"; автоматически заполняется для панелей мониторинга: "dashboard:{dashboard_id};version:{version};sourceId:{source_id};sourceType:{tile/parameter}"
    request_text string Текст запроса с примененным маскированием. Все содержащиеся в тексте запроса маскируемые строковые литералы заменяются несколькими символами звездочки (*). Примечание: обрабатываются только первые 65 536 символов в тексте запроса. ".show version"
    request_type string Тип запроса: Command или Query. "Command", "Query"

Примечание

Установка вышеупомянутых параметров запроса с помощью set инструкций не допускает их классификацию. Параметры необходимо задать в объекте свойств клиентского запроса.

Примеры

Одна группа рабочей нагрузки

iff(request_properties.current_application == "Kusto.Explorer" and request_properties.request_type == "Query",
    "Ad-hoc queries",
    "default")

Несколько групп рабочей нагрузки

case(current_principal_is_member_of('aadgroup=somesecuritygroup@contoso.com'), "First workload group",
     request_properties.current_database == "MyDatabase" and request_properties.current_principal has 'aadapp=', "Second workload group",
     request_properties.current_application == "Kusto.Explorer" and request_properties.request_type == "Query", "Third workload group",
     request_properties.current_application == "Kusto.Explorer", "Third workload group",
     request_properties.current_application == "KustoQueryRunner", "Fourth workload group",
     request_properties.request_description == "this is a test", "Fifth workload group",
     hourofday(now()) between (17 .. 23), "Sixth workload group",
     "default")

Команды управления

Используйте следующие команды управления для управления политикой классификации запросов кластера.

Get-Help Описание
.alter cluster request classification policy Изменяет политику классификации запросов кластера
.alter-merge cluster request classification policy Включает или отключает политику классификации запросов кластера.
.delete cluster request classification policy Удаляет политику классификации запросов кластера.
.show cluster request classification policy Показывает политику классификации запросов кластера