다음을 통해 공유


자습서: 일반 연산자 알아보기

적용 대상: ✅Microsoft Fabric

KQL(Kusto 쿼리 언어)은 Azure Data Explorer, Azure Monitor Log Analytics, Azure Sentinel 등에서 쿼리를 작성하는 데 사용됩니다. 이 자습서에서는 데이터에 액세스하고 분석하는 데 사용되는 필수 KQL 연산자를 소개합니다.

Azure Monitor에서 로그를 쿼리하는 방법에 대한 자세한 지침은 로그 쿼리 시작을 참조 하세요.

참고 항목

원하는 항목을 찾을 수 없나요? 이 문서는 최근에 다음과 같이 분할되었습니다.

이 자습서에서는 다음 작업을 수행하는 방법을 알아봅니다.

이 자습서의 예제에서는 도움말 클러스터에서 공개적으로 사용할 수 있는 테이블을 사용합니다StormEvents. 사용자 고유의 데이터를 사용하여 탐색하려면 사용자 고유의 무료 클러스터를 만듭니다.

이 자습서의 예제에서는 Weather Analytics 샘플 데이터에서 공개적으로 사용할 수 있는 테이블을 사용합니다StormEvents.

필수 조건

다음 쿼리를 실행하려면 샘플 데이터에 액세스할 수 있는 쿼리 환경이 필요합니다. 다음 중 하나를 사용할 수 있습니다.

행 수 계산

먼저 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
가뭄
겨울 날씨
겨울 폭풍
폭설
강풍
서리/결빙
홍수
...

결과 정렬

가장 큰 피해를 입힌 텍사스의 상위 홍수를 보려면 정렬 연산자를 사용하여 열을 기준으로 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
... ... ... ... ...

조건별로 필터링

where 연산자는 특정 조건에 따라 데이터 행을 필터링합니다.

다음 쿼리는 특정 StateEventType특정에서 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
... ... ... ... ...

날짜 및 시간 범위별로 필터링

연산자 간의 사용하여 특정 시간 범위에 따라 데이터를 필터링합니다.

다음 쿼리는 2007년 8월 1일부터 2007년 8월 30일 사이의 모든 Storm 이벤트와 해당 상태, 이벤트 유형, 시작 및 종료 시간을 찾습니다. 그런 다음 시작 시간별로 결과를 오름차순으로 정렬합니다.

StormEvents
| where StartTime between (datetime(2007-08-01 00:00:00) .. datetime(2007-08-30 23:59:59))
| project State, EventType, StartTime, EndTime
| sort by StartTime asc 

출력

State(상태) Eventype StartTime EndTime
그루지야 과도한 열 2007-08-01 00:00:00 2007-08-27 23:59:00
테네시 주 가뭄 2007-08-01 00:00:00 2007-08-31 23:59:00
테네시 주 가뭄 2007-08-01 00:00:00 2007-08-3123:59:00
사우스캐롤라이나 주 가뭄 2007-08-01 00:00:00 2007-08-31 23:59:00
테네시 주 가뭄 2007-08-01 00:00:00 2007-08-31 23:59:00
그루지야 과도한 열 2007-08-01 00:00:00 2007-08-27 23:59:00
테네시 주 가뭄 2007-08-01 00:00:00 2007-08-31 23:59:00
미네소타 가뭄 2007-08-01 00:00:00 2007-08-31 23:59:00
위스콘신 가뭄 2007-08-01 00:00:00 2007-08-31 23:59:00
그루지야 과도한 열 2007-08-01 00:00:00 2007-08-27 23:59:00
... ... ... ...

상위 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

참고 항목

연산자의 순서가 중요합니다. 여기에 앞서 입력 topwhere 하면 다른 결과를 얻을 수 있습니다. 이는 데이터가 각 연산자에 의해 순서대로 변환되기 때문입니다. 자세한 내용은 테이블 형식 식 문을 참조 하세요.

계산 열 만들기

프로젝트확장 연산자는 모두 계산 열을 만들 수 있습니다.

보려는 열만 지정하고 계산 열을 테이블 끝에 추가하는 데 사용합니다 projectextend .

다음 쿼리는 계산 열과 Duration을(를) 구분 StartTime 하여 계산 EndTime 열을 만듭니다. 몇 개의 선택 열만 보려고 하므로 이 경우 사용하는 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 살펴보면 가장 큰 피해를 입힌 홍수가 가장 긴 홍수임을 알 수 있습니다.

계산 열을 extend 다른 모든 열과 함께 보는 데 사용합니다Duration. 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 쿼리 작성의 필수 사항에 익숙해졌으므로 다음 자습서로 이동하여 집계 함수를 사용하여 데이터에 대한 심층적인 통찰력을 얻는 방법을 알아봅니다.