Aktualisieren Sie Power BI Desktop automatisch mit Python

PowerBI ist praktisch, nicht wahr?

Wenn Sie es einmal machen, fühlt es sich gut an, dass die monatliche Analyse automatisch durchgeführt wird. Klarheit, mit der Sie Diagramme frei anordnen und die gewünschten Daten auf einen Blick verstehen können. Filter und Hinweisfunktionen, mit denen Sie Ihre Analyse durch einfaches Bedienen der Maus vertiefen können. Beziehungen zwischen Tabellen, die intuitiv verbunden werden können. Zusammenarbeit mit verschiedenen Datenquellen. Immerhin bin ich überrascht, dass es kostenlos ist.

Ich verwende es auch, um Hunderte Millionen Daten zu analysieren. Es macht Spaß, die Hinweisfunktion zu verwenden, um zu zeigen, was zu dieser Zeit geschah. Es gibt jedoch ein Problem.

Es ist ärgerlich zu aktualisieren! !! Obwohl die Daten vorverarbeitet sind, dauert das Lesen der Daten mehrere zehn Minuten. Es ist stressig, wenn Sie es schnell löschen möchten. Der PC wird schwer. Wenn Sie versuchen, auf einem PC mit niedrigen Spezifikationen zu aktualisieren, fällt dies aufgrund von Speichermangel ab. Es scheint, dass Sie automatisch mit Power BI ohne Marke anstelle von Power BI Desktop aktualisieren können, dies wird jedoch in Rechnung gestellt und die Kontoverwaltung ist schwierig.

Dieses Mal habe ich ein Programm zur Automatisierung von PowerBI Desk Top in Python erstellt.

Umgebung / Konfiguration

Ich verwende den Windows 10 Pro-Taskplaner, um regelmäßig Python-Programme auszuführen. Ich benutze Pywinauto, um die pbix-Datei in der GUI zu öffnen, auf die Schaltfläche "Aktualisieren" zu klicken und sie dann zu speichern. Die Datenquelle wird übrigens durch Herstellen einer Verbindung zu MySQL auf dem Server erhalten.

Code

auto_pbi.py


import os
import sys
import time

from pywinauto import Desktop, Application, keyboard

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

    #Datei öffnen
    os.system('start "" "{0}"'.format(workbook))
    app = Application(backend='uia').connect(path=exe)
    time.sleep(60)
    try:
        #Fenster angeben
        win = app.window(title_re = '.*Power BI Desktop')
        win.set_focus()
        #Klicken Sie auf Start> Aktualisieren
        win.Zuhause.wait("visible")
        win.Zuhause.click_input()
        win.aktualisieren.wait("visible")
        win.aktualisieren.click_input()
        win.Stornieren.wait_not("visible",timeout=6000)
        #sparen
        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('Bitte geben Sie die Datei an.')
        sys.exit()

    main(file_path)

Der obige Code wird in auto_pbi.bat angegeben und im Taskplaner ausgeführt.

auto_pbi.bat


CD angegebener Ordner
python.exe auto_pbi.py Bericht.pbix
exit

Für Python-, .py- und pbix-Dateien wird empfohlen, sie mit absoluten Pfaden zu schreiben. Ich habe den Bericht und die py-Datei in den Ordner gelegt, also habe ich den Ordner in die erste Zeile verschoben.

wichtiger Punkt

Taskplaner ausführen

Ich habe versucht, dieses Programm auf einem Remote-PC auszuführen, aber es hat nicht funktioniert. Wenn ich den Taskplaner selbst "ausführe", funktioniert er, aber wenn ich die Remoteverbindung trenne und versuche, ihn mit einem Trigger auszuführen, funktioniert er nicht. Dies liegt daran, dass bei einem Remote-PC der Desktop-Bildschirm gesperrt ist, wenn der Remote-Desktop getrennt wird. Ich erhalte folgende Fehlermeldung:

there is no active desktop required for moving mouse cursor!

Um diese Maßnahme zu ergreifen, müssen Sie den Desktop-Bildschirm so einstellen, dass er beim Ausschalten des Remotedesktops nicht gesperrt wird. https://pywinauto.readthedocs.io/en/latest/remote_execution.html

Beim Ausschalten des Remotedesktops habe ich den folgenden Befehl verwendet. Bitte ändern Sie den Ort, an dem sich \ # 80 befindet, entsprechend der Umgebung. Öffnen Sie den Task-Manager> Benutzer auf dem Remote-PC, klicken Sie mit der rechten Maustaste auf den Überschriftenteil jeder Spalte und aktivieren Sie "Sitzung", um die Remote-Sitzungs-ID anzuzeigen. Geben Sie an der Eingabeaufforderung den folgenden Befehl ein, um die Remotedesktopsitzung zu trennen.

TSCON RDP-Tcp#80 /dest:console

Schlafverarbeitung

Wenn ich nach dem Start von pbi nicht eine Weile gewartet habe, ist ein Fehler aufgetreten, weil Window nicht gestartet wurde. Außerdem dachte ich, dass ich unerwartet vorsichtig sein sollte, den Schlafprozess nach dem Speichern mit Strg + S. Ich dachte, ich könnte den Speichervorgang in etwa 30 Sekunden abschließen, aber ich konnte nicht. Ich denke, es ist besser, es länger zu behalten, als Sie denken.

Andere

Wenn Sie die Datei nach dem Aktualisieren kopieren und senden können oder wenn Sie eine Fehlermeldung erhalten, eine E-Mail senden usw. Wenn Sie sich darauf stützen können, können Sie die mühsame Verarbeitung wie die tägliche Aktualisierung großer Datenmengen speichern und ein komfortables PowerBI-Leben senden. Ich denke du kannst es bekommen!

Recommended Posts

Aktualisieren Sie Power BI Desktop automatisch mit Python
Holen Sie sich den Desktop-Pfad in Python
Formatieren Sie Python-Code automatisch mit Vim
Holen Sie sich den Desktop-Pfad in Python
Python-Update (2.6-> 2.7)
Python Docstring-Kommentar automatisch mit Emacs generieren
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
SendKeys in Python
Registrieren Sie Funktionsargumente automatisch in argparse in Python
Versuchen Sie automatisch, Enum in Python 3.6 automatisch zu bewerten
Erstellen Sie automatisch Wort- und Excel-Berichte mit Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Visualisierung von geografischen Informationen von R und Python, die von Power BI ausgedrückt werden können
Verwenden Sie Cursur, das in Python automatisch mit sqlite3 geschlossen wird
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Täglicher AtCoder # 18 in Python