연습 - where 연산자를 사용하여 데이터 필터링

완료됨

표시된 결과 내부 또는 외부의 특정 열을 필터링했습니다. 이 단원에서는 여러 지역 또는 시간대에서 발생한 기상 이벤트의 종류와 피해를 일으킨 이벤트 유형에 대한 질문에 답변하는 방법을 알아봅니다.

where 연산자 사용

지금까지 사용한 모든 연산자는 선택한 열을 반환했습니다. 이제 데이터의 특정 행을 살펴보겠습니다.

where 연산자는 특정 조건을 충족하는 결과를 필터링합니다. 첫 번째 예제에서는 숫자 연산자 greater than(>)을 사용하여 정수 열을 최솟값에 비교합니다. 특히 재산 피해를 입힌 폭풍만 확인하려고 하므로 재산 피해가 0보다 큰 데이터 행을 살펴보겠습니다.

  1. 다음 쿼리를 실행합니다.

    쿼리 실행

    StormEvents
    | where DamageProperty > 0
    | project State, EventType, DamageProperty
    | take 10
    
  2. 다음 이미지와 같은 결과가 표시됩니다.

    숫자 연산자가 0보다 큰 where 연산자의 쿼리 결과 스크린샷

  3. 실제로 반환된 모든 행은 DamageProperty 값이 0보다 큽니다.

  4. 마찬가지로 이벤트 시간이 특정 기간(일) 이전에 발생한 위치를 필터링할 수 있습니다. 예를 들어 다음 쿼리를 실행 합니다. 여기서 365d는 365일을 의미합니다.

    쿼리 실행

    StormEvents
    | where DamageProperty > 0
    | where StartTime > ago(365d)
    | project State, EventType, DamageProperty
    
  5. 이 쿼리는 결과를 반환하지 않습니다. 2007년부터의 데이터이므로 작년의 레코드는 없습니다.

문자열 값을 사용하여 필터링

몇 가지 유형의 폭풍우가 미국 전역에서 피해를 발생한 것처럼 보입니다. 플로리다 주처럼 특정 지역에서 발생한 폭풍우로 범위를 좁혀 보겠습니다.

  1. 다음 쿼리를 실행합니다. 이 쿼리는 문자열 값 "FLORIDA"이 있는 두 번째 where 연산자를 사용합니다.

    쿼리 실행

    StormEvents
    | where DamageCrops > 0
    | where State == "FLORIDA"
    | project State, EventType, DamageCrops
    
  2. 다음 이미지와 같은 결과가 표시됩니다.

    두 where 연산자에 대한 쿼리 결과의 스크린샷

  3. 이 쿼리에서 반환된 모든 레코드는 플로리다에서 가져왔으며, 농작물 피해가 0보다 큽니다.

has 연산자를 사용하여 필터링

마지막 쿼리 결과의 이벤트 유형 중 하나를 Thunderstorm Wind라고 합니다. 플로리다에서 재산 피해를 일으킨 다른 종류의 폭풍이 있는지 살펴보겠습니다. has 연산자를 사용하여 wind와 일치하는 문자열을 검색합니다. has 연산자는 전체 용어와 일치하는 대/소문자를 구분하지 않는 검색입니다.

  1. 다음 쿼리를 실행합니다.

    쿼리 실행

    StormEvents
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | where EventType has "wind"
    | project StartTime, EventType, DamageProperty
    
  2. 다음 이미지와 같은 결과가 표시됩니다.

    where 및 has 연산자에 대한 쿼리 결과의 스크린샷

  3. 결과에는 토네이도 같은 이벤트는 더 이상 표시되지 않지만 Thunderstorm WindStrong Wind 이벤트 유형은 표시됩니다.

contains 연산자는 has와 유사하지만 모든 부분 문자열에서 일치합니다. 예를 들어, 다음 쿼리는 Freezing fogFrost/Freeze와 같은 결과를 반환합니다.

StormEvents | where EventType contains "free"

has 연산자는 contains 연산자보다 성능이 우수하므로 둘 사이에서 선택할 수 있을 때마다 has를 사용해야 합니다.

datetime 값 필터링

상반기에 발생한 피해를 자세히 살펴보겠습니다. 특정 시간 범위 내의 이벤트로 검색을 제한하는 것이 유용할 수 있습니다. Kusto Query Language를 사용하는 몇몇 인터페이스에는 드롭다운 시간 선택기가 있지만, 다른 경우에는 날짜 필터를 쿼리 자체에 통합해야 합니다.

시간 범위는 양극단까지로 제한되므로, 이러한 두 시간 사이의 값을 선택하는 쿼리를 구성하는 것이 가장 효율적입니다.

이 날짜 범위를 생성하는 구문은 다음과 같습니다.

where time between (datetime(value)..datetime(value))

  1. datetime 범위를 이미 살펴본 쿼리의 종류에 통합해 보겠습니다. 다음 쿼리를 실행합니다.

    쿼리 실행

    StormEvents
    | where StartTime between (datetime(2007-01-01)..datetime(2007-06-01))
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | project StartTime, EventType, DamageProperty
    | take 50
    
  2. 다음 이미지와 같은 결과가 표시됩니다.

    시간 범위가 포함된 where 연산자에 대한 쿼리 결과의 스크린샷

  3. 모든 날짜는 해당 연도의 상반기(1~6개월) 내에 있습니다. 또한 플로리다 주의 이벤트를 선택했음에도 불구하고 project 연산자로 지정하지 않았기 때문에 플로리다 주는 출력 열로 표시되지 않습니다.