Registrace externího nástroje
Některé nástroje musí být ručně zaregistrované v Power BI Desktopu. Pokud chcete zaregistrovat externí nástroj, vytvořte soubor JSON s následujícím ukázkovým kódem:
{
"name": "<tool name>",
"description": "<tool description>",
"path": "<tool executable path>",
"arguments": "<optional command line arguments>",
"iconData": "image/png;base64,<encoded png icon data>"
}
Soubor pbitool.json obsahuje následující prvky:
- name: Zadejte název nástroje, který se zobrazí jako tlačítko popis na pásu karet Externí nástroje v Power BI Desktopu.
- description: (volitelné) Zadejte popis, který se zobrazí jako popis tlačítka na pásu karet Externí nástroje v Power BI Desktopu.
- cesta: Zadejte plně kvalifikovanou cestu ke spustitelnému souboru nástroje.
- argumenty: (volitelné) Zadejte řetězec argumentů příkazového řádku, se kterými se má spustitelný soubor nástroje spustit. Můžete použít některý z následujících zástupných symbolů:
- %server%: Nahrazen názvem serveru a číslem portu místní instance tabulkové instance služby Analysis Services pro importované datové modely/Datové modely DirectQuery.
- %database%: Nahrazen názvem databáze modelu hostovaného v místní instanci tabulkové služby Analysis Services pro importované datové modely nebo datové modely DirectQuery.
- iconData: Zadejte data obrázků, která budou vykreslena jako ikona tlačítka na pásu karet Externí nástroje v Power BI Desktopu. Řetězec by měl být formátován podle syntaxe identifikátorů URI dat bez předpony data:.
Pojmenujte soubor "<tool name>.pbitool.json"
a umístěte ho do následující složky:
%commonprogramfiles%\Microsoft Shared\Power BI Desktop\External Tools
V 64bitových prostředích umístěte soubory do následující složky:
- Program Files (x86)\Common Files\Microsoft Shared\Power BI Desktop\External Tools
Soubory v zadaném umístění s příponou .pbitool.json načtou Power BI Desktop po spuštění.
Příklad
Následující soubor *.pbitool.json spustí powershell.exe z pásu karet Externí nástroje a spustí skript s názvem pbiToolsDemo.ps1. Skript předá název serveru a číslo portu v parametru -Server a název sémantického modelu v parametru -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"
}
Odpovídající skript pbiToolsDemo.ps1 vypíše parametry serveru a databáze do konzoly.
[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'
Identifikátory URI dat ikon
Pokud chcete na pásu karet Externí nástroje zahrnout ikonu, musí registrační soubor pbitool.json obsahovat element iconData.
Element iconData přebírá identifikátor URI dat bez dat: předpona. Například identifikátor URI dat obrázku magenta png s jedním pixelem je:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAANSURBVBhXY/jH9+8/AAciAwpql7QkAAAAAElFTkSuQmCC
Nezapomeňte odebrat data: předponu, jak je znázorněno v předchozím příkladu pbitool.json.
Pokud chcete převést soubor .png nebo jiný typ souboru obrázku na identifikátor URI dat, použijte online nástroj nebo vlastní nástroj, například takový, který je zobrazený v následujícím fragmentu kódu jazyka 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();
}