Mettre à jour automatiquement Power BI Desktop avec Python

PowerBI est pratique, n'est-ce pas?

Si vous le faites une fois, il est bon que l'analyse mensuelle soit effectuée automatiquement. Clarté qui vous permet d'organiser librement des graphiques et de comprendre les données souhaitées en un coup d'œil. Filtres et fonctions de conseil qui vous permettent d'approfondir votre analyse simplement en utilisant la souris. Relations entre les tables qui peuvent être connectées intuitivement. Coopération avec diverses sources de données. Après tout, je suis surpris que ce soit gratuit.

Je l'utilise également pour analyser des centaines de millions de données. C'est amusant d'utiliser la fonction d'indication pour montrer ce qui se passait à ce moment-là. Cependant, il y a un problème.

C'est ennuyeux de mettre à jour! !! Même si les données sont prétraitées, la lecture des données prend des dizaines de minutes. C'est stressant de vouloir l'éteindre rapidement. Le PC devient lourd. De plus, si vous essayez de mettre à jour sur un PC avec des spécifications faibles, il tombera en raison d'un manque de mémoire. Il semble que vous puissiez automatiquement mettre à jour avec Power BI sans marque au lieu de Power BI Desktop, mais cela sera facturé et la gestion des comptes est difficile.

Donc, cette fois, j'ai créé un programme en Python qui automatise PowerBI Desk Top.

Environnement / configuration

J'utilise le planificateur de tâches de Windows 10 Pro pour exécuter régulièrement des programmes Python. J'utilise Pywinauto pour ouvrir le fichier pbix dans l'interface graphique, cliquez sur le bouton "Mettre à jour", puis enregistrez-le. À propos, la source de données est obtenue en se connectant à MySQL sur le serveur.

code

auto_pbi.py


import os
import sys
import time

from pywinauto import Desktop, Application, keyboard

def main(workbook):
    exe = 'PBIDesktop.exe'

    #Fichier ouvert
    os.system('start "" "{0}"'.format(workbook))
    app = Application(backend='uia').connect(path=exe)
    time.sleep(60)
    try:
        #Spécifier la fenêtre
        win = app.window(title_re = '.*Power BI Desktop')
        win.set_focus()
        #Cliquez sur Accueil> Mettre à jour
        win.domicile.wait("visible")
        win.domicile.click_input()
        win.mise à jour.wait("visible")
        win.mise à jour.click_input()
        win.Annuler.wait_not("visible",timeout=6000)
        #sauvegarder
        keyboard.send_keys("^s")
        time.sleep(120)
    except Exception as e:
        print(e)
    finally:
        app.kill()


if __name__ == '__main__':
    try:
        file_path = sys.argv[1]
    except (IndexError):
        print('Veuillez spécifier le fichier.')
        sys.exit()

    main(file_path)

Le code ci-dessus est spécifié dans auto_pbi.bat et exécuté dans le planificateur de tâches.

auto_pbi.bat


cd dossier spécifié
python.exe auto_pbi.rapport py.pbix
exit

Pour les fichiers Python, .py et pbix, il est recommandé de les écrire avec des chemins absolus. J'ai mis le rapport et le fichier py dans le dossier, j'ai donc déplacé le dossier sur la première ligne.

point important

Exécution du planificateur de tâches

J'ai essayé d'exécuter ce programme sur un PC distant, mais cela n'a pas fonctionné. Si j'exécute moi-même le planificateur de tâches, cela fonctionne, mais si je déconnecte la connexion à distance et que j'essaie de l'exécuter avec un déclencheur, cela ne fonctionne pas. En effet, dans le cas d'un PC distant, l'écran du bureau est verrouillé lorsque le bureau distant est déconnecté. J'obtiens l'erreur suivante:

there is no active desktop required for moving mouse cursor!

Pour prendre cette mesure, vous devez configurer l'écran du bureau afin qu'il ne se verrouille pas lorsque le bureau distant est éteint. https://pywinauto.readthedocs.io/en/latest/remote_execution.html

J'ai pris la méthode d'utilisation de la commande suivante lors de la désactivation du bureau à distance. Veuillez changer l'endroit où se trouve \ # 80 en fonction de l'environnement. Ouvrez le Gestionnaire des tâches> Utilisateur sur le PC distant, cliquez avec le bouton droit sur la partie en-tête de chaque colonne et cochez "Session" pour afficher l'ID de session distante. Entrez la commande suivante à partir de l'invite de commande pour déconnecter la session de bureau à distance.

TSCON RDP-Tcp#80 /dest:console

Traitement du sommeil

Si je n'ai pas attendu un moment après le lancement de pbi, une erreur s'est produite car Windows ne s'est pas lancé. De plus, j'ai pensé que je devais faire attention de manière inattendue au processus de mise en veille après l'enregistrement avec Ctrl + S. Je pensais pouvoir terminer le processus de sauvegarde en 30 secondes environ, mais je ne pouvais pas. Je pense qu'il vaut mieux le garder plus longtemps que vous ne le pensez.

Autre

Si vous pouvez copier le fichier après la mise à jour et l'envoyer, ou si vous obtenez une erreur, envoyez un e-mail, etc., si vous pouvez le baser sur cela, vous pouvez enregistrer le traitement gênant tel que la mise à jour quotidienne du Big Data et envoyer une vie PowerBI confortable. Je pense que vous pouvez l'obtenir!

Recommended Posts

Mettre à jour automatiquement Power BI Desktop avec Python
Obtenez le chemin du bureau en Python
Formater automatiquement le code Python avec Vim
Obtenez le chemin du bureau en Python
Mise à jour Python (2.6-> 2.7)
Générer automatiquement un commentaire de chaîne de document Python avec Emacs
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
SendKeys en Python
Enregistrer automatiquement les arguments de fonction dans argparse en Python
Essayez auto pour évaluer automatiquement Enum dans Python 3.6
Créez automatiquement des rapports Word et Excel avec Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Visualisation des informations géographiques de R et Python qui peuvent être exprimées par Power BI
Utilisez Cursur qui se ferme automatiquement avec sqlite3 en Python
Liste triée en Python
AtCoder # 36 quotidien avec Python
Texte de cluster en Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python