다음을 통해 공유


자습서: 여러 테이블의 데이터 조인

적용 대상: ✅Microsoft Fabric

여러 테이블의 데이터를 조인하면 원본 간에 데이터를 분석하고 데이터 요소 간의 관계를 만들 수 있습니다. KQL(Kusto 쿼리 언어)에서 인 및 조회 연산자를 사용하여 테이블 간에 데이터를 결합합니다.

이 튜토리얼에서는 다음을 배우게 됩니다:

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

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

필수 조건

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

조인 연산자 사용

Samples 데이터베이스에는 두 개의 관련된 폭풍 이벤트 테이블: StormEventsPopulationData. 이 섹션에서는 테이블을 조인하여 하나의 테이블만으로는 볼 수 없는 데이터를 분석합니다.

데이터 이해

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 결과를 시각화합니다.

주별 1인당 속성 손상을 보여 주는 세로 막대형 차트의 스크린샷

열의 이름이 다른 경우(예: StormEventsState이고 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
네바다주