Rejestrowanie narzędzia zewnętrznego
Niektóre narzędzia muszą być ręcznie zarejestrowane w programie Power BI Desktop. Aby zarejestrować narzędzie zewnętrzne, utwórz plik JSON przy użyciu następującego przykładowego kodu:
{
"name": "<tool name>",
"description": "<tool description>",
"path": "<tool executable path>",
"arguments": "<optional command line arguments>",
"iconData": "image/png;base64,<encoded png icon data>"
}
Plik pbitool.json zawiera następujące elementy:
- name: podaj nazwę narzędzia, która będzie wyświetlana jako przycisk podpis na wstążce Narzędzia zewnętrzne w programie Power BI Desktop.
- opis: (opcjonalnie) Podaj opis, który będzie wyświetlany jako etykietka narzędzia na przycisku wstążki Narzędzia zewnętrzne w programie Power BI Desktop.
- path: podaj w pełni kwalifikowaną ścieżkę do pliku wykonywalnego narzędzia.
- argumenty: (opcjonalnie) Podaj ciąg argumentów wiersza polecenia, z którymi powinien zostać uruchomiony plik wykonywalny narzędzia. Możesz użyć dowolnego z następujących symboli zastępczych:
- %server%: Zastąpiono nazwą serwera i numerem portu lokalnego wystąpienia tabelarycznego usług Analysis Services dla importowanych/bezpośrednich modeli danych.
- %database%: Zastąpiono nazwą bazy danych modelu hostowanego w lokalnym wystąpieniu tabelarycznym usług Analysis Services dla importowanych/bezpośrednich modeli danych.
- iconData: podaj dane obrazu, które będą renderowane jako ikona przycisku na wstążce Narzędzia zewnętrzne w programie Power BI Desktop. Ciąg powinien być sformatowany zgodnie ze składnią identyfikatorów URI danych bez prefiksu "data:".
Nadaj plikowi "<tool name>.pbitool.json"
nazwę i umieść go w następującym folderze:
%commonprogramfiles%\Microsoft Shared\Power BI Desktop\External Tools
W przypadku środowisk 64-bitowych umieść pliki w następującym folderze:
- Program Files (x86)\Common Files\Microsoft Shared\Power BI Desktop\External Tools
Pliki w tej określonej lokalizacji z rozszerzeniem pbitool.json są ładowane przez program Power BI Desktop podczas uruchamiania.
Przykład
Poniższy plik *.pbitool.json uruchamia plik powershell.exe ze wstążki Narzędzia zewnętrzne i uruchamia skrypt o nazwie pbiToolsDemo.ps1. Skrypt przekazuje nazwę serwera i numer portu w parametrze -Server oraz nazwę modelu semantycznego w parametrze -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"
}
Odpowiedni skrypt pbiToolsDemo.ps1 zwraca parametry serwera i bazy danych do konsoli programu .
[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'
Identyfikatory URI danych ikon
Aby dołączyć ikonę na wstążce Narzędzia zewnętrzne, plik rejestracji pbitool.json musi zawierać element iconData.
Element iconData pobiera identyfikator URI danych bez prefiksu danych . Na przykład identyfikator URI danych obrazu png o jednym pikselu to:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAANSURBVBhXY/jH9+8/AAciAwpql7QkAAAAAElFTkSuQmCC
Pamiętaj, aby usunąć dane: prefiks, jak pokazano w poprzednim przykładzie pbitool.json.
Aby przekonwertować plik PNG lub inny typ pliku obrazu na identyfikator URI danych, użyj narzędzia online lub niestandardowego narzędzia, takiego jak pokazany w poniższym fragmencie kodu języka 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();
}