Passer au contenu principal
Il est temps de lire: 4 minutes

Dans la partie 1, j'ai présenté quelques scénarios possibles d'utilisation de python avec Power BI en dehors des fonctions de script python et python visuelles intégrées. Cet article se concentre sur la configuration d'un fichier d'outil externe de base qui transmet la connexion au modèle de données Power BI pour une utilisation dans les scripts python. Ce sera un très scénario de base, mais prépare le terrain pour de meilleures choses à venir, comme décrit dans la partie 1.

Définir un fichier JSON PBITool de base

Pour voir un nouvel outil sur le ruban Power BI Desktop, vous devez définir un fichier JSON et le placer dans un dossier spécifique sur votre poste de travail. Les Points forts Les outils externes Tabular Editor, DAX Studio et ALM Toolkit ont des programmes d'installation qui gèrent cette étape. Puisque vous ne disposez pas d'un installateur dédié pour placer ce fichier dans le répertoire requis, vous devez définir manuellement le vôtre.

Tant que le «format de métadonnées amélioré» pour le modèle de données est activé et que le JSON dans votre fichier est exact, vous devriez voir votre nouvel outil sur le ruban après avoir rouvert Power BI Desktop.

Définissons un outil externe appelé «Power BI Desktop Connection» qui affiche le logo Python sur le ruban et affiche les informations de connexion Power BI actuelles lorsque vous cliquez dessus.

Pour commencer, copiez et collez le JSON suivant dans un éditeur de texte (essence).

{
  "version": "1.0",
  "Nom": "[Nom de l'outil]",
  "la description": "[Description de l'outil]",
  "chemin": "C: \[CHEMIN VERS PYTHON EXÉCUTABLE]\ python.exe ",
  "arguments": "C: /[CHEMIN VERS LE SCRIPT PYTHON].py "%server%" "%database%"",
  "iconData": "données: image / png; base64,[VOTRE CONTENU IMAGE BASE64]"
}

Voici un exemple que j'ai terminé pour mon exemple d'outil de base afin d'afficher la connexion actuelle à Power BI Desktop. J'utilise Anaconda, c'est pourquoi vous voyez python.exe à partir de l'emplacement Anaconda par défaut dans mon chemin.

 {"version": "1.0", "name": "Power BI Desktop Connection", "description": "Use python", "path": "C: \ ProgramData \ Anaconda3 \python.exe"," arguments ":" C: / Users / DavidEldersveld / Documents / python /PowerBIConnectionString.py "%server%" "%database%"", "iconData": ""}

Décomposition du contenu:
version: ne change pas ça
nom: nom d'affichage sur le ruban Power BI Desktop
la description: description de l'outil externe (vous penseriez que cela apparaîtrait sous forme de texte alternatif lors du défilement, mais uniquement nom affiché lors du survol)
route: chemin vers toi python.exe Record
arguments: arguments de ligne de commande passés à votre exécutable
iconData: image base64 utilisée pour l'icône du ruban

Si vous regardez le [tool] .pbitool.json pour un autre outil comme l'éditeur tabulaire, vous verrez le serveur y base de données passé comme les deux seuls arguments. Pour une utilisation avec python, ceux-ci peuvent rester, mais votre premier argument devra être un script python .py dans ce cas.

Pour adapter ce fichier au vôtre, déterminez les valeurs appropriées et remplacez-les si nécessaire.

 {"version": "1.0", "nom": "[Nom de l'outil]"," la description ":"[Description de l'outil]"," chemin ":" C: \[CHEMIN VERS PYTHON EXÉCUTABLE]\ python.exe "," arguments ":" C: /[CHEMIN VERS LE SCRIPT PYTHON].py "%server%" "%database%"",
  "iconData": "data:image/png;base64,[VOTRE CONTENU IMAGE BASE64]"
}

Les deux plus importants seront les chemin correct vers votre python.exe et la première valeur d'argument avec le chemin correct vers votre script python.

Je sais qu'il existe un moyen d'utiliser du code pour convertir des images en base64, mais je finis toujours par utiliser un site Web comme celui-ci pour plus de commodité: https://www.base64-image.de/

Ajoutez votre fichier [tool] .pbitool.json dans le dossier approprié

Ajoutez votre nouveau fichier à votre C: Program Files (x86) Fichiers communs Outils externes Microsoft Shared Power BI Desktop dossier.

Créez votre script python

Le fichier [tool] .pbitool.json utilisait un fichier .py comme premier argument. D'où vient cela? Ça vient de toi! Placez le code que vous souhaitez exécuter dans ce fichier et enregistrez-le à l'emplacement que vous avez fourni dans le fichier [tool] .pbitool.json.

Pour mon exemple de connexion Power BI Desktop, mon exemple de script (essence) est en dessous duquel j'ai enregistré sous PowerBIConnectionString.py dans le chemin décrit ci-dessus [tool] .pbitool.json file. Le script imprime simplement les arguments du serveur et de la base de données qui lui sont transmis, puis concatène et imprime une chaîne de connexion qui pourrait être utilisée pour se connecter à ce modèle de données particulier.

import sys print ('Power BI Desktop Connection') print (str (sys.argv [1])) print (str (sys.argv [2])) print ('') conn = "Provider = MSOLAP; Source de données = "+ str (sys.argv [1]) +"; Catalogue initial = ''; " entrée print (conn) () 

sys.argv [1] est l'argument correspondant au serveur et sys.argv [2] est le GUID de la base de données. python commence à 0, qui est la valeur de l'argument associé au script courant.

Si vous étendez enfin les outils externes avec vos propres scripts python et passez la connexion Power BI Desktop, vous ferez confiance sys.argv [1].

Le GUID de la base de données entrera en jeu dans les futurs scripts, mais il n'est pas requis pour ce scénario initial. Sachez simplement que localement, la chaîne de connexion n'aura besoin que de serveur: port.

Si le script .py et [outil] Le fichier .pbitool.json se trouvent au bon emplacement et en supposant que le script fonctionne, vous pouvez ouvrir Power BI Desktop. Vérifiez le ruban Outils externes pour exécuter le script.

Bientôt dans la partie 3: .NET + python - Connexion au modèle d'objet tabulaire (TOM)

Bien que ce script de base fonctionne tel quel, il y a un problème avec cette configuration que je couvrirai dans le prochain article. python.exe s'exécute indépendamment en dehors d'un environnement, de sorte que les packages chargés dans la base de données ou dans un autre environnement virtuel ne sont pas disponibles pour le script.

Pour nous connecter au modèle d'objet tabulaire de python, nous aurons besoin d'un peu d'aide de .NET et de certains packages dans mon environnement conda. La partie 3 contient les paramètres du fichier [tool] .pbitool.json qui me permet d'utiliser un environnement virtuel Python spécifique.

Liens de paiement

En tant qu'associé Amazon, je gagne sur les achats éligibles.