본문 바로가기
● Data Processing

Power BI 연결하는 KQL SQL 쿼리 기초 문법과 예시

by DataFolio.lab 2026. 7. 15.

데이터 분석을 하려면 반드시 쿼리 언어를 알아야 할까? 아니다. 개발자가 아니어도 KQL(Kusto Query Language)과 SQL(Structured Query Language)의 기초 문법만 알면 원하는 정보만 딱 뽑아서 분석할 수 있다. 특히 Azure 환경에서 SAP, MSSQL 데이터를 다루는 Data Engineer나 BI Engineer는 이 두 쿼리 언어를 일상적으로 사용한다. 이 글에서는 초보자가 바로 따라 쓸 수 있는 KQL과 SQL의 기초 문법, 비교, 실무 활용법을 상세하게 설명한다.

Power BI 연결하는 KQL SQL 쿼리 기초 문법과 예시


KQL과 SQL이란 무엇인가?

SQL: 전통적인 관계형 데이터베이스 쿼리 언어

SQL 은 1970 년대부터 사용된 관계형 데이터베이스 관리 언어다. MSSQL, Oracle, MySQL, PostgreSQL 등 모든 관계형 DB 에서 사용한다. SQL 은 데이터를 조회, 삽입, 수정, 삭제할 수 있는 언어다.

주요 특징:

  • 관계형 데이터(테이블) 관리에 최적화
  • CRUD(Create, Read, Update, Delete) 모두 지원
  • 여러 테이블 간의 JOIN 이 강력
  • 학습 곡선이 다소 높음 (서브쿼리, 복잡한 JOIN 등)

KQL: Azure 환경의 실시간 분석 쿼리 언어

KQL 은 Microsoft 가 Azure 데이터 익스플로어, Azure Log Analytics, Application Insights 등에서 사용하는 쿼리 언어다. 이름은 Kusto Query Language 의 약자다. KQL 은 주로 로그, 원격 데이터, 시간 시리즈 같은 대규모 반구조화 데이터를 실시간으로 분석한다.

주요 특징:

  • 데이터 흐름 모델 사용: 각 단계의 입력/출력이 테이블
  • 읽기 전용: 데이터 수정 불가, 조회만 가능
  • 시간 시리즈 분석, 로그 검색에 최적화
  • 학습 곡선이 상대적으로 낮음, 직관적인 문법
  • Azure 생태계와 네이티브 통합

KQL과 SQL의 핵심 차이 비교

아래 표는 두 쿼리 언어의 주요 차이를 한눈에 보기 쉽게 정리했다.

구분 SQL KQL
용도 관계형 데이터베이스 관리 로그/텔리메트리 실시간 분석
데이터 수정 가능 (INSERT, UPDATE, DELETE) 불가능 (읽기 전용)
모델 테이블 기반 관계 모델 데이터 흐름 모델
JOIN 강력 (여러 테이블 연결) 제한적 (주로 단일 테이블 내 연산)
시간 시리즈 분석 기본 함수만 제공 내장 함수 풍부 (avg, sum over time 등)
학습 난이도 높음 (서브쿼리, 복잡한 JOIN) 낮음 (직관적, 단계별 연산)
Azure 통합 일반적 (MSSQL 등) 네이티브 통합
반구조화 데이터 비최적 최적화

SQL 기초 문법: 바로 따라 쓰는 7 가지 핵심 클로즈

SQL 은 클로즈 단위로 문법이 구성된다. 초보자가 가장 자주 사용하는 7 가지 클로즈만 알면 80% 이상의 조회를 할 수 있다.

1. SELECT: 데이터 조회

SELECT col_name1, col_name2
FROM TABLE_NAME;
  • col_name1, col_name2: 원하는 열(컬럼) 이름
  • TABLE_NAME: 테이블 이름
  • 모든 SQL 쿼리는 SELECT 로 시작한다

2. WHERE: 조건 필터링

SELECT col_name1, col_name2
FROM TABLE_NAME
WHERE age >= 18 AND status = 'active';
  • AND: 모든 조건이 참일 때만 반환
  • OR: 조건 중 하나라도 참일 때 반환
  • 비교 연산자: =, >, <, >=, <=, <>

3. ORDER BY: 정렬

SELECT col_name1, col_name2
FROM TABLE_NAME
ORDER BY col_name1 DESC;
  • ASC: 오름차순 (기본값)
  • DESC: 내림차순
  • ORDER BY 는 반드시 SELECT 문의 마지막에 위치

4. GROUP BY: 집계 그룹화

SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
  • COUNT(), SUM(), AVG(), MAX(), MIN() 등 집계 함수 사용
  • GROUP BY 기준 컬럼을 여러 개 지정 가능

5. JOIN: 여러 테이블 연결

SELECT e.name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.id;
  • INNER JOIN: 두 테이블의 교집합만 반환
  • LEFT JOIN: 왼쪽 테이블 모든 행 + 오른쪽 일치하는 행
  • RIGHT JOIN, FULL JOIN 도 존재

6. CASE WHEN: 조건문

SELECT name,
CASE
    WHEN age >= 18 THEN 'adult'
    ELSE 'minor'
END AS age_group
FROM users;
  • 특정 조건에 따라 값을 반환

7. LIKE: 문자열 패턴 매칭

SELECT name
FROM users
WHERE name LIKE 'John%';
  • %: 0 개 이상의 임의 문자
  • _: 정확히 1 개의 임의 문자

KQL 기초 문법: 단계별 연산 6 가지

KQL 은 SQL 과 문법이 다르다. KQL 은 단계별 연산으로 데이터를 처리한다. 각 단계의 출력은 다음 단계의 입력으로 들어간다.

1. 필터링: where

Sales
| where Amount > 1000
| where Region == 'Korea'
  • where: 행 필터링 (SQL 의 WHERE 와 유사)
  • ==: 비교 연산자 (SQL 의 = 대신 사용)

2. 열 선택: project

Sales
| where Amount > 1000
| project OrderID, Amount, Region
  • project: 지정된 컬럼만 반환 (SQL 의 SELECT 와 유사)

3. 정렬: order by

Sales
| where Amount > 1000
| order by Amount desc
  • order by: 결과 정렬 (SQL 의 ORDER BY 와 동일)

4. 집계: summarize

Sales
| where Amount > 1000
| summarize TotalAmount = sum(Amount), Count = count() by Region
  • summarize: by 표현식 다음에 동일한 값으로 그룹화
  • sum(), avg(), count(), min(), max() 등 집계 함수 사용

5. 개수 계산: count

Sales
| where Amount > 1000
| count
  • count: 행 개수 반환 (SQL 의 COUNT(*) 와 유사)

6. 제한: take

Sales
| where Amount > 1000
| take 10
  • take: 지정된 행 수만 반환 (기본값 5)

실무 활용 예시: Azure 환경에서 SAP/MSSQL 데이터 분석

상황 1: SAP 판매 데이터에서 상위 10 건 조회

Azure 데이터 익스플로어에서 SAP 판매 테이블을 조회하는 KQL 예시:

SAP_Sales
| where SaleDate >= '2025-01-01'
| where Amount > 5000
| project SaleID, CustomerName, Amount, SaleDate
| order by Amount desc
| take 10
  • SAP_Sales: SAP 판매 테이블 이름
  • SaleDate >= '2025-01-01': 2025 년 이후 데이터만 필터
  • project: 필요한 열만 선택
  • order by Amount desc: 금액 내림차순 정렬
  • take 10: 상위 10 건만 반환

상황 2: MSSQL 직원 데이터에서 부서별 평균 연령 계산

MSSQL 에서 SQL 로 부서별 평균 연령을 계산:

SELECT department, AVG(age) AS avg_age, COUNT(*) AS employee_count
FROM employees
WHERE status = 'active'
GROUP BY department
ORDER BY avg_age DESC;
  • AVG(age): 부서별 평균 연령
  • COUNT(*): 부서별 직원 수
  • GROUP BY department: 부서로 그룹화
  • ORDER BY avg_age DESC: 평균 연령 내림차순

상황 3: Azure Log Analytics 에서 오류 로그 검색

KQL로 로그에서 오류만 필터링:

AzureLog
| where Level == 'Error'
| where TimeGenerated >= ago(1h)
| project Timestamp = TimeGenerated, Message, Computer
| order by Timestamp desc
| take 50
  • Level == 'Error': 오류 로그만 필터
  • ago(1h): 최근 1 시간 이내 데이터
  • project: 열 이름 재정의 (Timestamp = TimeGenerated)
  • take 50: 최근 50 건 반환

초보자가 자주 하는 오류와 해결법

오류 1: SQL 에서 WHERE 앞에 COMMA 넣기

-- 잘못된 예
SELECT col1, col2,
FROM table;

-- 올바른 예
SELECT col1, col2
FROM table;
  • SELECT 마지막 열 뒤에 COMMA 넣으면 에러

오류 2: KQL 에서 비교 연산자 = 대신 == 사용

-- 잘못된 예
Sales | where Amount = 1000

-- 올바른 예
Sales | where Amount == 1000
  • KQL은 == 사용 (SQL 의 = 대신)

오류 3: SQL 에서 GROUP BY 누락

-- 잘못된 예
SELECT department, COUNT(*)
FROM employees;

-- 올바른 예
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
  • 집계 함수 사용 시 GROUP BY 필수

오류 4: KQL 에서 파이프(|) 위치 오류

-- 잘못된 예
Sales | where Amount > 1000 project OrderID

-- 올바른 예
Sales
| where Amount > 1000
| project OrderID
  • 각 연산은 새 줄에 파이프 시작

KQL과 SQL 언제 쓸까?

상황 추천 언어 이유
MSSQL, Oracle 등 관계형 DB 조회 SQL CRUD 전체 지원, JOIN 강력
Azure 로그/텔리메트리 실시간 분석 KQL 시간 시리즈 분석 최적화, 내장 함수 풍부
SAP 데이터 적재 후 분석 SQL → KQL 적재는 SQL, 실시간 분석은 KQL
Power BI 데이터 소스 연결 SQL Power BI 는 MSSQL/Oracle 등 RDBMS 와 네이티브 통합
Azure Data Explorer에서 대규모 로그 쿼리 KQL 네이티브 통합, 성능 최적화

 

Azure 환경에서는 SQL로 원천 데이터(SAP, MSSQL) 를 적재하고, KQL로 실시간 분석하는 패턴이 흔다.


Power BI와 쿼리 언어 연동

Power BI 는 SQL 과 KQL 모두 지원한다.

Power BI 에서 SQL 사용

  1. Power BI Desktop 실행
  2. Get Data → SQL Server Database 선택
  3. 서버 이름, 테이블 입력
  4. Advanced options에서 SQL 쿼리 직접 작성:
SELECT department, AVG(salary) AS avg_salary
FROM employees
WHERE status = 'active'
GROUP BY department

Power BI 에서 KQL 사용

  1. Get Data → Azure Data Explorer 선택
  2. KQL 쿼리 입력:
Sales
| where Amount > 1000
| summarize Total = sum(Amount) by Region
| order by Total desc
  1. Power BI 대시보드에서 시각화

학습 로드맵: 초보자가 1 주일에 끝내는 쿼리 언어 마스터

1 일차: SQL 기초 문법

  • SELECT, WHERE, ORDER BY 연습
  • 작은 테이블로 직접 쿼리 작성

2 일차: SQL 집계와 GROUP BY

  • COUNT(), SUM(), AVG() 사용
  • GROUP BY로 부서별/지역별 집계

3 일차: SQL JOIN 기초

  • INNER JOIN, LEFT JOIN 연습
  • 두 테이블 연결해서 조회

4 일차: KQL 기초 문법

  • where, project, order by 연습
  • 파이프(|) 로 단계 연결

5 일차: KQL 집계와 summarize

  • summarize + by로 그룹화
  • count, sum, avg 사용

6 일차: 실제 데이터로 연습

  • Azure Log Analytics에서 로그 조회
  • MSSQL에서 직원 데이터 집계

7 일차: Power BI 연동

  • SQL/KQL 쿼리로 Power BI 보고서 개발
  • 대시보드 시각화

개발자 아니어도 쿼리 언어로 데이터 뽑아내기

KQL과 SQL은 각각 다른 목적을 가진 쿼리 언어다. SQL은 관계형 데이터베이스 관리에, KQL은 Azure 환경의 실시간 로그/텔리메트리 분석에 최적화다. 개발자가 아니어도 기초 문법만 알면 원하는 정보만 딱 뽑아서 분석할 수 있다.

핵심 요약:

  • SQL: SELECT, WHERE, GROUP BY, JOIN, ORDER BY 5 가지 클로즈만 알면 80% 조회 가능
  • KQL: where, project, order by, summarize, count, take 6 가지 연산만 알면 기본 분석 완료
  • Azure 환경: SQL로 원천 데이터 적재, KQL로 실시간 분석
  • Power BI: SQL 과 KQL 모두 지원, 보고서 개발에 활용

이 글에서 설명한 기초 문법만 따라 하면 SAP, MSSQL 데이터를 적재하고 모델링해서 Power BI로 보고서를 개발하는 Data Engineer, BI Engineer의 일상 업무를 바로 시작할 수 있다.

반응형

놓치면 아쉬운 추천 글, 함께 읽어보세요!

  • 추천 글을 불러오는 중입니다...