여러 테이블의 데이터를 조인하면 원본 간에 데이터를 분석하고 데이터 요소 간의 관계를 만들 수 있습니다. KQL(Kusto 쿼리 언어)에서 조인 및 조회 연산자를 사용하여 테이블 간에 데이터를 결합합니다.
이 튜토리얼에서는 다음을 배우게 됩니다:
이 자습서의 예제에서는 도움말 클러스터에서 공개적으로 사용할 수 있는 테이블을 사용합니다StormEvents. 사용자 고유의 데이터를 사용하여 탐색하려면 사용자 고유의 무료 클러스터를 만듭니다.
이 자습서의 예제에서는 Weather Analytics 샘플 데이터에서 공개적으로 사용할 수 있는 테이블을 사용합니다StormEvents.
필수 조건
샘플 데이터에 액세스할 수 있는 쿼리 환경에서 쿼리를 실행합니다. 다음 중 하나를 사용합니다.
- 도움말 클러스터에 로그인할 Microsoft 계정 또는 Microsoft Entra 사용자 ID
조인 연산자 사용
Samples 데이터베이스에는 두 개의 관련된 폭풍 이벤트 테이블: StormEvents과 PopulationData. 이 섹션에서는 테이블을 조인하여 하나의 테이블만으로는 볼 수 없는 데이터를 분석합니다.
데이터 이해
take 연산자를 사용하여 각 테이블에 포함된 데이터를 확인합니다.
StormEvents
| take 5
다음 표에서는 반환된 22개 열 중 6개만 보여 줍니다.
| 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 | 애틀랜틱 사우스 | Waterspout | ... |
| 2007-09-18T20:00:00Z | 2007-09-19T18:00:00Z | 11074 | 60904 | 플로리다 | 폭우 | ... |
PopulationData
| take 5
출력
| State(상태) | 채우기 |
|---|---|
| ALABAMA | 4918690 |
| 알래스카 | 727951 |
| ARIZONA | 7399410 |
| ARKANSAS | 3025880 |
| 캘리포니아 | 39562900 |
두 테이블 모두에 State 열이 있습니다.
StormEvents에는 더 많은 열이 있고, PopulationData에는 주의 인구가 포함된 열이 하나 더 있습니다.
테이블 조인
주별 1인당 총 재산 피해를 계산하기 위해 PopulationData을(를) StormEvents과(와) State에서 결합합니다.
StormEvents
| summarize PropertyDamage = sum(DamageProperty) by State
| join kind=innerunique PopulationData on State
| project State, PropertyDamagePerCapita = PropertyDamage / Population
| sort by PropertyDamagePerCapita
쿼리에 추가하여 | render columnchart 결과를 시각화합니다.
열의 이름이 다른 경우(예: StormEvents은 State이고 PopulationData은 StateName인 경우) 조인을 다음과 같이 지정합니다.
StormEvents
| join kind=innerunique PopulationData on $left.State == $right.StateName
$left 는 조인 연산에서 StormEvents의 왼쪽(외부) 테이블을 나타냅니다.
$right 는 오른쪽(내부) 테이블PopulationData를 참조합니다.
팁
많은 조인 형식에 연산자를 join 사용합니다. 조인 유형 목록을 참조하세요.
조회 연산자 사용
조회 연산자는 차원 테이블의 데이터를 사용하여 팩트 테이블을 보강하는 쿼리를 최적화합니다. 차원 테이블의 값을 사용하여 팩트 테이블을 확장합니다. 기본적으로 시스템은 왼쪽 테이블이 더 큰 팩트 테이블이고 오른쪽 테이블은 더 작은 차원 테이블이라고 가정합니다. 이 기본값은 연산자의 가정과 join 반대입니다.
도움말 클러스터에는 판매 데이터가 포함된 데이터베이스가 ContosoSales 포함됩니다. 다음 쿼리는 제품 범주별 총 매출을 반환하기 위해 lookup를 사용하여 SalesFact 테이블과 Products 테이블을 병합합니다.
SalesFact
| lookup Products on ProductKey
| summarize TotalSales = count() by ProductCategoryName
| order by TotalSales desc
출력
| ProductCategoryName | TotalSales |
|---|---|
| 게임 및 장난감 | 966782 |
| TV 및 비디오 | 715024 |
| 카메라 및 캠코더 | 323003 |
| 컴퓨터 | 313487 |
| 가전 제품 | 237508 |
| 오디오 | 192671 |
| 휴대 전화 | 50342 |
| 음악, 영화 및 오디오 북 | 33376 |
참고 항목
연산자는 lookup 두 가지 조인 버전만 지원합니다. leftouterinner
쿼리 생성 테이블 조인
동일한 테이블의 결과를 조인합니다.
번개와 눈사태 이벤트가 모두 있는 상태 목록을 원한다고 가정합니다. 조인 연산자를 사용하여 State 열에 대해 각 이벤트 유형의 고유 상태를 반환하는 두 개의 쿼리의 행을 병합합니다.
StormEvents
| where EventType == "Lightning"
| distinct State
| join kind=inner (
StormEvents
| where EventType == "Avalanche"
| distinct State
)
on State
| project State
출력
| State(상태) |
|---|
| OREGON |
| UTAH |
| WYOMING |
| WASHINGTON |
| 콜로라도주 |
| IDAHO |
| 네바다주 |
관련 콘텐츠
- 다양한 종류의 조인 연산자에 대해 알아봅니다.
- 데이터베이스 간 및 클러스터 간 쿼리를 수행합니다.
- 지리 공간적 시각화 만들기 자습서를 따릅니다.