KQL(Kusto 쿼리 언어) 개요

KQL(Kusto 쿼리 언어)은 데이터를 살펴보고 패턴을 발견하고, 변칙 및 이상값을 식별하고, 통계 모델링을 생성하는 등의 작업을 수행할 수 있는 강력한 도구입니다. KQL은 구조화되고 반구조화되고 구조화되지 않은 데이터를 쿼리하는 단순하면서도 강력한 언어입니다. 언어는 표현력이 있고, 쿼리 의도를 읽고 이해하기 쉽고, 제작 환경에 최적화되어 있습니다. Kusto 쿼리 언어 텍스트 검색 및 구문 분석, 시계열 연산자 및 함수, 분석 및 집계, 지리 공간적, 벡터 유사성 검색 및 데이터 분석에 가장 적합한 언어를 제공하는 다른 많은 언어 구문에 대한 심층 지원을 통해 원격 분석, 메트릭 및 로그를 쿼리하는 데 최적입니다. 쿼리는 SQL과 유사한 계층 구조(데이터베이스, 테이블 및 열)로 구성된 스키마 엔터티를 사용합니다.

이 문서에서는 쿼리 언어에 대한 설명을 제공하고 쿼리 작성을 시작하기 위한 실용적인 연습을 제공합니다. 쿼리 환경에 액세스하려면 Azure Data Explorer 웹 UI를 사용합니다. KQL을 사용하는 방법을 알아보려면 자습서: 일반 연산자 알아보기를 참조하세요.

Kusto 쿼리란?

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

쿼리 문이란?

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

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

참고

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

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

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

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

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

참고

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

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

Kusto 쿼리를 더 사용해 보려면 자습서: Kusto 쿼리 작성을 참조하세요.

관리 명령

Kusto 쿼리와 달리 관리 명령은 데이터 또는 메타데이터를 처리하거나 수정하기 위해 Kusto에 대한 요청입니다. 예를 들어 다음 관리 명령은 및 Text열이 두 개 있는 새 Kusto 테이블을 만듭니다. Level

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

관리 명령에는 Kusto 쿼리 언어 구문의 일부가 아닌 고유한 구문이 있지만 두 명령은 많은 개념을 공유합니다. 특히 관리 명령은 명령 텍스트의 첫 번째 문자가 점() 문자(.쿼리를 시작할 수 없음)가 됨으로써 쿼리와 구별됩니다. 이러한 구분은 쿼리 내에 관리 명령을 포함할 수 없으므로 다양한 종류의 보안 공격을 방지합니다.

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

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

다른 서비스의 KQL

KQL은 다른 많은 Microsoft 서비스에서 사용됩니다. 이러한 환경에서 KQL을 사용하는 방법에 대한 자세한 내용은 다음 링크를 참조하세요.