Обзор команд управления

В этой статье описываются команды управления, также называемые командами управления, которые используются для управления Kusto. Команды управления — это запросы к службе на получение сведений, которые не обязательно являются данными в таблицах базы данных, изменения состояния службы и т. д.

Отличие команд управления от запросов

Kusto использует три механизма для различения запросов и команд управления: на уровне языка, на уровне протокола и на уровне API. Это нужно для обеспечения безопасности.

На уровне языка первый символ текста запроса определяет, является ли запрос командой управления или запросом. Команды управления должны начинаться с символа точки (.), и запрос не может начинаться с этого символа.

На уровне протокола используются разные конечные точки HTTP/HTTPS для управляющих команд и для запросов.

На уровне API для отправки команд управления используются различные функции, а не запросы.

Объединение запросов и команд управления

Команды управления могут ссылаться на запросы (но не наоборот) или другие команды управления. Поддерживаются несколько сценариев работы.

  • AdminThenQuery: выполняется команда управления, а ее результат (представленный в виде временной таблицы данных) служит входными данными для запроса.
  • AdminFromQuery: выполняется запрос или .show команда администратора, а его результат (представленный в виде временной таблицы данных) служит входными данными для команды управления.

Обратите внимание, что во всех случаях все сочетание технически является командой управления, а не запросом, поэтому текст запроса должен начинаться с символа точки (.), а запрос должен быть отправлен в конечную точку управления службы.

Также обратите внимание, что инструкции запроса отображаются в той части текста, которая относится к запросу (те есть не могут располагаться перед командой).

Примечание

Рекомендуется ограничить использование операций AdminThenQuery .

Метод AdminThenQuery обозначается одним из двух способов:

  • Таким образом, с помощью символа канала (|) запрос обрабатывает результаты команды управления как любой другой оператор запроса, создающий данные.
  • С помощью символа с запятой (;), который затем вводит результаты команды управления в специальный символ с именем $command_results, который затем можно использовать в запросе любое количество раз.

Пример:

// 1. Using pipe: Count how many tables are in the database-in-scope:
.show tables
| count

// 2. Using semicolon: Count how many tables are in the database-in-scope:
.show tables;
$command_results
| count

// 3. Using semicolon, and including a let statement:
.show tables;
let useless=(n:string){strcat(n,'-','useless')};
$command_results | extend LastColumn=useless(TableName)

AdminFromQuery обозначается сочетанием символов <|. В следующем примере мы сначала выполним запрос, который создаст таблицу с одним столбцом (с именем str и типом string) и одной строкой, а затем сохраним ее с именем таблицы MyTable в базе данных в текущем контексте:

.set MyTable <|
let text="Hello, World!";
print str=text