Fabric에서 SQL에서 KQL로 전환하기: 개발자를 위한 가이드
By Mirko Peters ·
이 개발자 가이드로 Microsoft Fabric에서 SQL에서 KQL로 전환하는 방법을 알아보세요. 절 매핑, 문법 차이, 시계열 쿼리를 다룹니다.
Automatically translated with AI from the original post. Read the English original

Microsoft Fabric에서 기존 SQL 기반 분석 워크로드를 Kusto Query Language(KQL)로 옮기는 일은 데이터베이스 관리자에게 부담스럽게 느껴질 수 있습니다. 이 가이드는 SQL 절과 KQL 연산자 사이의 직접적인 구조적 대응 관계를 살펴보고, 기존 데이터베이스 경험을 초기 학습 부담 없이 빠른 시계열 데이터 분석에 활용하는 방법을 보여줍니다.
핵심 요약
- KQL은 쿼리의 맨 앞에 테이블 이름을 두는 방식으로 SQL의 'FROM' 절을 대체합니다.
- KQL의 파이프(|) 기호는 연속된 연산을 연결하며, 쿼리 엔진이 데이터를 논리적으로 처리하는 순서를 그대로 보여줍니다.
- SQL의 'SELECT'는 KQL의 'project' 연산자에 대응하고, 'GROUP BY' 작업은 'summarize'로 直接 변환됩니다.
- Microsoft Fabric에는 내장 변환 지원 기능이 있어, 개발자가 실제 명령의 대응 구문을 통해 직접 실험하고 배울 수 있습니다.
- 프로덕션 수준의 KQL 쿼리를 작성하려면 대소문자 구분과 시간 버킷 바이닝을 이해하는 것이 필수적인 단계입니다.
SQL에서 KQL로의 사고 전환
Microsoft Fabric에서 KQL 데이터베이스를 처음 열면 문법이 약 5분 동안 낯설게 느껴집니다. 전통적인 SQL은 쿼리를 특정 절로 감싸야 하며, 보통 'SELECT'로 시작하고 원본 테이블은 문장 중간에 숨어 있는 'FROM' 절에서 지정합니다. KQL은 이 방식을 완전히 뒤집습니다.
KQL에서는 항상 테이블 이름으로 시작합니다. 테이블 이름이 service_events라면 그것이 가장 첫 줄입니다. 쿼리를 감싸는 추가 단어는 없습니다. 테이블을 선언한 뒤에는 이후의 모든 단계를 파이프 기호(|)로 연결합니다. 이 방식 덕분에 쿼리를 위에서 아래로 자연스럽게 읽을 수 있습니다. 즉 모든 이벤트로 시작해, 실패한 이벤트만 남기고, 시간별로 개수를 세고, 가장 문제가 많은 항목의 순위를 매기는 순서입니다.
SQL 절과 KQL 연산자 매핑
SQL을 이미 알고 있다면 그 경험을 장벽이 아니라 다리로 활용하세요. Fabric 이벤트 하우스에서 사용하는 Kusto 엔진은 거의 모든 표준 SQL 작업에 직접 대응하는 기능을 갖추고 있습니다. 다만 텔레메트리와 로그 분석에 최적화된 순서로 나타납니다.
데이터 샘플링과 프로젝션
익숙하지 않은 테이블을 살펴볼 때 SQL에서는 행 수를 제한하는 간단한 쿼리를 작성할 수 있습니다. KQL에서는 take 연산자를 사용합니다. service_events | take 10을 실행하면 열 이름, 날짜 형식, 상태 값을 확인할 수 있는 소량의 레코드 샘플을 얻을 수 있습니다.
SQL의 'SELECT' 문에 해당하는 특정 열 선택에는 KQL의 project 연산자를 사용합니다. 중요한 점은 project가 쿼리 흐름의 뒤쪽에서 실행된다는 것입니다. 프로젝션 중에 열 이름을 즉시 바꿀 수도 있어, 엔지니어링 팀 외부의 이해관계자를 위한 보고서를 작성할 때 큰 도움이 됩니다.
필터링과 속성 확장
KQL에서 행을 필터링하려면 where 연산자를 사용합니다. 여러 where 조건을 각각 다른 줄에 이어서 작성할 수 있으며, 복잡한 로직을 다룰 때 쿼리의 가독성이 크게 좋아집니다.
service_events | where timestamp > ago(24h) | where status_code == 500
데이터에 분석에 필요한 특정 속성이 없다면, extend 연산자를 사용해 기본 소스 테이블을 수정하지 않고 임시 계산 열을 만들 수 있습니다. 이 방법은 원시 오류 문자열에서 값을 추출하거나 타임스탬프를 분류해 이후 집계에 활용할 때 적합합니다.
집계와 시계열 데이터 처리
SQL에서 데이터를 그룹화하려면 'GROUP BY' 절이 필요합니다. KQL에서는 summarize 연산자가 개수, 평균, 최소값, 최대값 등 그룹별 계산을 모두 처리합니다. 예를 들어 서비스 이름별 실패 건수를 세는 코드는 다음과 같습니다.
service_events | summarize failure_count = count() by service_name
Fabric에서 로그와 원격 분석 데이터를 다룰 때는 시간이 거의 항상 기본 그룹화 기준이 됩니다. KQL은 bin() 함수를 사용해 타임스탬프를 시간 단위나 5분 단위처럼 일정한 간격으로 묶습니다. 이를 통해 방대하고 어수선한 개별 트랜잭션 로그 목록을 깔끔하고 실행 가능한 타임라인으로 바꿀 수 있습니다.
결론 및 다음 단계
Microsoft Fabric에서 KQL을 익히면 실시간 인텔리전스, 원격 분석 모니터링, 로그 분석을 위한 강력한 기능을 활용할 수 있습니다. 기존 SQL 지식을 파이프라인 방식에 맞는 KQL 연산자에 대응시키면 문제 해결 시간을 줄이고 스트리밍 데이터에서 바로 가치를 얻을 수 있습니다. 이러한 이벤트 하우스와 실시간 분석 엔진의 전반적인 아키텍처를 더 깊이 알아보려면 전체 에피소드를 들어보세요. 전문가의 인사이트와 실습 전략을 얻을 수 있습니다.