관리 명령 개요

이 문서에서는 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<| 문자 조합으로 표시됩니다. 예를 들어, 다음 예제에서는 먼저 단일 열(string 형식의 str 이름)과 단일 행이 있는 테이블을 생성하는 쿼리를 실행하고, 컨텍스트에서 이 테이블을 MyTable 이름으로 데이터베이스에 작성합니다.

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