Ulkoisen työkalun rekisteröiminen
Jotkin työkalut on rekisteröitävä manuaalisesti Power BI Desktopiin. Voit rekisteröidä ulkoisen työkalun luomalla JSON-tiedoston, jossa on seuraava esimerkkikoodi:
{
"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-tiedosto sisältää seuraavat elementit:
- name: Anna työkalulle nimi, joka näkyy painikkeen kuvatekstinä Power BI Desktopin Ulkoiset työkalut -valintanauhassa.
- description: (valinnainen) Anna kuvaus, joka näkyy Power BI Desktopin Ulkoiset työkalut -valintanauhassa työkaluvihjeenä.
- path: Anna työkalun suoritettavan tiedoston täydellinen polku.
- arguments: (valinnainen) Anna komentoriviargumenttien merkkijono, joilla työkalun suoritettava tiedosto tulisi käynnistää. Voit käyttää mitä tahansa seuraavista paikkamerkeistä:
- %server%: Korvataan paikallisen Analysis Services -taulukon esiintymän palvelinnimellä ja porttinumerolla tuonti- ja DirectQuery-tietomalleja varten.
- %database%: Korvataan paikallisen Analysis Services -taulukon esiintymässä isännöidun tietokannan nimellä tuonti- ja DirectQuery-tietomalleja varten.
- iconData: Anna kuvatiedot, jotka hahmonnetaan painikekuvakkeena Power BI Desktopin Ulkoiset työkalut -valintanauhassa. Merkkijono tulee muotoilla data-URI-syntaksin mukaan ilman "data:"-etuliitettä.
Nimeä tiedosto "<tool name>.pbitool.json"
ja sijoita se seuraavaan kansioon:
%commonprogramfiles%\Microsoft Shared\Power BI Desktop\External Tools
64-bittiset ympäristöt, sijoita tiedostot seuraavaan kansioon:
- Program Files (x86)\Common Files\Microsoft Shared\Power BI Desktop\External Tools
Määritetyssä sijainnissa olevat tiedostot, joiden tunniste on .pbitool.json , ladataan Power BI Desktopiin käynnistymisen yhteydessä.
Esimerkki
Seuraava *.pbitool.json-tiedosto käynnistää powershell.exe-tiedoston Ulkoiset työkalut -valintanauhasta ja suorittaa komentosarjan nimeltä pbiToolsDemo.ps1. Komentosarja välittää palvelimen nimen ja portin numeron -Server-parametrissa ja semanttisen mallin nimen -Database-parametrissa.
{
"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"
}
Vastaava pbiToolsDemo.ps1-komentosarja tulostaa Palvelin- ja Tietokanta-parametrit konsoliin.
[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'
Kuvaketietojen URI-osoitteet
Jos haluat sisällyttää kuvakkeen Ulkoiset työkalut -valintanauhaan, pbitool.json-rekisteröintitiedostossa on oltava iconData-elementti.
IconData-elementti ottaa tietojen URI:n ilman tietoja: etuliite. Esimerkiksi yhden pikselin magenta png -kuvan tietojen URI on:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAANSURBVBhXY/jH9+8/AAciAwpql7QkAAAAAElFTkSuQmCC
Muista poistaa tiedot: etuliite, joka on esitetty pbitool.json-esimerkissä.
Jos haluat muuntaa .png- tai muun kuvatiedostotyypin tietojen URI-osoitteeksi, käytä online-työkalua tai mukautettua työkalua, kuten seuraavassa C#-koodikatkelmassa näkyvää työkalua:
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();
}