본문 바로가기
● Data Insights/Data Visualization

Power BI 웹 서비스 보고서 추출을 위한 REST API 가이드

by DATA Canvas 2025. 10. 21.
반응형

Microsoft Power BI를 사용하다 보면 웹 서비스에 게시된 보고서들을 프로그래밍 방식으로 관리하거나 다른 애플리케이션에 임베딩해야 하는 경우가 있습니다. 특히 Power BI Pro 라이선스를 보유한 개발자들이 보고서의 임베디드 코드, 보고서명, 보고서 ID를 추출하는 방법에 대해 알아보겠습니다.


Power BI REST API 주요 엔드포인트

1. 보고서 목록 조회 API

개인 작업영역 보고서 조회

GET https://api.powerbi.com/v1.0/myorg/reports

특정 작업영역 보고서 조회

GET https://api.powerbi.com/v1.0/myorg/groups/{groupId}/reports

관리자용 전체 보고서 조회

GET https://api.powerbi.com/v1.0/myorg/admin/reports

2. 임베디드 토큰 생성 API

POST https://api.powerbi.com/v1.0/myorg/GenerateToken

이 API를 호출하면 다음과 같은 정보를 얻을 수 있습니다:

{
  "value": [
    {
      "datasetId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
      "id": "5b218778-e7a5-4d73-8187-f10824047715",
      "name": "SalesMarketing",
      "webUrl": "https://app.powerbi.com//reports/...",
      "embedUrl": "https://app.powerbi.com/reportEmbed?reportId=..."
    }
  ]
}

3. 작업영역 목록 조회 API

접근 가능한 작업영역 조회

GET https://api.powerbi.com/v1.0/myorg/groups

관리자용 전체 작업영역 조회

GET https://api.powerbi.com/v1.0/myorg/admin/groups?$top=100
반응형

Power BI Pro 라이선스로 가능한 작업

현재 Power BI Pro 라이선스를 보유하고 있다면 다음과 같은 작업들이 가능합니다:

  • 개발 및 테스트: 보고서 생성, API 테스트, 임베디드 코드 개발
  • 개인 작업영역 보고서 관리: REST API를 통한 보고서 목록 조회 및 임베디드 URL 추출
  • Power BI JavaScript SDK 사용: 웹 애플리케이션에 보고서 임베딩

임베디드 구현 방법

JavaScript SDK를 사용한 임베딩

// Power BI JavaScript SDK 설치
npm install --save powerbi-client

// 임베딩 구성
const embedConfig = {
    type: 'report',
    id: 'YOUR_REPORT_ID',
    embedUrl: 'https://app.powerbi.com/reportEmbed?reportId=YOUR_REPORT_ID',
    accessToken: 'YOUR_EMBED_TOKEN',
    tokenType: models.TokenType.Embed,
    settings: {
        panes: {
            filters: {
                expanded: false,
                visible: false
            }
        }
    }
};

// 보고서 임베딩
const reportContainer = document.getElementById('reportContainer');
const report = powerbi.embed(reportContainer, embedConfig);

REST API 호출 예시

import requests

# 인증 토큰으로 보고서 목록 조회
api_endpoint = "https://api.powerbi.com/v1.0/myorg/reports"
access_token = "YOUR_ACCESS_TOKEN"

headers = {
    "Authorization": f"Bearer {access_token}"
}

response = requests.get(api_endpoint, headers=headers)

if response.status_code == 200:
    reports = response.json()
    for report in reports["value"]:
        print(f"Report ID: {report['id']}")
        print(f"Report Name: {report['name']}")
        print(f"Embed URL: {report['embedUrl']}")

프로덕션 환경을 위한 라이선스 요구사항

Power BI Pro의 제약사항

Power BI Pro 라이선스는 개발 및 테스트에는 충분하지만, 프로덕션 환경에서는 다음과 같은 제약이 있습니다:

  • 임베디드 토큰 생성 횟수 제한
  • 외부 사용자에게 임베딩 시 각 사용자마다 Power BI 라이선스 필요

프로덕션용 최소 라이선스

외부 고객용 임베딩:

  • Power BI Embedded A1 SKU (월 약 $750)
  • 고객이 Power BI 라이선스 불필요
  • 외부 고객용 임베딩 전용

조직 내부용 임베딩:

  • Power BI Premium EM1 SKU (월 약 $625)
  • 내부 및 외부 임베딩 모두 지원
  • 사용자별 라이선스 불필요

Microsoft Fabric을 사용하지 않는 경우

Microsoft Fabric 없이도 기존 Power BI 라이선스 체계를 그대로 사용할 수 있습니다:

  • A SKU: Azure 기반 Power BI Embedded 전용
  • P/EM SKU: Office 365 기반 Premium 기능
  • 기존 API 및 SDK 모두 정상 작동

핵심 추출 정보

Power BI REST API를 통해 추출할 수 있는 주요 정보들:

  1. 보고서 ID: 각 보고서의 고유 식별자
  2. 보고서명: 사용자가 지정한 보고서 이름
  3. 임베디드 URL: 웹 애플리케이션에 임베딩할 때 사용하는 URL
  4. 웹 URL: Power BI 서비스에서 직접 접근하는 URL
  5. 데이터셋 ID: 보고서가 연결된 데이터셋 정보

구현 시 고려사항

보안 설정

  1. Azure AD 앱 등록: 서비스 주체를 통한 인증 설정 필요
  2. API 권한 부여: 적절한 Power BI API 권한 설정
  3. 토큰 관리: 액세스 토큰의 안전한 저장 및 갱신

개발 단계별 접근

1단계: 개발 및 테스트

  • Power BI Pro 라이선스로 API 테스트
  • Azure AD 앱 등록 및 서비스 주체 설정
  • 임베디드 토큰 생성 및 JavaScript SDK 테스트

2단계: 프로덕션 준비

  • 용도에 따른 적절한 용량 라이선스 선택
  • 보안 정책 및 토큰 관리 체계 구축
  • 성능 최적화 및 에러 처리 로직 구현

Power BI Pro 라이선스만으로도 보고서 추출 및 임베딩 개발은 충분히 가능합니다. 하지만 프로덕션 환경에서의 무제한 임베딩을 위해서는 용량 기반 라이선스가 필요하다는 점을 염두에 두어야 합니다.

 

Microsoft Fabric 도입 여부와 관계없이 기존 Power BI REST API는 계속 사용할 수 있으므로, 현재 인프라를 그대로 활용하면서 점진적으로 시스템을 확장할 수 있습니다.

 

가장 중요한 것은 개발 단계에서 충분한 테스트를 거친 후 프로덕션 환경에 맞는 적절한 라이선스를 선택하는 것입니다.

반응형