다음을 통해 공유


Data Explorer 고급 모드 시작

Important

Data Explorer 기능은 공개 미리 보기로 제공됩니다. Microsoft는 계속해서 피드백을 수집하고 고객 사용을 최적화함에 따라 지속적인 변경이 있을 것으로 예상합니다.

Data Explorer 고급 모드는 임시 데이터 탐색에 최적화된 SQL과 유사한 언어인 Azure Data Explorer 쿼리 언어를 사용하여 더 복잡한 쿼리와 심층 인사이트를 제공하도록 설계되었습니다. 비기술 쿼리를 작성하는 방법을 알아보려면 Data Explorer 기본 모드로 시작하기 자습서를 참조하세요.

사용자 지정 쿼리 작성

고급 모드에서 사용자 쿼리 작성을 시작하려면 먼저 액세스하려는 데이터의 모양을 이해하는 것이 중요합니다.

events.all 테이블

events.all 테이블은 모든 들어오는 이벤트의 기본 대상입니다. 시간 및 이벤트 이름과 같은 공통 값에 대한 열이 있는 단일 반구조화된 테이블입니다. 전체 원본 JSON 페이로드를 포함하고 거의 모든 쿼리에 유용한 EventData 열에 빠르게 익숙해질 것입니다. events.all 테이블에서 다음 설명서를 읽을 수 있습니다.

쿼리의 구조

쿼리 식은 일반적으로 테이블의 이름으로 시작하고, 그 뒤에 파이프 구분 기호(|)가 표시됩니다. 그 다음 하나 이상의 연산자가 옵니다. 각 연산자는 파이프 구분 기호로 구분됩니다.

식

기본 설정의 경우 쿼리를 한 줄로 표현하거나 각 파이프 구분 기호 앞에 줄 바꿈을 사용할 수 있습니다. 쿼리 자체에는 차이가 없습니다.

쿼리 창

쿼리 창에는 두 개 이상의 쿼리가 포함될 수 있습니다. 따라서 간단한 식으로 쿼리를 쉽게 시작하고, 실행되는지 검증하고, 빌드할 수 있습니다.

빈 줄은 한 쿼리를 다른 쿼리와 구분합니다. 커서 위치는 "실행" 버튼을 누를 때 실행되는 쿼리를 결정합니다. 쿼리의 일부를 강조 표시하여 해당 식만 실행할 수도 있습니다.

실행

첫 번째 쿼리 작성

이제 첫 번째 쿼리를 처음부터 작성해 보겠습니다. 쿼리 창에 테이블 이름을 입력할 수 있습니다. 하지만 약간의 바로 가기를 사용하겠습니다. 리소스 창에서 events.all 테이블을 찾습니다. 화살표를 클릭하여 타이틀 ID 데이터베이스를 확장해야 할 수 있습니다.

Events.all 테이블

events.all 테이블을 찾은 다음 테이블 이름을 두 번 클릭합니다. 이 식이 쿼리 창에 추가된 것을 알 수 있습니다.

참고 항목

미리 보기에서는 테이블 이름 주위에 대괄호와 작은따옴표를 수동으로 추가해야 합니다. 이 불편 사항에 대한 수정이 진행 중입니다.

['events.all']
| 

이름 주위의 대괄호와 작은따옴표에 유의하세요. 테이블 또는 열 이름에 "."가 포함되어 있는 경우 반드시 필요합니다. 이제 커서가 첫 번째 연산자를 작성할 수 있는 올바른 위치에 있습니다. 먼저 take 연산자를 사용해 보겠습니다.

['events.all']
| take 100

이 쿼리를 실행합니다. 이제 결과 창에 100개의 원시 데이터 행이 표시됩니다.

결과 창에서 맨 위 행을 선택합니다. 오른쪽 화살표를 사용하여 FullName_Name 열로 이동합니다. 이벤트의 이름입니다. player_logged_in 이벤트를 찾을 때까지 아래쪽 화살표로 이동합니다. 이벤트를 찾은 후 오른쪽 화살표로 EventData 열로 이동한 후 두 번 클릭합니다. 이제 다음과 같이 표시됩니다.

이벤트 데이터 열

쿼리에서 점 표기법(.)을 사용하여 EventData JSON의 모든 속성을 참조할 수 있습니다. 여기서는 단일 플레이어의 player_logged_in 이벤트만 반환하도록 쿼리를 수정해 보겠습니다. EntityID GUID를 두 번 클릭하고 클립보드에 복사합니다.

이제 다음과 같이 쿼리를 업데이트하고 복사한 GUID를 삽입합니다.

['events.all']
| where FullName_Name == 'player_logged_in'
| where Entity_Id == 'paste from clipboard here'

이중 등호는 문자열 동등성을 평가하는 데 사용됩니다. 시작과 끝의 작은따옴표는 문자열을 구분합니다.

쿼리를 실행하면 선택한 플레이어에 대한 player_logged_in 이벤트만 결과 창에 표시됩니다. 점 표기법을 사용하여 각 계층 사이에 점을 추가하기만 하면 JSON 계층 구조의 여러 중첩 계층을 참조할 수 있습니다.

이제 지역별로 플레이어 로그인을 그룹화하는 두 번째 쿼리를 작성해 보겠습니다. 작성한 내용을 삭제하지 않고 Return 키를 두 번 누릅니다. "//"를 사용하여 다음 쿼리에 설명을 추가해 보겠습니다. 주석은 실행되지 않으며 각 쿼리의 의도를 추적하는 데 유용합니다.

//Player logins by platform

다시 한 번 리소스 창에서 events.all 테이블을 두 번 클릭합니다. 이번에는 시간 구분 기호를 식에 추가하여 쿼리 범위를 이전 3일로 지정해 보겠습니다.

//Player logins by platform
['events.all']
| where Timestamp > ago(30d)
| where FullName_Name == 'player_logged_in'

이 쿼리를 실행하여 지난 3일 동안의 모든 로그인 이벤트의 전체 목록을 가져옵니다. 하지만 이벤트 수가 아니라 로그인한 고유 플레이어 수를 알고 싶습니다. 이렇게 하려면 엔터티 ID별로 고유 연산자를 사용합니다.

['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| distinct Entity_Id

이 쿼리는 지난 3일 동안 로그인한 엔티티 ID 목록을 반환합니다. 결과 창에는 레코드 수가 표시되므로 총 개수를 확인할 수 있습니다.

레코드

이제 각 플랫폼에서 로그인한 플레이어 수를 알아봅시다. 이렇게 하려면 EventData JSON의 플랫폼 속성별로 그룹화된 고유 엔터티 ID 수가 필요합니다. 따라서 summarize 연산자가 필요합니다. summarize은(는) 동적 형식을 지원하지 않으므로 플랫폼을 문자열로 캐스트해야 합니다.

['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| summarize dcount(Entity_Id) by tostring(EventData.Platform)

장식을 사용하여 이 작업을 완료해 보겠습니다. 단일 식을 추가하여 결과를 세로 막대형 차트로 렌더링할 수 있습니다.

['events.all']
| where Timestamp > ago(3d)
| where FullName_Name == 'player_logged_in'
| summarize dcount(Entity_Id) by tostring(EventData.Platform)
| render columnchart

쿼리

샘플 쿼리

탐색기에서 작성할 수 있는 쿼리 유형을 일부만 살펴보았습니다. “설명”을 눌러서 탐색기 페이지에서 더 많은 예제 쿼리를 로드할 수 있습니다. 각 샘플 쿼리는 사용 가능한 다양한 연산자 중 일부와 연산자를 실제 질문에 적용할 수 있는 방법을 보여 주기 위해 선택되었습니다.

참고 항목

사용자의 데이터 모양은 데모 데이터 세트와 다를 수 있으므로 시나리오에 맞게 실행되도록 샘플 쿼리를 수정해야 할 수 있습니다.

제한 사항

Explorer 쿼리 사용을 제어하는 두 가지 제한이 있습니다.

  1. 최대 쿼리 실행 시간: 개별 쿼리는 30초 이상 실행할 수 없습니다. 이 제한을 초과하면 쿼리가 종료되고 오류 메시지가 표시됩니다.

  2. 간격 사용: 각 타이틀에는 지정된 10분 간격당 3분의 총 누적 런타임이 허용됩니다. 이 한도를 초과하면 오류 메시지가 표시되며 추가 쿼리를 실행하기 전에 기다려야 합니다.

데이터 보존

기본적으로 Data Explorer 쿼리는 관리 도구에서 구성할 수 있는 핫 스토리지에서 실행됩니다. 핫 스토리지에 저장된 데이터 이상을 검색하는 쿼리는 실행 시간이 훨씬 더 길고 시간이 초과될 수 있습니다.