Azure Stream Analytics 기초
Azure Stream Analytics 란
Azure Stream Analytics는 실시간 데이터 분석을 위한 완전관리형 서비스로, 대규모 데이터 스트리밍을 처리하여 즉각적인 인사이트를 제공하는 플랫폼이다.
이서비스는 Azure Event Hubs 등 다양한 데이터 소스로부터 수집된 데이터를 실시간으로 처리하고 분석하여, 데이터 기반의 의사결정을 지원한다
Stream Analytics 작업이란
실시간 데이터 스트리밍을 처리하고 분석하기 위한 정의된 프로세스를 의미한다.
입력, 쿼리, 출력으로 나눌 수 있다.
- 입력은 실시간 스트림 형태로 제공되며, Event Hubs나 Iot Hub, Azure Blob Storage ,Azure Data Lake Storage 등 다양한 소스에서 데이터를 수집 할 수 있다
- 쿼리에서는 입력된 데이터를 대상으로 SQL기반의 쿼리를 작성하여 필터링, 집계, 조인작업, 인사이트 도출 등, 실시간 분석을 수행해준다.
- 출력에서는 power bi, cosmos DB, Azure Blob Storage 등 으로 출력 가능하다.
이 실습은 아래와 이어지는 실습이다
https://star-ccomputer-go.tistory.com/172
태양광 발전량 예측 API 연동 실습 (웹 훅, Event hubs)
태양광 발전량 예측 - 일사량 예측정보 기반 태양광 발전량 전망 태양광 발전량 예측 - 일사량 예측정보 기반 태양광 발전량 전망커뮤니티 사용시 아래 각 호에 해당하는 경우에는 이용자의 서
star-ccomputer-go.tistory.com
목표
1. 실시간으로 들어오는 데이터가
2. Azure Data Function에서
3. 이벤트 허브를 거쳐
4. Stream Analytics로 쿼리를 타고,이 정보가
5. Power Bi에 연동되는 파이프라인
1. Power BI 작업 영역 만들기
Power BI
app.powerbi.com
일단 Power BI 로 들어가보자
왼쪽의 작업 영역을 누르면 새로운 작업 영역을 추가할 수 있다.
이름을 지정하고 적용을 누른다.
그럼 새로운 작업 영역이 생긴 것을 확인할 수 있다.
그럼 해당 작업 영역 링크 가운데에 고유 문자열이 출력된것을 볼 수 있다.
이것은 나중에 출력을 추가할 떄 사용할 것이니 복사해서 메모장에 라도 붙여넣어주자.
이제 power bi의 데스크탑 버전에 들어가 로그인을 진행한다.
아래 링크에서 다운 받을 수 있다.
https://www.microsoft.com/ko-kr/power-platform/products/power-bi/desktop
Power BI Desktop | Microsoft Power Platform
데이터 시각화 및 분석을 사용하여 데이터를 인사이트로, 작업으로 변환하는 Microsoft의 무료 앱인 Power BI Desktop을 살펴보세요.
www.microsoft.com
2. Stream Analytics Job 만들기
리소스 그룹에서 만들기 버튼을 눌러 [스트림 분석 작업]을 만들어준다.
function app만들었던 지역과 같은 지역으로 만들어주면 된다
리소스로 이동하면 아까 처음에 설명한 요소들이 있다. 이 중 입력으로 이벤트허브와 연동을 먼저 해주겠다.
입력추가 버튼을 눌러 이벤트 허브를 선택해준다.
네임 스페이스를 기존의 이벤트허브로 바꿔주면 입력에 성공적으로 추가된다.
이제 출력을 추가해보곘다.
아까 만든 power bi 작업 영역 링크 가운데에 출력되었던 고유 문자열을 그룹 작업 영역에 붙여넣어준다.
성공적으로 추가가 된것을 볼 수 있다.
이번에는 쿼리창으로 들어간다.
여기서 쓰는 쿼리가 조금 달라서 아래의 링크를 참고해야 한다.
쿼리 언어 요소(Azure Stream Analytics) - Stream Analytics Query | Microsoft Learn
쿼리 언어 요소(Azure Stream Analytics) - Stream Analytics Query
Azure Stream Analytics는 쿼리를 빌드하기 위한 다양한 요소를 제공합니다. 아래에 요약되어 있습니다.
learn.microsoft.com
이벤트 허브를 1시간이 지나면 삭제되도록 만들어놨는데 함수를 어제 실행했어서 데이터가 아무것도 없다.
함수앱으로 돌아가서 실행시켜줬다.
태양광 예측 데이터 수집 스케줄러가 잘돌아가며 데이터를 넣어준다.
(어제는 좀 버벅이던데 오늘은 또 쌩썡 잘돌아간다. 어제는 태양광 데이터 주는 서버에 조금 제동이 있었던 것 같다. )
아래 새로고침을 눌러보면 쿼리쪽에서도 아래와 같이 데이터가 잘 뜬다.
이제 위에 작성한 쿼리를 저장하고 쿼리 테스트를 진행하면 테스트 결과에 쿼리가 적용된 값이 들어간다.
이름도 잘 바뀌고 데이터 타입도 잘 바꿔어있다.
With [solarpredictdata] as (
SELECT try_cast(pcap as float) "설비용량",
try_cast(qgen as float) "발전량",
try_cast(srad as float) "일사량",
try_cast(temp as float) "기온",
try_cast(wspd as float) "풍속",
city "도시",
county "시군구",
lat "위도",
lon "경도",
regCd "행정코드",
substring(fcstDate, 1, 4) + '-' + substring(fcstDate, 5, 2) + '-' + substring(fcstDate, 7, 2) "날자",
substring(fcstTime, 1, 2) "시간"
FROM [dt016-solar-hub]
) select round(try_cast(([solarpredictdata].[발전량] / [solarpredictdata].[설비용량]) * 100 as bigint), -1) "이용률",
([solarpredictdata].[발전량] / [solarpredictdata].[설비용량]) * 100 "실제이용률",
*,
case
when try_cast([solarpredictdata].[시간] as bigint) < 12 then '오전'
else '오후'
end "오전오후구분"
INTO
[dt016-soloar-hub-powerbi-app]
FROM
[solarpredictdata]
주요 기능
- fcstDate: 예를 들어 '20250627'처럼 연월일(YYYYMMDD) 형태의 문자열
- substring(fcstDate, 1, 4) → '2025' (연도)
- substring(fcstDate, 5, 2) → '06' (월)
- substring(fcstDate, 7, 2) → '27' (일)
- 이걸 '2025-06-27'로 합쳐서 "날자" 컬럼 생성
- [발전량] / [설비용량] * 100:
- 설비가 실제로 생산한 전력량(발전량)을 설비의 최대 용량(설비용량)으로 나눔
- 즉, "설비가 최대치 대비 몇 %로 가동되고 있는지"를 계산
- round(..., -1)로 10의 자리에서 반올림
- try_cast([시간] as bigint) < 12:
- 숫자로 변환해서 12시(정오) 이전이면 '오전', 아니면 '오후'로 분류
이제 다시 power bi로 돌아가면 의미 체계 모델이라는 것이 생긴것을 볼 수 있다.
데스크탑에 이동해서 이 의미 체계 모델의 테이블을 가져와보겠다.
우선 새로 페이지를 만들어주고 홈의 데이터 가져오기에서 power bi 의미체계 모델을 누르면 연결할 수 있다.
연결이 되면 오른쪽과 같이 데이터가 불러와진 것을 볼 수 있다.
테이블을 눌러 이 데이터들을 모두 가져와봤다.
아래와 같이 데이터가 잘 뜬다.
다만 합계가 필요없는 데이터들이 합계로 되어있어서 선택하고 요약 안함으로 바꿔준다.
그럼 이름도 바뀌고 테이블에서 합계도 사라진 것을 볼 수 있다.
여기까지 마치면
1. 실시간으로 들어오는 데이터가
2. Azure Data Function에서
3. 이벤트 허브를 거쳐
4. Stream Analytics로 쿼리를 타고,이 정보가
5. Power Bi에 연동되는 파이프라인
이 완성된다.
(의미체계이므로 새로고침은 한 번 더 눌러주어야 한다. )