Registrera ett externt verktyg
Vissa verktyg måste registreras manuellt med Power BI Desktop. Om du vill registrera ett externt verktyg skapar du en JSON-fil med följande exempelkod:
{
"name": "<tool name>",
"description": "<tool description>",
"path": "<tool executable path>",
"arguments": "<optional command line arguments>",
"iconData": "image/png;base64,<encoded png icon data>"
}
Filen pbitool.json innehåller följande element:
- name: Ange ett namn på verktyget, som visas som en knapp bildtext i menyfliksområdet Externa verktyg i Power BI Desktop.
- beskrivning: (valfritt) Ange en beskrivning som visas som en knappbeskrivning på menyfliksområdet Externa verktyg i Power BI Desktop.
- path: Ange den fullständigt kvalificerade sökvägen till verktygets körbara fil.
- argument: (valfritt) Ange en sträng med kommandoradsargument som verktyget ska köras med. Du kan använda någon av följande platshållare:
- %server%: Ersätts med servernamnet och portnumret för den lokala instansen av Analysis Services-tabell för importerade/DirectQuery-datamodeller.
- %database%: Ersätts med databasnamnet på modellen som finns i den lokala instansen av Analysis Services-tabell för importerade/DirectQuery-datamodeller.
- iconData: Ange bilddata som återges som en knappikon i menyfliksområdet Externa verktyg i Power BI Desktop. Strängen ska formateras enligt syntaxen för Data-URI:er utan prefixet "data:".
Namnge filen "<tool name>.pbitool.json"
och placera den i följande mapp:
%commonprogramfiles%\Microsoft Shared\Power BI Desktop\External Tools
För 64-bitarsmiljöer placerar du filerna i följande mapp:
- Programfiler (x86)\Common Files\Microsoft Shared\Power BI Desktop\Externa verktyg
Filer på den angivna platsen med tillägget .pbitool.json läses in av Power BI Desktop vid start.
Exempel
Följande *.pbitool.json-fil startar powershell.exe från menyfliksområdet Externa verktyg och kör ett skript med namnet pbiToolsDemo.ps1. Skriptet skickar servernamnet och portnumret i parametern -Server och det semantiska modellnamnet i parametern -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"
}
Motsvarande pbiToolsDemo.ps1-skript matar ut server- och databasparametrarna till konsolen.
[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'
Ikondata-URI:er
Om du vill inkludera en ikon i menyfliksområdet Externa verktyg måste registreringsfilen pbitool.json innehålla ett iconData-element.
Elementet iconData tar en data-URI utan prefixet data: . Till exempel är data-URI:n för en bildpunkts magenta png-bild:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAANSURBVBhXY/jH9+8/AAciAwpql7QkAAAAAElFTkSuQmCC
Se till att ta bort data: prefix, som visas i pbitool.json föregående exempel.
Om du vill konvertera en .png- eller annan bildfiltyp till en data-URI använder du ett onlineverktyg eller ett anpassat verktyg, till exempel det som visas i följande C#-kodfragment:
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();
}