Microsoft Power BI ist eines der beliebtesten BI-Tools am Markt und bietet zahlreiche Möglichkeiten, Daten aufzubereiten und zu visualisieren. Um noch mehr Flexibilität zu schaffen, kannst Du zusätzlich durch die Nutzung von Python- und R-Skripten die Standardfunktionen umfangreich erweitern. Wie Du Python-Skripte einbindest, was damit möglich und was zu beachten ist, zeigen wir Dir in diesem Beitrag.
Table of Contents
Vorbereitung ist die halbe Miete: Basics und Voraussetzungen
Die Grundvoraussetzung ist – wenig überraschend – die Installation von Python. Außerdem musst Du mindestens die Pakete Pandas und Matplotlib installiert haben. Das funktioniert sowohl in der virtuellen Umgebung als auch in der Konsole mit
pip install <Paketname>
Nachdem alle Pakete installiert sind, kann der zu verwendende Python-Interpreter in Power BI angegeben werden. Dies erfolgt unter Datei à Optionen à Python Scripting.
Python-Skripte im Query-Editor
Power BI bietet Dir während der Datenabfrage grundsätzlich zwei Möglichkeiten, ein Python-Skript einzubinden.
Möglichkeit 1: Definition eines Python-Skripts als Datenquelle Hier können beliebige Schritte durchgeführt werden. Am Ende muss ein Pandas DataFrame übergeben werden.
Möglichkeit 2: Definition eines Python-Transformationsschritts
Die Datenschnittstelle wird auch hier über Pandas DataFrames realisiert. Das folgende Beispiel zeigt, wie Du eine Transformation mit Python durchführst. Hierfür verwenden wir beispielhaft einen Immobiliendatensatz, der deutschlandweit Mietobjekte und deren spezifische Eigenschaften, wie Wohnraumgröße und Anzahl der Zimmer, beinhaltet. Bitte beachte: Das Beispiel dient der Illustration der Einbindung von Python in Power BI. Es wurde bewusst einfach gehalten, um diesen Fokus nicht zu verlieren. Auf die üblichen Model-Performance-Optimierungen wurde verzichtet.
Als Transformationsschritt soll ein vorhandenes Machine-Learning-Modell geladen werden, das auf Basis dieser Eigenschaften den zu erwartenden Mietpreis prognostiziert.
Nachdem alle vorangehenden Schritte im Query-Editor durchgeführt wurden, kann das Python-Skript als Transformationsschritt gewählt werden.
Der Python-Code für die gewünschte Transformation sieht in etwa wie folgt aus:
# 'dataset' holds the input data for this scriptimport pickle
import pandas as pd
# Definieren der Features für das Machine-Learning Modellfeat_columns = ["Bundesland", "Alter", "Wohnraum", "Anz_Zimmer", "hatBalkon", "hatAufzug", "hatGarten"]
features = dataset[feat_columns]
#Mappen des Bundeslandes von Reihen- in Spaltendarstellungdummy_regions = pd.get_dummies(features["Bundesland"])
for dummy in dummy_regions.columns:
features[dummy] = dummy_regions[dummy]
features = features.drop("Bundesland", axis=1)
# Laden des Machine Learning Modellsmodel = pickle.load(open("<Pfad>/xgboost_model.pickle.dat"))
# Erstellen der Mietpreis-Prognose in neuer Spalte "Kaltmiete"dataset["Kaltmiete"] = model.predict(features)
# Entfernen der nicht benötigten DataFrame Objektedummy_regions = Nonefeatures = None
Die Transformation beinhaltet die folgenden Schritte in Python:
Zunächst werden die Pakete pandas und pickle geladen.
Daraufhin werden die Features definiert, die das Modell benötigt, um den Mietpreis zu prognostizieren. Hierfür wird das Format der Bundesländer geändert.
Im Anschluss wird das Modell mit pickle geladen.
Mit dem Machine-Learning-Modell werden die Mietpreise für den gesamten Datensatz prognostiziert.
Schließlich werden alle DataFrames gelöscht, die nicht in Power BI zur Verfügung stehen müssen. So wird eine unnötige Datenübertragung vermieden.
Nach der Anwendung des Skripts steht eine Datentabelle zur Verfügung, die um eine weitere Spalte „Kaltmiete“ ergänzt wurde.
Python-Skripte als Visuals
Möchte man spezielle Plots benutzen oder sehr großen Einfluss auf die Gestaltung des Visuals nehmen, kann es durchaus sinnvoll sein, diese Plots direkt in Python zu erstellen. Die Sprache bietet eine Vielzahl an Bibliotheken wie Matplotlib oder Seaborn, durch die eine immense Bandbreite an unterschiedlichen Plots abgedeckt wird. Diese sind individuell konfigurierbar und lassen sich in Größe, Farbe und Form nach eigenen Wünschen gestalten.
Um Dir das zu demonstrieren, nutzen wir den Immobiliendatensatz, um die Mietpreise Münchens mit denen des restlichen Bayerns zu vergleichen. Hierzu erstellen wir den folgend dargestellten Violinenplot, der die gesamte Preisverteilung für München und Bayern darstellt und zwischen Neubau und Altbau unterscheidet.
Um mit Python eine Grafik zu erstellen, wählst Du das Python-Visual aus. Anders als bei der Python-Transformation müssen hier alle Spalten zu den Werten hinzugefügt werden, die in Python zur Verfügung stehen sollen.
In dem Python-Skript steht ein Pandas-DataFrame-Objekt mit den definierten Spalten zur Verfügung. Wir werden mit Seaborn arbeiten, um die Violinenplots zu erstellen.
Der Code zum generellen Erstellen von Violinenplots sieht wie folgt aus:
# dataset = pandas.DataFrame(Ort, Kaltmiete, istNeubau)# dataset = dataset.drop_duplicates()# Paste or type your script code here:import seaborn as sns
from matplotlib import pyplot as plt
import numpy as np
# anpassen der Schriftgröße und des Plot Designssns.set(font_scale=1.3)
sns.set_style("whitegrid")
# Unterscheidung zwischen München und Rest Bayeren in einer neuen Spalte "Kategorie"mask = dataset["Ort"] == "München"dataset["Kategorie"] = np.where(mask, "München", "Rest Bayern")
# Erstellen und zeichnen des Plotsax = sns.violinplot(x="Kategorie", y="Kaltmiete", hue="istNeubau", inner=None, data=dataset, split=True, scale="count")
plt.show()
Was gibt es noch zu wissen?
Publizieren von Berichten mit Python-Skript
Das so weit beschriebene Vorgehen richtet sich an Power BI Desktop. In der Regel werden Power-BI-Reports jedoch nach dem Erstellen auf dem Power BI Service publiziert. Das bedeutet, dass die integrierten Python-Skripte nicht mehr lokal, sondern auf dem Power BI Service ausgeführt werden. Die hier installierte Python-Version kann sich also von der lokalen Version unterscheiden. Eine Auflistung aller aktuell unterstützten Pakete findest Du hier.
Wenn ein Python-Skript im Query-Editor als Transformationsschritt oder Datenquelle genutzt wird und automatisch auf einen aktualisierten Datensatz angewendet werden soll, ist es notwendig, ein Personal Gateway zu verwenden. Auf der Maschine, die das Gateway hostet, müssen Python und die entsprechenden Pakete installiert sein.
Python und große Datensätze
Die Schnittstelle zur Datenübertragung zwischen Power BI und Python basiert auf dem Austausch einer temporär erzeugten CSV-Datei. Diese muss bei jeder Aktualisierung erzeugt, gespeichert und wieder eingelesen werden. Deswegen solltest Du darauf achten, nicht mehr Daten als notwendig nach Python zu laden. Ab einer gewissen Datengröße sollte man Python-Skripte vermeiden.
Fazit
Bevor Du Python in Power BI einbindest, solltest Du prüfen, ob das gewünschte Ziel nicht auch mit fertigen, effizienteren Power-BI-Lösungen umgesetzt werden kann. Außerdem sollte man sich überlegen, wie die Reports publiziert werden sollen und ob das nötige Python-Skript so voll unterstützt wird. Ist Python einsetzbar, bietet es immense Möglichkeiten, Power BI mit zusätzlichen Funktionen auszustatten und mit unbegrenztem Gestaltungsspielraum individuelle Plots zu entwerfen.
Du hast konkrete Fragen zur Vorgehensweise oder möchtest Dich zu Python in Power BI austauschen? Dann melde Dich gerne bei uns!
Wer ist b.telligent?
Du willst den IoT Core durch eine Multi-Cloud-Lösung ersetzen und die Vorteile weiterer IoT-Services von Azure oder Amazon Web Services nutzen? Dann melde Dich bei uns und wir unterstützen Dich bei der Umsetzung mit unserer Expertise und dem b.telligent Partnernetzwerk.
Mit der neuen Funktion AUSDRUCKERSETZEN bietet arcplan 7 die Möglichkeit, Einfluss auf das automatisch generierte SQL und MDX Statement zu nehmen. Dies hat den Vorteil, dass weiterhin ein Design mittels „Pfeilen“ erfolgen kann und man nicht auf Formeln beschränkt ist. Mit diesem Mittel sind aktuell nur einfache Anpassungen an der Abfrage möglich, jedoch mit einem großen Impact auf die daraus entstehenden Möglichkeiten.
Mit dem Q2 2023 Update „New Optimized Story Experience – Unified Stories and Applications“ bietet die SAP Analytics Cloud Nutzer:innen neue Wege, um noch flexibler und leichter in einer integrierten Designumgebung Berichte und Dashboards zu entwickeln. Wir zeigen Dir hier, welche neuen Features das Update mit sich bringt und wie es Dich beim Erstellen von Berichten unterstützt.
SAP BW stellt als Business-Intelligence-Paket viele Möglichkeiten für ein performantes Reporting bereit – birgt jedoch auch zahlreiche Hemmnisse, die die Performance merklich verlangsamen. Am Beispiel von in der Anwendung verfügbaren Berichtsfiltern zeigt dieser Beitrag, wie kleinste Adaptionen die Leistung von SAP BW mindern und wie eine performante Einstellung der Filtermöglichkeiten zu besseren Ergebnissen führen kann.