Bagikan melalui


Mendaftarkan alat eksternal

Beberapa alat harus didaftarkan secara manual dengan Power BI Desktop. Untuk mendaftarkan alat eksternal, buat file JSON dengan contoh kode berikut:

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

File pbitool.json menyertakan elemen-elemen berikut:

  • nama: Berikan nama untuk alat ini, yang akan muncul sebagai keterangan tombol di pita Alat Eksternal dalam Power BI Desktop.
  • deskripsi: (opsional) Berikan deskripsi, yang akan muncul sebagai tooltip pada tombol pita Alat Eksternal dalam Power BI Desktop.
  • jalan: Berikan jalur yang sepenuhnya memenuhi syarat ke alat yang dapat dieksekusi.
  • argumen: (opsional) Berikan string argumen baris perintah yang harus diluncurkan dengan alat yang dapat dieksekusi. Anda dapat menggunakan salah satu tempat penampung berikut:
    • %server%: Diganti dengan nama server dan portnumber instans lokal Tabular Analysis Services untuk model data impor/DirectQuery.
    • %database%: Diganti dengan nama database model yang dihosting dalam instans lokal Tabular Analysis Services untuk model data yang diimpor/DirectQuery.
  • iconData: Sediakan data gambar, yang akan di-render sebagai ikon tombol di pita Alat Eksternal dalam Power BI Desktop. String harus diformat sesuai dengan sintaks untuk URI Data tanpa awalan "data:".

Beri nama file "<tool name>.pbitool.json" dan letakkan di folder berikut:

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

Untuk lingkungan 64-bit, tempatkan file di folder berikut:

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

File di lokasi yang ditentukan dengan ekstensi .pbitool.json dimuat oleh Power BI Desktop saat mulai.

Contoh

File *.pbitool.json berikut meluncurkan powershell.exe dari pita Alat Eksternal dan menjalankan skrip yang disebut pbiToolsDemo.ps1. Skrip meneruskan nama server dan nomor port dalam parameter -Server dan nama model semantik dalam parameter -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" 
} 

Skrip pbiToolsDemo.ps1 yang sesuai menghasilkan parameter Server dan Database ke konsol.

[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'  

Screenshot of PowerShell console output created from the example external tool.

URI data ikon

Untuk menyertakan ikon di pita Alat Eksternal, file pendaftaran pbitool.json harus menyertakan elemen iconData.

Screenshot of the external tools ribbon with the tool icons.

Elemen iconData mengambil URI data tanpa data: awalan. Misalnya, URI data dari gambar png magenta satu piksel adalah:

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

Pastikan untuk menghapus data: awalan, seperti yang ditunjukkan dalam contoh sebelumnya pbitool.json.

Untuk mengonversi .png atau jenis file gambar lainnya ke URI data, gunakan alat online atau alat kustom seperti yang ditunjukkan dalam cuplikan kode C# berikut:

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(); 
}