KQL(Kusto Query Language) 개요

Kusto 쿼리 언어는 데이터를 탐색하고 패턴을 검색하고, 변칙과 이상값을 식별하고, 통계 모델링을 만드는 강력한 도구입니다. 쿼리는 SQL의 데이터베이스, 테이블 및 열과 비슷한 계층 구조로 구성된 스키마 엔터티를 사용합니다.

Kusto 쿼리란?

Kusto 쿼리는 데이터를 처리하고 결과를 반환하기 위한 읽기 전용 요청입니다. 요청은 읽기, 작성 및 자동화하기 쉬운 데이터 흐름 모델을 사용하여 일반 텍스트로 명시됩니다. Kusto 쿼리는 하나 이상의 쿼리 문으로 구성됩니다.

쿼리 문이란?

다음과 같은 세 가지 종류의 사용자 쿼리 문이 있습니다.

모든 쿼리 문은 (세미콜론)으로 ; 구분되며 현재 쿼리에만 영향을 줍니다.

참고

애플리케이션 쿼리 문에 대한 자세한 내용은 애플리케이션 쿼리 문을 참조하세요.

가장 일반적인 종류의 쿼리 문은 테이블 형식 식 입니다. 즉 입력과 출력 모두 테이블 또는 테이블 형식 데이터 세트로 구성되어 있습니다. 테이블 형식 식은 0개 이상의 연산자가 포함되며, 각 연산자는 테이블 형식 입력으로 시작하고 테이블 형식 출력을 반환합니다. 연산자는 |(파이프)로 시퀀스됩니다. 데이터는 한 연산자에서 다음 연산자로 흐르거나 파이프됩니다. 데이터는 각 단계에서 필터링되거나 조작되고 나서 다음 단계에 제공됩니다.

마치 전체 데이터 테이블로 시작하는 유입 경로와 같습니다. 데이터가 다른 연산자를 통해 전달될 때마다 필터링되거나 다시 정렬되거나 요약됩니다. 한 연산자에서 다른 연산자로 정보를 파이핑하는 것은 순차적이므로 쿼리 연산자 순서가 중요하며 결과와 성능 모두에 영향을 줄 수 있습니다. 유입 경로의 끝에는 구체화된 출력이 남습니다.

예제 쿼리를 살펴보겠습니다.

StormEvents 
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"  
| count 

참고

KQL은 테이블 이름, 테이블 열 이름, 연산자, 함수 등 모든 항목에 대/소문자를 구분합니다.

이 쿼리에는 단일 테이블 형식 식 문이 있습니다. 문은 StormEvents 라는 테이블에 대한 참조로 시작하며, 각각 파이프로 구분된 여러 연산 자를 count포함합니다. 원본 테이블의 데이터 행은 StartTime 열의 값으로 필터링된 다음, State 열의 값으로 필터링됩니다. 마지막 줄에서 쿼리는 나머지 행 수를 포함하는 단일 열과 단일 행이 있는 테이블을 반환합니다.

결과를 보려면 이 쿼리를 실행하세요.

개수
28

Kusto 쿼리를 좀 더 사용해 보려면 자습서: Kusto 쿼리를 사용합니다.

제어 명령

Kusto 쿼리와 달리 Control 명령은 데이터 또는 메타데이터를 처리하거나 수정하는 Kusto에 대한 요청입니다. 예를 들어 다음 제어 명령은 LevelText라는 두 열이 있는 새 Kusto 테이블을 만듭니다.

.create table Logs (Level:string, Text:string)

제어 명령에는 고유 구문이 있습니다. 이 둘에는 많은 개념을 공유하지만 Kusto 쿼리 언어 구문의 일부는 아닙니다. 특히 제어 명령은 명령 텍스트의 첫 번째 문자를 점(.) 문자(쿼리를 시작할 수 없음)로 사용하여 쿼리와 구별됩니다. 이러한 구별을 통해 여러 종류의 보안 공격이 방지됩니다. 단순히 쿼리 내에 제어 명령을 포함할 수 없도록 하기 때문입니다.

일부 제어 명령은 데이터 또는 메타데이터를 수정할 수 없습니다. .show로 시작하는 대규모 명령 클래스는 메타데이터 또는 데이터를 표시하는 데 사용됩니다. 예를 들어 .show tables 명령은 현재 데이터베이스의 모든 테이블 목록을 반환합니다.

제어 명령에 대한 자세한 내용은 관리(제어 명령) 개요를 참조하세요.

다음 단계