KQL(Kusto 쿼리 언어) 개요
Kusto 쿼리 언어는 데이터를 탐색하고 패턴을 발견하고, 변칙 및 이상값을 식별하고, 통계 모델링을 만드는 등의 작업을 수행할 수 있는 강력한 도구입니다. 쿼리는 SQL과 유사한 계층 구조(데이터베이스, 테이블 및 열)로 구성된 스키마 엔터티를 사용합니다.
Kusto 쿼리란?
Kusto 쿼리는 데이터를 처리하고 결과를 반환하기 위한 읽기 전용 요청입니다. 요청은 읽기, 작성 및 자동화하기 쉬운 데이터 흐름 모델을 사용하여 일반 텍스트로 명시됩니다. Kusto 쿼리는 하나 이상의 쿼리 문으로 구성됩니다.
쿼리 문이란?
세 가지 종류의 사용자 쿼리 문이 있습니다.
모든 쿼리 문은 (세미콜론)로 ;
구분되며 현재 쿼리에만 영향을 줍니다.
참고
애플리케이션 쿼리 문에 대한 자세한 내용은 애플리케이션 쿼리 문을 참조하세요.
가장 일반적인 종류의 쿼리 문은 테이블 형식 식 문입니다. 즉 입력과 출력 모두 테이블 또는 테이블 형식 데이터 세트로 구성되어 있습니다. 테이블 형식 식은 0개 이상의 연산자가 포함되며, 각 연산자는 테이블 형식 입력으로 시작하고 테이블 형식 출력을 반환합니다. 연산자는 |
(파이프)로 시퀀스됩니다. 데이터는 한 연산자에서 다음 연산자로 흐르거나 파이프됩니다. 데이터는 각 단계에서 필터링되거나 조작되고 나서 다음 단계에 제공됩니다.
마치 전체 데이터 테이블로 시작하는 유입 경로와 같습니다. 데이터가 다른 연산자를 통해 전달될 때마다 필터링되거나 다시 정렬되거나 요약됩니다. 한 연산자에서 다른 연산자로 정보를 파이핑하는 것은 순차적이므로 쿼리 연산자 순서가 중요하며 결과와 성능 모두에 영향을 줄 수 있습니다. 유입 경로의 끝에는 구체화된 출력이 남습니다.
예제 쿼리를 살펴보겠습니다.
StormEvents
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"
| count
참고
KQL은 테이블 이름, 테이블 열 이름, 연산자, 함수 등 모든 항목에 대/소문자를 구분합니다.
이 쿼리에는 단일 테이블 형식 식 문이 있습니다. 문은 StormEvents라는 테이블에 대한 참조로 시작하며 각각 파이프로 구분되는 여러 연산자, where
, count
를 포함합니다. 원본 테이블의 데이터 행은 StartTime 열의 값으로 필터링된 다음, State 열의 값으로 필터링됩니다. 마지막 줄에서 쿼리는 나머지 행 수를 포함하는 단일 열과 단일 행이 있는 테이블을 반환합니다.
개수 |
---|
28 |
몇 가지 Kusto 쿼리를 더 사용해 보려면 자습서: Kusto 쿼리 작성을 참조하세요.
제어 명령
Kusto 쿼리와 달리 제어 명령은 데이터 또는 메타데이터를 처리하거나 수정하기 위해 Kusto에 대한 요청입니다. 예를 들어 다음 제어 명령은 Level
및 Text
라는 두 열이 있는 새 Kusto 테이블을 만듭니다.
.create table Logs (Level:string, Text:string)
제어 명령에는 고유 구문이 있습니다. 이 둘에는 많은 개념을 공유하지만 Kusto 쿼리 언어 구문의 일부는 아닙니다. 특히 제어 명령은 명령 텍스트의 첫 번째 문자를 점(.
) 문자(쿼리를 시작할 수 없음)로 사용하여 쿼리와 구별됩니다.
이러한 구별을 통해 여러 종류의 보안 공격이 방지됩니다. 단순히 쿼리 내에 제어 명령을 포함할 수 없도록 하기 때문입니다.
일부 제어 명령은 데이터 또는 메타데이터를 수정할 수 없습니다. .show
로 시작하는 대규모 명령 클래스는 메타데이터 또는 데이터를 표시하는 데 사용됩니다. 예를 들어 .show tables
명령은 현재 데이터베이스의 모든 테이블 목록을 반환합니다.
제어 명령에 대한 자세한 내용은 관리(제어 명령) 개요를 참조하세요.