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.
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.
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.
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
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.
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