자습서: 일반 연산자 알아보기
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
KQL(Kusto 쿼리 언어)은 Azure Data Explorer, Azure Monitor Log Analytics, Azure Sentinel 등에서 쿼리를 작성하는 데 사용됩니다. 이 자습서에서는 데이터에 액세스하고 분석하는 데 사용되는 필수 KQL 연산자를 소개합니다.
Azure Monitor에서 로그를 쿼리하는 방법에 대한 자세한 지침은 로그 쿼리 시작을 참조 하세요.
참고 항목
원하는 항목을 찾을 수 없나요? 이 문서는 최근에 다음과 같이 분할되었습니다.
- 일반 연산자 알아보기(이 문서)
- 집계 함수 사용
- 여러 테이블의 데이터 조인
- 지리 공간적 시각화 만들기
이 자습서에서는 다음 작업을 수행하는 방법을 알아봅니다.
이 자습서의 예제에서는 도움말 클러스터에서 공개적으로 사용할 수 있는 테이블을 사용합니다StormEvents
. 사용자 고유의 데이터를 사용하여 탐색하려면 사용자 고유의 무료 클러스터를 만듭니다.
이 자습서의 예제에서는 Weather Analytics 샘플 데이터에서 공개적으로 사용할 수 있는 테이블을 사용합니다StormEvents
.
필수 조건
다음 쿼리를 실행하려면 샘플 데이터에 액세스할 수 있는 쿼리 환경이 필요합니다. 다음 중 하나를 사용할 수 있습니다.
- 도움말 클러스터에 로그인 할 Microsoft 계정 또는 Microsoft Entra 사용자 ID
- Microsoft 계정 또는 Microsoft Entra 사용자 ID
- Microsoft Fabric 사용 용량이 있는 패브릭 작업 영역
행 수 계산
먼저 count 연산자를 사용하여 테이블에서 Storm 레코드 수를 찾습니다StormEvents
.
StormEvents
| count
출력
Count |
---|
59066 |
데이터 샘플 보기
데이터 감각을 얻으려면 take 연산자를 사용하여 레코드 샘플을 봅니다. 이 연산자는 테이블에서 지정된 개수의 임의 행을 반환합니다. 이 행은 일반 데이터 구조 및 내용을 미리 보는 데 유용할 수 있습니다.
StormEvents
| take 5
다음 표에서는 반환된 열 22개 중 5개만 보여 줍니다. 전체 출력을 보려면 쿼리를 실행합니다.
StartTime | EndTime | EpisodeId | EventId | State(상태) | EventType | ... |
---|---|---|---|---|---|---|
2007-09-20T21:57:00Z | 2007-09-20T22:05:00Z | 11078 | 60913 | 플로리다 | 토네이도 | ... |
2007-12-20T07:50:00Z | 2007-12-20T07:53:00Z | 12,554 | 68796 | 미시시피 | 뇌우를 동반한 바람 | ... |
2007-12-30T16:00:00Z | 2007-12-30T16:05:00Z | 11749 | 64588 | 그루지야 | 뇌우를 동반한 바람 | ... |
2007-09-29T08:11:00Z | 2007-09-29T08:11:00Z | 11091 | 61032 | ATLANTIC SOUTH | Waterspout | ... |
2007-09-18T20:00:00Z | 2007-09-19T18:00:00Z | 11074 | 60904 | 플로리다 | Heavy Rain | ... |
열의 하위 집합을 선택합니다.
프로젝트 연산자를 사용하여 보기를 단순화하고 열의 특정 하위 집합을 선택합니다. 사용 project
은 종종 모든 열을 보는 것보다 더 효율적이고 읽기 쉽습니다.
StormEvents
| take 5
| project State, EventType, DamageProperty
출력
State(상태) | EventType | DamageProperty |
---|---|---|
ATLANTIC SOUTH | Waterspout | 0 |
플로리다 | Heavy Rain | 0 |
플로리다 | 토네이도 | 6200000 |
그루지야 | 뇌우를 동반한 바람 | 2000 |
미시시피 | 뇌우를 동반한 바람 | 20000 |
고유 값 나열
이전 쿼리의 결과에 따라 여러 유형의 폭풍이 있는 것으로 보입니다. 고유 연산자를 사용하여 고유한 Storm 형식을 모두 나열합니다.
StormEvents
| distinct EventType
테이블에는 46가지 유형의 폭풍이 있습니다. 그 중 10 가지 샘플은 다음과 같습니다.
EventType |
---|
뇌우를 동반한 바람 |
Hail |
Flash Flood |
가뭄 |
겨울 날씨 |
겨울 폭풍 |
폭설 |
강풍 |
서리/결빙 |
홍수 |
... |
조건별로 필터링
where 연산자는 특정 조건에 따라 데이터 행을 필터링합니다.
다음 쿼리는 특정 State
EventType
특정에서 Storm 이벤트를 찾습니다.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty
이러한 조건과 일치하는 146개의 이벤트가 있습니다. 그 중 5개 샘플은 다음과 같습니다.
StartTime | EndTime | State(상태) | EventType | DamageProperty |
---|---|---|---|---|
2007-01-13T08:45:00Z | 2007-01-13T10:30:00Z | TEXAS | 홍수 | 0 |
2007-01-13T09:30:00Z | 2007-01-13T21:00:00Z | TEXAS | 홍수 | 0 |
2007-01-13T09:30:00Z | 2007-01-13T21:00:00Z | TEXAS | 홍수 | 0 |
2007-01-15T22:00:00Z | 2007-01-16T22:00:00Z | TEXAS | 홍수 | 20000 |
2007-03-12T02:30:00Z | 2007-03-12T06:45:00Z | TEXAS | 홍수 | 0 |
... | ... | ... | ... | ... |
결과 정렬
가장 큰 피해를 입힌 텍사스의 상위 홍수를 보려면 정렬 연산자를 사용하여 열을 기준으로 DamageProperty
행을 내림차순으로 정렬합니다. 기본 정렬 순서는 내림차순입니다. 오름차순으로 정렬하려면 asc
를 지정합니다.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty
출력
StartTime | EndTime | State(상태) | EventType | DamageProperty |
---|---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | TEXAS | 홍수 | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | TEXAS | 홍수 | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | TEXAS | 홍수 | 1000000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | TEXAS | 홍수 | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | TEXAS | 홍수 | 750000 |
... | ... | ... | ... | ... |
상위 n 개 행 가져오기
top 연산자는 지정된 열을 기준으로 정렬된 첫 번째 n행을 반환합니다.
다음 쿼리는 가장 손상된 속성을 발생시킨 5개의 텍사스 홍수를 반환합니다.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty
출력
StartTime | EndTime | State(상태) | EventType | DamageProperty |
---|---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | TEXAS | 홍수 | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | TEXAS | 홍수 | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | TEXAS | 홍수 | 1000000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | TEXAS | 홍수 | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | TEXAS | 홍수 | 750000 |
참고 항목
연산자의 순서가 중요합니다. 여기에 앞서 입력 top
where
하면 다른 결과를 얻을 수 있습니다. 이는 데이터가 각 연산자에 의해 순서대로 변환되기 때문입니다. 자세한 내용은 테이블 형식 식 문을 참조 하세요.
계산 열 만들기
프로젝트 및 확장 연산자는 모두 계산 열을 만들 수 있습니다.
보려는 열만 지정하고 계산 열을 테이블 끝에 추가하는 데 사용합니다 project
extend
.
다음 쿼리는 계산 열과 EndTime
을(를) 구분 StartTime
하여 계산 Duration
열을 만듭니다. 몇 개의 선택 열만 보려고 하므로 이 경우 사용하는 project
것이 더 좋습니다.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| project StartTime, EndTime, Duration = EndTime - StartTime, DamageProperty
출력
StartTime | EndTime | 기간 | DamageProperty |
---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | 1.01:30:00 | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | 12:00:00 | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | 05:00:00 | 1000000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | 08:00:00 | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | 03:00:00 | 750000 |
계산 열을 Duration
살펴보면 가장 큰 피해를 입힌 홍수가 가장 긴 홍수임을 알 수 있습니다.
계산 열을 Duration
다른 모든 열과 함께 보는 데 사용합니다extend
. Duration
열이 마지막 열로 추가됩니다.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| extend Duration = EndTime - StartTime
출력
StartTime | EndTime | ... | 기간 |
---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | ... | 1.01:30:00 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | ... | 12:00:00 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | ... | 05:00:00 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | ... | 08:00:00 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | ... | 03:00:00 |
한 집합에서 다른 집합으로 값 매핑
정적 매핑은 결과 표시를 변경하는 데 유용한 기술입니다. KQL에서 정적 매핑을 수행하는 한 가지 방법은 동적 사전 및 접근자를 사용하여 한 집합에서 다른 집합으로 값을 매핑하는 것입니다.
let sourceMapping = dynamic(
{
"Emergency Manager" : "Public",
"Utility Company" : "Private"
});
StormEvents
| where Source == "Emergency Manager" or Source == "Utility Company"
| project EventId, Source, FriendlyName = sourceMapping[Source]
출력
EventId | Source | FriendlyName |
---|---|---|
68796 | 응급 관리자 | 공공 사업 |
... | ... | ... |
72609 | 유틸리티 회사 | 프라이빗 |
... | ... | ... |
다음 단계
이제 Kusto 쿼리 작성의 필수 사항에 익숙해졌으므로 다음 자습서로 이동하여 집계 함수를 사용하여 데이터에 대한 심층적인 통찰력을 얻는 방법을 알아봅니다.