
밀리초 단위의 인사이트 도출을 위한 완전 관리형(PaaS) 스트림 처리 엔진
하드웨어 프로비저닝이나 OS 업데이트 없이 비즈니스 로직에 집중 가능
밀리초(ms) 미만의 대기 시간으로 데이터 처리
초당 수백만 개의 이벤트 처리(클릭 스트림, IoT, 로그)
Azure IoT Edge 런타임을 통해 클라우드와 Edge 모두 지원
ASA는 JavaScript / C# UDF를 지원하지만, 비표준 언어의 광범위한 에코시스템이 필수적인 경우 Spark 구조적 스트리밍 고려



처리 파이프라인이 실제 시간보다 얼마나 뒤처져 있는지 모니터링
리소스 부족 방지. 80% 이상 시 확장 고려
*SU: Streaming Unit
Backfilling & Checkpointing - 데이터 손실 없는 장애 복구 및 과거 데이터 재처리
연결, 구성 및 문제 해결 가이드

시간이 지남에 따라 생성되는 무한한 이벤트 시퀀스
상관 관계 및 조회를 위한 정적 또는 느리게 변경되는 데이터


13시에 작업 시정으로 정의하면 그 이전에 들어온 데이터는 무시된다.
참조데이터는 300MB(권장)~4GB 지원
경로 패턴 최적화: cluster1/logs/{data}/{time}
ASA는 BlobLastModifiedUtcTime을 기준으로 파일을 스캔
*ADLS: Azure Data Lake Storage

공용 엔드포인트 및 VNet 지원
Gzip, Snappy, LZ4, Zstd 지원
표준 Kafka 구성 규칙 사용
데이터 통합을 위한 출력 유형, 파티셔닝 전락

ASA 작업은 입력 쿼리 출력 으로 구성
쿼리에서 INTO 절을 사용하여 변환된 데이터를 보낼 대상 지정
작업 당 하나의 출력을 사용하거나, 여러 INTO절을 추가하여 스트리밍 작업 당 여러 출력 구성 가능

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

병목 현상을 방지하기 위해 출력 어댑터는 파티셔닝을 지원
Power BI를 제외한 모든 출력 유형이 파티셔닝을 지원
Event hubs 및 Kafka의 경우 출력 구성에서 파티션 키 열(Column) 설정

쿼리에 INTO <partition count> 절을 사용하여 작성자 수를 제어
입력은 파티션되고 출력이 파티션되지 않은 경우, 하나의 입력 파티션에 데이터가 부족하면 지연 도착 시간만큼 전체 작업 지연 가능
출력이 단일 작성자로 병합되어 파이프라인의 심각한 병목 초래

Insert or Replace 동작(Upsert)
ASA는 효율성을 위해 가변 크기의 배치를 사용. 이벤트↑ 배치↑ / 이벤트↓ 배치↓
T-SQL, 차원의 데이터 쿼리
Azure Stream Analytics의 데이터 스트림에 대한 변환 및 계산을 수행하기 위한 SQL 쿼리 언어

표준 T-SQL 구문의 부분 집합
SQL 사용자에게 익숙한 문법을 유지하며 스트리밍 데이터 처리에 특화된 기능 제공
톨게이트 시스템을 이벤트 스트림으로 시각화
차량이 톨게이트를 통과하는 순간을 데이터 분석을 위한 이벤트 스트림으로 간주
데이터가 이벤트 허브에 도착한 시간 기준? vs 차량이 인식된 시간 기준?

시스템을 흐르는 모든 이벤트는 타임스탬프를 가짐
모든 이벤트는 시간의 특정 지점을 묘사
입력 소스에 따라 의미가 다르다
쿼리 내에서 사용자가 직접 지정하는 시간
이벤트가 실제로 발생한 현실 세계의 시점
타임스탬프는 시스템이 할당하거나 사용자가 지정
평소에는 사용자 지정 시간을 사용하나, 시스템 할당 시간을 이용하여 서버 관리(서버 지연 정도 확인 등) 가능
ex) 주식의 '오더북'

사용자가 애플리케이션 시간을 사용하고자 할 때 TIMESTAMP BY 키워드 사용
페이로드 내의 특정 컬럼을 시간 연산(윈도우, 조인) 의 기준으로 지정
datetime 유형의 모든 컬럼에 사용 가능

도착 시간(Arrival Time) 보다는 TIMESTAMP BY를 사용하는 것을 권장
윈도우나 조인과 같은 시간적 계산을 수행할 때 데이터의 정확성 보장 가능
톨게이트 시나리오에서 차량의 진입 시간이 시스템 처리 시간보다 분석에 유의미

전체 데이터르 복사하거나 특정 컬럼만 선택하여 전송
SELECT Make, Time
INTO Output
FROM Input
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)

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

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

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


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

Azure Portal을 활용한 성능 최적화 및 문제 해결 가이드
Azure Portal은 쿼리 및 작업 성능을 모니터링하고 문제를 해결하는데 필요한 핵심 성능 지표를 제공
Azure Stream Analytics의 개요 - 모니터링

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


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

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

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


Power BI 설치는 이전에 진행했으므로 생략
동일 계정으로 로그인
Event Hubs, Stream Analytics, Power BI를 연동해 태양광 발전량 예측 데이터 불러오기


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



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

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

이후 연결 권한 부여 클릭

출력 테스트 확인

[]로 감싸준다. ex) [dt016-solar-hub]샘플 입력 업로드




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


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

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

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




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







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


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



RELATED 함수를 사용하여 연결된 테이블의 값을 가져옴
활성 관계를 통해 필터가 전파되어 계산의 범위가 확장됨
쿼리 시 계산(Calculated at Query Time)
결과가 메모리에 저장되지 않고, 사용자가 상호 작용할때마다 즉시 계산
처리 시 계산 (Calculated at process Time)
수식 입력 즉시 계산되어 인메모리(RAM)에 저장됨
데이터 슬라이싱의 기준(축) 으로 사용하기 적합
계산 테이블은 ShipDate와 같은 역할 수행 차원 생성에 유용
사용자 역할에 따른 데이터 필터링(Role-Based Data Filtering)
DAX 수식을 사용하여 허용된 행 집합을 정의
데이터의 특정 순간을 캡처하는 도구

보기 > 책갈피 창에서 추가

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

보기 > 선택
페이지의 모든 개체 목록을 레이어 순서대로 표시
눈 아이콘을 클릭하여 개체를 숨기거나 표시할 수 있음
책갈피를 추가하거나 업데이트할 때, 선택 창의 눈 아이콘 상태(표시 여부)도 함께 저장

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








