Registrare uno strumento esterno
Alcuni strumenti devono essere registrati manualmente con Power BI Desktop. Per registrare uno strumento esterno, creare un file JSON con il codice di esempio seguente:
{
"name": "<tool name>",
"description": "<tool description>",
"path": "<tool executable path>",
"arguments": "<optional command line arguments>",
"iconData": "image/png;base64,<encoded png icon data>"
}
Il file pbitool.json include gli elementi seguenti:
- nome:specificare un nome per lo strumento, che comparirà come nome di un pulsante nella barra multifunzione Strumenti esterni di Power BI Desktop.
- description: (facoltativo) specificare una descrizione, che verrà visualizzata come descrizione comando nel pulsante della barra multifunzione Strumenti esterni in Power BI Desktop.
- path: specificare il percorso completo del file eseguibile dello strumento.
- arguments: (facoltativo) specificare una stringa di argomenti della riga di comando con i quali deve essere avviato il file eseguibile dello strumento. È possibile usare uno dei segnaposto seguenti:
- %server%: sostituito con il nome server e il numero di porta dell'istanza locale di Analysis Services Tabular per i modelli di dati importati/DirectQuery.
- %database%: sostituito con il nome database del modello ospitato nell'istanza locale di Analysis Services Tabular per i modelli di dati importati/DirectQuery.
- iconData: specificare i dati immagine di cui verrà eseguito il rendering come icona di pulsante nella barra multifunzione Strumenti esterni in Power BI Desktop. La stringa deve essere formattata in base alla sintassi per gli URI di dati senza il prefisso "data:".
Assegnare al file il nome "<tool name>.pbitool.json"
e inserirlo nella cartella seguente:
%commonprogramfiles%\Microsoft Shared\Power BI Desktop\External Tools
Per gli ambienti a 64 bit, inserire i file nella cartella seguente:
- Programmi (x86)\Common Files\Microsoft Shared\Power BI Desktop\External Tools
I file nel percorso specificato con l'estensione .pbitool.JSON vengono caricati da Power BI Desktop all'avvio.
Esempio
Il file *.pbitool.json seguente avvia powershell.exe dalla barra multifunzione Strumenti esterni ed esegue uno script denominato pbiToolsDemo.ps1. Lo script passa il nome del server e il numero di porta nel parametro -Server e il nome del modello semantico nel parametro -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"
}
Lo script pbiToolsDemo.ps1 corrispondente restituisce i parametri Server e Database nella console.
[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'
URI dati icona
Per includere un'icona nella barra multifunzione Strumenti esterni, il file di registrazione pbitool.json deve includere un elemento iconData.
L'elemento iconData accetta un URI di dati senza il prefisso dati:. Ad esempio, l'URI dati di un'immagine png magenta di un pixel è:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAANSURBVBhXY/jH9+8/AAciAwpql7QkAAAAAElFTkSuQmCC
Accertarsi di rimuovere i dati: prefisso, come illustrato nell'esempio precedente pbitool.json.
Per convertire un .png o un altro tipo di file di immagine in un URI dati, usare uno strumento online o uno strumento personalizzato, come ad esempio quello illustrato nel frammento di codice C# seguente:
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();
}