[Azure] Stream Analytics & Power BI 실시간 태양광 발전량 대시보드 구축

감자·2026년 2월 12일

microsoft_dataschool

목록 보기
22/28
post-thumbnail

Azure Event Hubs로 유입되는 실시간 데이터를 Stream Analytics로 전처리하고, Power BI를 통해 실시간으로 시각화하는 전체 파이프라인 구축 과정을 정리함.

1. Power BI 작업 영역 설정

Stream Analytics에서 데이터를 송신할 목적지인 Power BI 작업 영역을 생성하고 고유 ID를 확보해야 함.

1-1. 작업 영역 생성

  1. Power BI 접속: 웹 브라우저에서 Power BI 서비스 로그인.
  2. 메뉴 이동: 좌측 사이드바 [작업 영역(Workspaces)] 선택.
  3. 생성: 하단 [새 작업 영역(Create a workspace)] 클릭.
  4. 설정: 이름(예: 태양광 발전량 예측) 입력 후 [적용] 클릭.

1-2. 작업 영역 ID 확보 (필수)

생성된 작업 영역 URL에서 GUID 값을 추출하여 별도 보관함. (Stream Analytics Output 설정 시 필요)

URL 형식: https://app.powerbi.com/groups/[Workspace_GUID]/list...

  • groups/ 뒤의 GUID 문자열(예: 83aa256e-xxxx-xxxx-xxxx-xxxxxxxxxxxx)을 복사하여 메모장에 저장.

2. Stream Analytics Job 생성

2-1. 리소스 생성

  1. Azure Portal 접속.
  2. 리소스 그룹 선택: 기존 생성 그룹(예: [Resource_Group_Name]) 선택.
  3. 리소스 추가: [+ 만들기] Stream Analytics Job 검색 및 선택.
  4. 인스턴스 설정:
  • 이름: 예) [SA_Job_Name]
  • 설정 확인: 위치 등 기본값 확인 후 [만들기] 클릭.
  1. 배포 완료 후 [리소스로 이동].

3. 토폴로지 구성 (Input & Output)

3-1. 입력(Input): Event Hubs 연결

  1. 왼쪽 메뉴 [작업 토폴로지] [입력] 클릭.
  2. [+ 입력 추가] [Event Hubs] 선택.
  3. 세부 설정:
  • 입력 별칭: 예) [Input_Alias] (※ 쿼리에서 사용됨)
  • 네임스페이스: 실습 시 생성했던 Event Hubs 네임스페이스 선택.
  1. [저장] 클릭 (연결 테스트 성공 확인).

3-2. 출력(Output): Power BI 연결

  1. 왼쪽 메뉴 [작업 토폴로지] [출력] 클릭.
  2. [+ 출력 추가] [Power BI] 선택.
  3. [권한 부여] 클릭 후 Power BI 계정 로그인.
  4. 세부 설정:
  • 출력 별칭: 예) [Output_Alias] (※ 쿼리에서 사용됨)
  • 작업 영역: [Power BI 설정을 수동으로 제공] 선택.
  • 작업 영역 ID: 1-2단계에서 확보한 [Workspace_GUID] 붙여넣기.
  • 데이터 세트 이름: 예) [Dataset_Name]
  • 테이블 이름: 예) [Table_Name]
  1. [저장] 클릭.

4. 쿼리(Query) 작성 및 실행

데이터 형변환 및 가공 로직을 SQL로 작성하여 Power BI로 전송함.

4-1. 쿼리 로직 작성

왼쪽 메뉴 [쿼리] 선택 후 아래 코드 입력. (별칭 부분은 본인 설정값으로 변경)

/* 1단계: 데이터 형변환 및 전처리 CTE */
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 "행정코드",
        -- 날짜 포맷팅 (YYYYMMDD -> YYYY-MM-DD)
        substring(fcstDate, 1, 4) + '-' + substring(fcstDate, 5, 2) + '-' + substring(fcstDate, 7, 2) "날짜",
        substring(fcstTime, 1, 2) "시간"
    from [Input_Alias]  -- 3-1에서 설정한 입력 별칭
)

/* 2단계: 가공 데이터 출력 (이용률 계산 및 오전/오후 구분) */
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 [Output_Alias]  -- 3-2에서 설정한 출력 별칭
from solarpredictdata

4-2. 쿼리 저장 및 작업 시작

  1. [쿼리 저장] 클릭 [쿼리 테스트]로 결과 데이터 확인.
  2. 개요 탭 이동 [작업 시작] [시작] 클릭.
  3. 상태가 Running으로 변경되는지 확인.

5. 데이터 생성 (Azure Function)

데이터 파이프라인 가동 후, 실제 데이터를 전송할 스케줄러를 실행함.

  1. VS Code 실행 Azure 확장 아이콘 클릭.
  2. Resources 탭에서 배포한 Function (예: [Function_Name]) 찾기.
  3. 우클릭 [Execute Function Now...] 클릭.
  4. Teams 알림 채널 또는 모니터링 로그를 통해 실행 여부 확인.

6. Power BI 대시보드 시각화

Stream Analytics가 전송한 데이터를 기반으로 시각화 대시보드를 구성함.

6-1. 데이터 연결

  1. Power BI Desktop 실행.
  2. [데이터 가져오기] [Power BI 의미 체계(Semantic models)] 클릭.
  3. 목록에서 [Dataset_Name] 검색 및 선택 후 [연결].

6-2. 대시보드 구성 (주요 시각적 개체)

  • 캔버스 설정: 크기 1000 x 1400 (사용자 지정).
  • 맵(Map): 도시/시군구 위치 표시, 이용률 범례 적용.
  • 차트: 꺾은선형 및 누적 세로 막대형 차트로 시간대별 발전량/일사량 추이 표현.
  • 행렬: 지역별 상세 수치 표시 (소계 제거).
  • 슬라이서: 날짜 및 시간 필터링 (타일 스타일, 단일 선택).
  • 카드: 주요 KPI (기온, 풍속, 발전량 등) 표시.

6-3. 드릴 스루(Drill-through) 설정

  1. 새 페이지(시각화 페이지) 생성.
  2. 차트와 행렬을 새 페이지로 이동.
  3. 드릴 스루 필드에 시군구 추가 및 모든 필터 유지 해제.
  4. 메인 페이지 맵에서 특정 지역 우클릭 드릴 스루 동작 확인.
profile
제 별명이 감자입니다

0개의 댓글