Introducción a la administración (comandos de control)
En esta sección se describen los comandos de control que se usan para administrar Kusto. Los comandos de control son solicitudes que se realizan al servicio para recuperar información que no son necesariamente los datos de las tablas de base de datos, para modificar el estado del servicio, etc.
Diferencias entre los comandos de control y las consultas
Kusto usa tres mecanismos para diferenciar las consultas y los comandos de control: en el nivel de lenguaje, en el nivel de protocolo y en el nivel de API. Esto se hace por motivos de seguridad.
En el nivel de lenguaje, el primer carácter del texto de una solicitud determina si la solicitud es un comando de control o una consulta. Los comandos de control deben comenzar por un punto (.) y ninguna consulta puede comenzar por ese carácter.
En el nivel de protocolo, se usan puntos de conexión HTTP/HTTPS diferentes para los comandos de control y para las consultas.
En el nivel de API, se usan funciones diferentes para enviar comandos de control y consultas.
Combinación de consultas y comandos de control
Los comandos de control pueden hacer referencia a las consultas (pero no al contrario) o a otros comandos de control. Se admiten varios escenarios:
- AdminThenQuery: se ejecuta un comando de control y su resultado (representado en forma de tabla de datos temporal) sirve como entrada para una consulta.
- AdminFromQuery:se ejecuta una consulta o un comando de administrador y su resultado (representado como una tabla de datos temporal) actúa como entrada para un comando de control.
Tenga en cuenta que, en todos los casos, técnicamente la combinación completa es un comando de control, no una consulta, por lo que el texto de la solicitud debe comenzar por un carácter de punto (.) y la solicitud se debe enviar al punto de conexión de administración del servicio.
Tenga también en cuenta que las instrucciones de consulta aparecen en la parte de consulta del texto (no pueden preceder al propio comando).
Nota
No ejecute operaciones [command-then-query] con demasiada frecuencia. command-then-query canaliza el conjunto de resultados del comando de control y le aplica filtros o agregaciones.
- Por ejemplo:
.show ... | where ... | summarize ... - Al ejecutar algo como:
.show cluster extents | count(se ha hace énfasis en| count), Kusto primero prepara una tabla de datos que contiene todos los detalles de todas las extensiones del clúster. Luego, el sistema envía esa tabla, que solo está en memoria, al motor Kusto para realizar el recuento. En realidad, el sistema trabaja arduamente en una ruta de acceso no optimizada para proporcionarle una respuesta tan trivial.
AdminThenQuery se indica de una de estas dos maneras:
- Mediante el uso de un carácter de barra vertical (
|); por lo tanto, la consulta trata los resultados del comando de control como si fuera cualquier otro operador de consulta que genera datos. - Mediante el uso de un carácter de punto y coma (
;) que luego introduce los resultados del comando de control en un símbolo especial denominado$command_resultsy que posteriormente se puede usar en la consulta tantas veces como se desee.
Por ejemplo:
// 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 se indica mediante la combinación de caracteres. En el siguiente ejemplo, primero se ejecuta una consulta que genera una tabla con una sola columna (llamada str del tipo string) y una sola fila, y se escribe como el nombre de la tabla MyTable en la base de datos en contexto:
.set MyTable <|
let text="Hello, World!";
print str=text