[MicrosoftDataSchool] 28일차 - Azure Stream Analytics, PowerBI

RudinP·2026년 2월 9일

Microsoft Data School 3기

목록 보기
30/34
post-thumbnail

Azure Stream Analytics

밀리초 단위의 인사이트 도출을 위한 완전 관리형(PaaS) 스트림 처리 엔진

하드웨어 프로비저닝이나 OS 업데이트 없이 비즈니스 로직에 집중 가능

Micro-Latency

밀리초(ms) 미만의 대기 시간으로 데이터 처리

Scalability

초당 수백만 개의 이벤트 처리(클릭 스트림, IoT, 로그)

Integration

Azure IoT Edge 런타임을 통해 클라우드와 Edge 모두 지원

ASA를 쓰는 경우

  • SQL 기반의 빠른 개발이 필요할 때
  • Azure 네이티브 서비스(Event Hubs, IoT Hub)와의 즉각적인 통합이 필요할 때
  • 클러스터 관리에 리소스를 낭비하고 싶지 않을 때
  • 지리 공간적 기능 및 기본 제공 변칙 검색이 필요할 때

Spark/Flink/EventProcessorHost 를 써야하는 경우

  • 솔루션이 멀티 클라우드 또는 온프레미스(Azure외부) 로 이식되어야 할 때
  • Java 또는 Python 등으로 작성된 고도로 복잡한 사용자 지정 코드가 메인일 때

ASA는 JavaScript / C# UDF를 지원하지만, 비표준 언어의 광범위한 에코시스템이 필수적인 경우 Spark 구조적 스트리밍 고려

수집-배포 플로우

패턴 1: 실시간 시각화 및 대시보드

패턴 2: 이벤트 메시징 및 자동화된 대응

운영 안정성 및 모니터링

워터마크 지연

처리 파이프라인이 실제 시간보다 얼마나 뒤처져 있는지 모니터링

SU 사용률 제공

리소스 부족 방지. 80% 이상 시 확장 고려
*SU: Streaming Unit

복원력

Backfilling & Checkpointing - 데이터 손실 없는 장애 복구 및 과거 데이터 재처리


Azure Stream Analytics 입력

연결, 구성 및 문제 해결 가이드

입력 생태계

데이터 유형: 스트림 vs. 참조

데이터 스트림 입력

시간이 지남에 따라 생성되는 무한한 이벤트 시퀀스

  • Event Hubs
  • blob (Logs)
  • IoT Hub
  • Kafka
    ex) 차량의 번호판

참조 데이터 입력

상관 관계 및 조회를 위한 정적 또는 느리게 변경되는 데이터

  • Blob Storage
  • SQL Database
    ex) 차량의 차종, 소유주

Azure Event Hubs

  • 처리량: 초당 수백만 개의 이벤트 수집 가능
  • 타임스탬프: 기본값은 EventEnqueuedUtcTime(페이로드 시간 사용 시 TIMESTAMP BY 필요)
  • 소비자 그룹: 확장성을 위해 각 ASA 작업마다 전용 소비자 그룹 구성 필수
  • 인증: 연결 문자열 또는 관리 ID 지원

Blob Storage & ADLS Gen2


13시에 작업 시정으로 정의하면 그 이전에 들어온 데이터는 무시된다.
참조데이터는 300MB(권장)~4GB 지원

경로 패턴 최적화: cluster1/logs/{data}/{time}
ASA는 BlobLastModifiedUtcTime을 기준으로 파일을 스캔
*ADLS: Azure Data Lake Storage

Apache Kafka

네트워크

공용 엔드포인트 및 VNet 지원

압축

Gzip, Snappy, LZ4, Zstd 지원

구성

표준 Kafka 구성 규칙 사용


Azure Stream Analytics 출력

데이터 통합을 위한 출력 유형, 파티셔닝 전락

Input에서 Output으로의 흐름

정의

ASA 작업은 입력 쿼리 출력 으로 구성
쿼리에서 INTO 절을 사용하여 변환된 데이터를 보낼 대상 지정

유연성

작업 당 하나의 출력을 사용하거나, 여러 INTO절을 추가하여 스트리밍 작업 당 여러 출력 구성 가능

지원되는 출력 유형 및 생태계

Storage & Data Lake

  • Blob Storage
  • Azure Data Lake Gen 2

Databases

  • Azure SQL Database
  • Cosmos DB
  • PostgreSQL
  • Azure Synapse Analytics
  • Table Storage

Messaging & Events

  • Event Hubs
  • Service Bus (queues / Topics)
  • Kafka (Preview)

Analytics & Compute

  • Azure Functions
  • Power BI
  • Azure Data Explorer

보안 및 인증 프로토콜


마이크로소프트 Entra ID를 권장

성능의 핵심: 파티셔닝(Partitioning)

기본 원칙

병목 현상을 방지하기 위해 출력 어댑터는 파티셔닝을 지원

지원 현황

Power BI를 제외한 모든 출력 유형이 파티셔닝을 지원

구성 요구사항

Event hubs 및 Kafka의 경우 출력 구성에서 파티션 키 열(Column) 설정

출력 작성자(Output Writers) 튜닝 및 병목 현상

고급 튜닝

쿼리에 INTO <partition count> 절을 사용하여 작성자 수를 제어

병목 위험

입력은 파티션되고 출력이 파티션되지 않은 경우, 하나의 입력 파티션에 데이터가 부족하면 지연 도착 시간만큼 전체 작업 지연 가능

결과

출력이 단일 작성자로 병합되어 파이프라인의 심각한 병목 초래

배치 처리 메커니즘 및 쓰기 동작

Azure Table Storage Logic

Insert or Replace 동작(Upsert)

  • 기존 엔터티가 있음 → 교체
  • 기존 엔터티가 없음 → 삽입

ASA는 효율성을 위해 가변 크기의 배치를 사용. 이벤트↑ 배치↑ / 이벤트↓ 배치↓


Azure Stream Analytics 쿼리

T-SQL, 차원의 데이터 쿼리

스트리밍 연산을 위한 표준 T-SQL 의 확장

Azure Stream Analytics의 데이터 스트림에 대한 변환 및 계산을 수행하기 위한 SQL 쿼리 언어

핵심 개념

표준 T-SQL 구문의 부분 집합

목적

SQL 사용자에게 익숙한 문법을 유지하며 스트리밍 데이터 처리에 특화된 기능 제공

시나리오: 고속도로 톨게이트를 통과하는 데이터

Context

톨게이트 시스템을 이벤트 스트림으로 시각화

Key Elements

  • Manual Booths: 정차하여 요금 납부
  • Automated Booths: 센서가 차량윈드 실드의 RFID 카드를 스캔

Takeaway

차량이 톨게이트를 통과하는 순간을 데이터 분석을 위한 이벤트 스트림으로 간주

데이터가 이벤트 허브에 도착한 시간 기준? vs 차량이 인식된 시간 기준?

시간의 흐름과 타임 스탬프

System.Timestamp()

시스템을 흐르는 모든 이벤트는 타임스탬프를 가짐

의미

모든 이벤트는 시간의 특정 지점을 묘사

도착 시간 vs 애플리케이션 시간

Arrival Time(시스템 할당)

입력 소스에 따라 의미가 다르다

  • Azure Event Hub: 이벤트 허브가 부여한 타임스탬프
  • Blob Storage: Blob의 마지막 수정 시간

Application Time(사용자 지정)

쿼리 내에서 사용자가 직접 지정하는 시간
이벤트가 실제로 발생한 현실 세계의 시점

타임스탬프는 시스템이 할당하거나 사용자가 지정
평소에는 사용자 지정 시간을 사용하나, 시스템 할당 시간을 이용하여 서버 관리(서버 지연 정도 확인 등) 가능
ex) 주식의 '오더북'

TIMESTAMP BY: 페이로드 데이터를 시간 기준으로 승격

사용자가 애플리케이션 시간을 사용하고자 할 때 TIMESTAMP BY 키워드 사용

기능

페이로드 내의 특정 컬럼을 시간 연산(윈도우, 조인) 의 기준으로 지정

요건

datetime 유형의 모든 컬럼에 사용 가능

쿼리 예제: 톨게이트 진입 시간 지정

시간 관리 TIP

도착 시간(Arrival Time) 보다는 TIMESTAMP BY를 사용하는 것을 권장

이유

윈도우나 조인과 같은 시간적 계산을 수행할 때 데이터의 정확성 보장 가능

맥락

톨게이트 시나리오에서 차량의 진입 시간이 시스템 처리 시간보다 분석에 유의미

기본 데이터 이동 및 필터링

Pass Through & Projection

전체 데이터르 복사하거나 특정 컬럼만 선택하여 전송

SELECT Make, Time
INTO Output
FROM Input

String Matching(LIKE)

SELECT *
FROM Input
WHERE License_plate LIKE 'A%9'

다중 출력 라우팅

하나의 입력스트림을 INTO 절을 사용하여 여러 목적지로 분기 처리

시간 기반 데이터 집계

TumblingWindow를 사용하여 시간을 고정된 구간으로 나누고 집계

SELECT Make, Count(*) AS Count
FROM Input TIMESTAMP BY Time
GROUP BY Make, TumblingWindow(second, 10)

세션의 경계: 시간 감지와 지속 시간

IsFirst, Duration

결측 데이터 처리와 주기적 보고

HOPPINGWINDOW

데이터가 없는 구간에서도 최신 상태를 보고

중복 제거 및 데이터 품질 관리

윈도우 내에서 중복된 이벤트를 제거하여 Clean Data 생성
GroupBy로 중복제거

고급 패턴 매칭

정규 표현식처럼 일련의 이벤트 순서를 감지

조건부 로직 및 데이터 변환

기능 확장: 사용자 정의 함수(UDF)

JAVAScript/C# 코드로 복잡한 로직을 처리


Azure Stream Analytics 작업 모니터링

Azure Portal을 활용한 성능 최적화 및 문제 해결 가이드

성능 유지 및 문제 해결을 위한 모니터링

Azure Portal은 쿼리 및 작업 성능을 모니터링하고 문제를 해결하는데 필요한 핵심 성능 지표를 제공

접근 방법 1: 개요 페이지

Azure Stream Analytics의 개요 - 모니터링

접근 방법 2: 모니터링 블레이드

정밀한 분석을 위한 전용 메뉴

17가지 핵심 지표(Metrics)

https://learn.microsoft.com/ko-kr/azure/stream-analytics/monitor-azure-stream-analytics-reference#metrics-descriptions

데이터 분석 도구1: 시간 범위 설정

데이터 분석 도구2: 필터 추가

특정 차원의 데이터만 확인할 때 사용
노이즈를 제거하고 원하는 데이터에 집중 가능

데이터 분석 도구3: 분할 적용

차원별 데이터를 비교 분석하려면 분할 적용 기능 사용. 서로 다른 세그먼트 간의 성능 차이를 시각적으로 비교


Stream Analytics 실습 사전 준비

Power BI 작업 영역 생성 및 Power BI Desktop 설치

Power BI 작업 영역 만들기

Web에서만 가능, Desktop에서는 불가능
1. 웹 브라우저에서 Power BI 웹사이트 접속
2. 왼쪽 탭의 작업영역 메뉴 선택

  1. 새 작업 영역 버튼 클릭
  2. 작업영역 이름 입력
  3. 적용
  4. 작업 영역 ID 복붙 (주소창의 key string)

Power BI 설치는 이전에 진행했으므로 생략
동일 계정으로 로그인


Stream Analytics 실습

Event Hubs, Stream Analytics, Power BI를 연동해 태양광 발전량 예측 데이터 불러오기

Stream Analytics Job 만들기

Stream Analytics와 Event hubs 연결

스트림 분석 작업 - 작업 토폴로지 - 입력 - 입력 추가 - Event hubs

Stream Analytics와 Power BI 연결

작업 토폴로지 - 출력 - 출력 추가 - Power BI

그룹 작업 영역에 아까 생성했던 작업 영역의 번호 입력

이후 연결 권한 부여 클릭

출력 테스트 확인

Stream Analytics 쿼리 작성하기

  1. 작업 토폴로지 메뉴 중 쿼리 메뉴 클릭
  2. 편집기에 쿼리 입력

    테이블은 []로 감싸준다. ex) [dt016-solar-hub]

테스트

샘플 입력 업로드

작업 시작

Azure 함수 앱 실행

확인

로그 확인은 해당 function-모니터링-로그-테이블-traces 실행

새로고침 시 Event hub에 데이터 확인 가능

또한 PowerBI 의미 체계 모델 생성됨

참고로, 리소스 그룹을 헷갈려 잘못 추가했다면, 리소스 그룹 이동을 실행할 수 있다.

PowerBI 에서 의미 체계 모델 불러오기

태양광 발전량 예측 데이터 표로 표시하기


*열에서 합계~로 표시된 열들은 우클 후 요약안함 선택


PowerBI

시각화 종류

DAX

Data Analysis Expressions, 테이블 형식 데이터 모델에서 고급 계산과 쿼리를 수행하기 위한 수식 표현 언어

계산의 4가지 기둥

함수 생태계

컨텍스트

수식의 결과를 결정하는 환경

행 컨텍스트 vs 필터 컨텍스트

관계 및 쿼리 컨텍스트


RELATED 함수를 사용하여 연결된 테이블의 값을 가져옴
활성 관계를 통해 필터가 전파되어 계산의 범위가 확장됨

측정 값

쿼리 시 계산(Calculated at Query Time)

결과가 메모리에 저장되지 않고, 사용자가 상호 작용할때마다 즉시 계산

계산 및 열 테이블

처리 시 계산 (Calculated at process Time)

수식 입력 즉시 계산되어 인메모리(RAM)에 저장됨
데이터 슬라이싱의 기준(축) 으로 사용하기 적합
계산 테이블은 ShipDate와 같은 역할 수행 차원 생성에 유용

행 수준 보안

사용자 역할에 따른 데이터 필터링(Role-Based Data Filtering)

DAX 수식을 사용하여 허용된 행 집합을 정의

책갈피

데이터의 특정 순간을 캡처하는 도구

책갈피가 저장하는 핵심 요소

보기 > 책갈피 창에서 추가

책갈피 업데이트

뷰를 변경(예: 필터 조정)한 후에는 추가 옵션 > 업데이트 를 클릭해야 변경 사항 저장

선택 창과 표지 제어 여부

보기 > 선택

Functionality

페이지의 모든 개체 목록을 레이어 순서대로 표시
눈 아이콘을 클릭하여 개체를 숨기거나 표시할 수 있음

Interaction

책갈피를 추가하거나 업데이트할 때, 선택 창의 눈 아이콘 상태(표시 여부)도 함께 저장

버튼 추가


PowerBI 실습

맵, 차트, 행렬, 카드, 슬라이서 추가 및 설정
데이터 필드 이름 변경 및 형식 지정
드릴 다운과 드릴 스루 기능 구현 및 테스트
대시보드 저장 및 공유

드릴다운, 드릴 스루

시각화 페이지 드릴 스루 설정 방법

게시

profile
iOS 개발자가 되기 위한 스터디룸/스터디의 레퍼런스는 모두 kxcoding

0개의 댓글