GitHub GitHub의 컨트리뷰션: 온라인 편집

Kusto Query Language (KQL) 개요

Kusto Query Language는 데이터를 탐색하고 패턴을 발견하며 이상 항목 및 이상치를 식별하고 통계 모델링을 작성하는 등의 강력한 도구입니다.

Kusto 조회의 개념

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

쿼리 명령문의 개념

두 종류의 사용자 조회 명령문이 있습니다.

가장 일반적인 종류의 쿼리 명령문은 테이블 표현식 명령문입니다. 이는 입력 및 출력이 모두 테이블 또는 테이블 데이터 세트로 구성됨을 의미합니다. 테이블 명령문에는 0개이상의 연산자가 포함되며, 각 연산자는 테이블 입력으로 시작하고 테이블 출력을 리턴합니다. 연산자는 | (파이프) 로 순서 지정됩니다. 한 연산자에서 다음 연산자로 데이터가 플로우되거나 파이프됩니다. 데이터는 각 단계에서 필터링되거나 조작된 후 다음 단계로 피드됩니다.

전체 데이터 테이블로 시작하는 퍼널과 같습니다. 데이터가 다른 연산자를 통과할 때마다 필터링, 재배열 또는 요약됩니다. 한 연산자에서 다른 연산자로 정보를 파이프하는 것은 순차적이므로 쿼리 연산자 순서가 중요하며 결과 및 성능 모두에 영향을 줄 수 있습니다. 깔때기 끝에는 정제된 출력이 남아 있습니다.

예제 쿼리를 살펴보겠습니다. KQL은 모든 테이블 이름, 테이블 컬럼 이름, 연산자, 함수 등에 대해 대소문자를 구분합니다.

events_all
    | project original_time, user_id
    | where original_time > ago(5m) and user_id contains "user"
    | count

결과

개수
28

이 조회에는 단일 테이블 형식 표현식 명령문이 있습니다. 명령문은 events_all테이블에 대한 참조로 시작합니다. 이 간단한 명령문은 실제로 제한 없이 모든 데이터를 페치하는 것을 의미합니다. 매우 유용하지만 비용이 많이 들기 때문에 항상 추가 연산자로 제한해야 합니다.

events_all

두 번째 명령문은 project 연산자를 적용하여 관심있는 열만 지정하는 것입니다. events_all의 경우, 400개이상의 열이 있으며 이 조회를 완료하려면 2개만 필요하므로 다른 조회를 포함하면 큰 비용이 발생하고 아무런 이점이 없습니다. 항상 프로젝트 명령문 포함.

| project original_time, user_id

세 번째 명령문은 where 를 적용하여 술어 목록을 지정함으로써 프로젝션에서 데이터를 제한합니다. 아래에서는 마지막 5분동안 데이터 소스에서 생성된 레코드만 필요하고 user_id에 "user" 문자가 포함되어 있음을 표시합니다.

| where original_time > ago(5m) and user_id contains "user"

이 쿼리는 두 행에 걸쳐 논리 and 문을 구분하기 위해 작성할 수도 있습니다. 이는 명확성을 위해 유용하며 KQL의 고도로 반복적인 특성의 강도로 의한 효율한 의한 재생입니다. 여기서는 여러 where 절을 활용할 때 한 가지 고려사항이 있습니다. 이는 내재된 and 문입니다. where 의 두 예제는 동일합니다.

| where original_time > ago(5m) 
| where user_id contains "user"

마지막 명령문은 count를 적용합니다. 이는 where절에서 일치하는 모든 레코드를 가져오고 단순 집계를 수행합니다. 출력은 단일 long값을 갖는 테이블입니다.

| count

개수
28