다음을 통해 공유


외부 도구 등록

일부 도구는 Power BI Desktop에 수동으로 등록해야 합니다. 외부 도구를 등록하려면 다음 예제 코드를 사용하여 JSON 파일을 만듭니다.

{
    "name": "<tool name>",
    "description": "<tool description>",
    "path": "<tool executable path>",
    "arguments": "<optional command line arguments>",
    "iconData": "image/png;base64,<encoded png icon data>"
}

pbitool.json 파일에는 다음 요소가 포함됩니다.

  • name: Power BI Desktop 내의 외부 도구 리본에서 단추 캡션으로 표시되는 도구의 이름을 제공합니다.
  • description:(선택 사항) Power BI Desktop 내에서 외부 도구 리본 단추에 대한 도구 설명으로 표시되는 설명을 입력합니다.
  • path: 도구 실행 파일의 정규화된 경로를 제공합니다.
  • arguments:(선택 사항) 도구 실행 파일을 시작하는 데 사용되는 명령줄 인수의 문자열을 제공합니다. 다음 자리 표시자 중 하나를 사용할 수 있습니다.
    • %server%: 가져온/DirectQuery 데이터 모델을 위한 Analysis Services 테이블 형식의 로컬 인스턴스에 대한 서버 이름 및 포트 번호로 바꿉니다.
    • %database%: 가져온/DirectQuery 데이터 모델을 위한 Analysis Services 테이블 형식의 로컬 인스턴스에 호스트된 모델에 대한 데이터베이스 이름으로 바꿉니다.
  • iconData: Power BI Desktop 내의 외부 도구 리본에서 단추 아이콘으로 렌더링될 이미지 데이터를 제공합니다. "data:" 접두사가 없는 데이터 URI의 구문에 따라 문자열의 서식을 지정해야 합니다.

파일 이름을 "<tool name>.pbitool.json"으로 지정하고 파일을 다음 폴더에 저장합니다.

  • %commonprogramfiles%\Microsoft Shared\Power BI Desktop\External Tools

64비트 환경의 경우 다음 폴더에 파일을 저장합니다.

  • Program Files (x86)\Common Files\Microsoft Shared\Power BI Desktop\External Tools

지정된 위치에서 확장명이 .pbitool.json인 파일은 시작할 때 Power BI Desktop에서 로드됩니다.

예시

다음 *.pbitool.json 파일은 외부 도구 리본에서 powershell.exe를 시작하고 pbiToolsDemo.ps1이라는 스크립트를 실행합니다. 스크립트는 -Server 매개 변수에 서버 이름과 포트 번호를 전달하고 -Database 매개 변수에 의미 체계 모델 이름을 전달합니다.

{ 
    "version": "1.0.0", 
    "name": "External Tools Demo", 
    "description": "Launches PowerShell and runs a script that outputs server and database parameters. (Requires elevated PowerShell permissions.)", 
    "path": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", 
    "arguments": "C:\\pbiToolsDemo.ps1 -Server \"%server%\" -Database \"%database%\"", 
    "iconData": "image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAANSURBVBhXY/jH9+8/AAciAwpql7QkAAAAAElFTkSuQmCC" 
} 

해당 pbiToolsDemo.ps1 스크립트는 Server 및 Database 매개 변수를 콘솔에 출력합니다.

[CmdletBinding()] 
param 
( 
        [Parameter(Mandatory = $true)]         
[string] $Server, 
        [Parameter(Mandatory = $true)]         
[string] $Database  
) 
Write-Host "" 
Write-Host "Analysis Services instance: " -NoNewline 
Write-Host "$Server" -ForegroundColor Yellow 
Write-Host "Dataset name: " -NoNewline 
Write-Host "$Database" -ForegroundColor Green 
Write-Host "" 
Read-Host -Prompt 'Press [Enter] to close this window'  

예제 외부 도구에서 만든 PowerShell 콘솔 출력의 스크린샷.

아이콘 데이터 URI

외부 도구 리본에 아이콘을 포함하려면 pbitool.json 등록 파일에 iconData 요소를 포함해야 합니다.

도구 아이콘이 있는 외부 도구 리본의 스크린샷.

iconData 요소는 data: 접두사가 없는 데이터 URI를 사용합니다. 예를 들어 1픽셀 자홍 png 이미지의 데이터 URI는 다음과 같습니다.

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAANSURBVBhXY/jH9+8/AAciAwpql7QkAAAAAElFTkSuQmCC

위의 pbitool.json 예제에 표시된 것처럼 data: 접두사를 제거해야 합니다.

.png 또는 기타 이미지 파일 형식을 데이터 URI로 변환하려면 다음 C# 코드 조각에 표시된 것과 같은 사용자 지정 도구나 온라인 도구를 사용합니다.

string ImageDataUri; 
OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
openFileDialog1.Filter = "PNG Files (.png)|*.png|All Files (*.*)|*.*"; 
openFileDialog1.FilterIndex = 1; 
openFileDialog1.Multiselect = false; 
openFileDialog1.CheckFileExists = true; 
bool? userClickedOK = openFileDialog1.ShowDialog(); 
if (userClickedOK == true) 
{ 
    var fileName = openFileDialog1.FileName; 
    var sb = new StringBuilder(); 
    sb.Append("image/") 
        .Append((System.IO.Path.GetExtension(fileName) ?? "png").Replace(".", "")) 
        .Append(";base64,") 
        .Append(Convert.ToBase64String(File.ReadAllBytes(fileName))); 
    ImageDataUri = sb.ToString(); 
}