Power BI - Desktop
Für die ersten Schritte starten Sie am besten mit Power BI Desktop. Sie können die Software kostenfrei bei Microsoft herunterladen:
Microsoft Power BI Desktop
https://powerbi.microsoft.com/de-de/desktop
https://www.microsoft.com/en-us/download/details.aspx?id=45331
Die erste Version war ca 60. Die Version 2.31.4280.361 aber
schon 90 MB
Die Installation ist unkritisch.
Getting Started with the Power BI Desktop
https://www.youtube.com/watch?v=Qgam9M8I0xA
- Beeindrucken Sie mit Power BI Desktop
https://powerbi.microsoft.com/de-de/desktop - Welche Neuheiten enthält das aktuellste
Update für Power BI Desktop?
https://powerbi.microsoft.com/de-de/documentation/powerbi-desktop-latest-update/ - Power BI Desktop April 2016 Update
feature summary
https://powerbi.microsoft.com/en-us/blog/power-bi-desktop-april-update-feature-summary/
Erster Schritte in Power BI Desktop
Die Schritte mit PowerBI sind immer die Gleichen:
- Datenquellen einlesen
Zuerst müssen Sie in PowerBI die zu analysierenden Datenquellen einbinden. Das geht per Assistent recht einfach und es ist schon interessant, welche Quellen hier alle angezapft werden können
- Datenquellen in Reports einbinden
Auf der rechten Seite sehen Sie dann z.B. die einzelnen Datenfelder in den eingelesenen Dateien. Wenn Sie dann ein Element aus "Visualisierungen" auf den freien Bereich ziehen, können Sie ausgewählte Felder als Legende, Wert oder Achsen zuweisen. Hier habe ich z.B. mein Exchange Postfach als Quelle genutzt und die Anzahl der Mails über das Alter ausgegeben
Es ist gut zu sehen, dass es schon mehr Elemente aus dem Jahr 2015 gibt als im gesamten Jahr 2014. Ich könnte diese Information nun noch mit der Summe der Größen anreichern oder nach der Wichtigkeit filtern. Interessant kann es auch sein die Zahlen abhängig von der "HasAttachment"-Frage zu stellen um so zumindest für ein Postfach diese Information zu ermitteln.
Dass hier für 2013 nur so wenige Mails auftauchen liegt auch daran, dass ich ein Exchange Archiv nutze und damit die Elemente gar nicht mehr in meinem primären Postfach liegen. Ich habe aber noch keinen Weg gefunden, Wie PowerBI Desktop z.B. per Impersonate alle Postfächer einliest.
Interessant wird es, wenn Sie die Felder aus mehreren Datenquellen verknüpfen und über mehrere Visualisierungselemente unterschiedliche Aspekte darstellen. Hier kommt dann auch die Dynamik besser zur Geltung. Folgendes Beispiel soll das erläutern.
Stellen Sie sich vor, sie haben eine CSV-Datei die aus dem Exchange Message Tracking neben der SourceSite und TargetSite der Mail auch die Größe und die Stunde des Tages enthält. Sie können dann einmal eine Grafik aufbauen mit der Mailverteilung (Anzahl) nach Tageszeit und eine zweite Grafik nach der Größe erstellen. Eine dritte und vierte Spalte könnten dann die Sites (Quelle/Ziel) darstellen. Wenn Sie dann die Sites quasi per Checkbox filtern, ändert sich in Echtzeit die Anzeige in den anderen Feldern. Sie könnten aber auch z.B. den Balken "10-100 MB" in der Größenübersicht anwählen und sofort werden in den anderen Grafiken die Daten entsprechend gefiltert. Es sind schon interessante Aussagen, wenn z.B. nur 5% der Mails >10MB sind aber diese dann doch 40% des Gesamtvolumens enthalten.
Sie können dazu natürlich die "RAW-Daten" von Exchange oder auch ein IISLog o.ä. anzapfen und in PowerBi mit Formeln sich eigene errechnete Spalten ermitteln.
- Import CSV file to Power BI
https://powerbi.tips/2016/04/import-csv-file-to-power-bi/ - Import an Excel file into PowerBI
https://powerbi.tips/2016/03/import-an-excel-file-into-powerbi/ - Folder of Files Loaded to Power BI
Desktop
https://powerbi.tips/2016/04/folder-of-files-loaded-to-power-bi-desktop/
Dateisystem
Sie können mittels Power BI Desktop sogar ein Dateisystem analysieren.
Achtung: Sie Starten zuerst den Importieren zuerst einen "Ordnern" aber schließen den Assistenten nicht ohne eine Anpassung ab: Sie müssen nämlich die Spalte "Content" löschen, da PowerBI ansonsten alle Dateien auch noch einliest und sehr schnell einen "Out of Memory" liefert."
Danach können Sie aber auf den Namen, die Extension und alle drei Zeiten zugreifen. Ideal um z.B. die Altersverteilung von Dateien anzuzeigen oder die Anzahl der Dateien nach der Extension auszuwerten. Aus mir nicht erfindlichen Gründen importiert Power BI Desktop aber nicht die Größe der Datei.
Ich habe mir daher ein kleines Powershell-Script gebaut, um die Daten zu ermitteln. Siehe Crypto-Protect
Weitere Datenquellen
Mit jeder neuen Version von PowerBI lernt das Programm neue Funktionen. Insbesondere die Connectoren zu anderen Datenquellen nimmt stetig zu. Allerdings gibt es immer wieder Lücken, die aber durch einen eigenen Connector geschlossen werden können. Das ist aber nicht ganz einfach und habe ich selbst noch nicht genutzt.
- Power BI data sources - Power BI
https://learn.microsoft.com/en-us/power-bi/connect-data/power-bi-data-sources
Microsoft Graph
Insbesondere der Zugriff auf Microsoft Graph scheint auch im Mai 2025 noch nicht in PowerBI angekommen zu sein. PowerBI kann zwar Webseiten per HTTP abfragen aber das ist kein REST-API-Aufruf und schon gar nicht eine Graph API mit OAUTH-Anmeldung. Für einen Kunden hatten wir schon einmal überlegt, wie dies dennoch einfach möglich ist und haben drei Optionen aufgezeigt:
- Eigener Connector
Eine Option ist natürlich einen Data Connector in PowerBi, d.h. in PowerQuery als Code zu schreiben. Der Code würde "im Benutzerkontext" laufen, d.h. der Anwender benötigt die Rechte. - Export/Konvert
Wenn keine Echtzeit-Daten erforderlich sind, könnte z.B. ein zyklischer Prozess die Daten aus Graph in eine von PowerBI direkt nutzbare Datenbank übertragen. Dann könnten die Rechte, z.B. "Report.Read.All" an eine Application gewährt und die Daten vorverarbeitet werden - Proxy/Azure Function
Statt eines geplanten "Übertragen" könnte natürlich eine Azure Function oder andere Webseite als Middleware agieren. Sie rufen per PowerBi eine URL auf, z.B. mit einem Token als Authentifizierung und der Code besorgt dann die Daten und reicht sie durch - Python
Anstatt eines eigenen PowerBI-Connectors kann PowerBi auch Python-Code ausführen. Siehe nächstes Kapitel
Vielleicht kommt irgendwann auch ein nativer Graph-Connector. Aber ein Power Query Microsoft Graph Security connector wurde schon wieder abgekündigt.
- REST - Representational State Transfer
- Graph API
- Power Query Web connector - Power Query
https://learn.microsoft.com/en-us/power-query/connectors/web/web - List of all Power Query connectors -
Power Query
https://learn.microsoft.com/en-us/power-query/connectors/#g (Nichts unter Graph) - Power Query Microsoft Graph Security
connector - Power Query
https://learn.microsoft.com/en-us/power-query/connectors/microsoft-graph-security
Der ist aber schon depreciated - Using Microsoft Graph API through Power
BI — Part 1
https://medium.com/@manumariaraj92/using-microsoft-graph-api-through-power-bi-part-1-c11cc498daec - Using Microsoft Graph API through Power
BI — Part 2
https://medium.com/@manumariaraj92/using-microsoft-graph-api-through-power-bi-part-2-c9859402a15d
Copilot und Python
Das Schreiben eines Connectors mit PowerQuery finde ich nicht gerade einfach. Aber Python kann ich auch mal interaktiv ausführen und debuggen. PowerBi kann, wenn Sie Python auf dem Client mit installiert haben, aber auch Python-Code direkt ausführen. Ich habe dann mal schnell Copilot gefragt:
Prompt: Schreibe mir ein Python-Skript für den Einsatz in PowerBI Desktop, um eine Liste der Benutzer und Anmeldungen über graph.microsoft.com mit einer Application Permission abzufragen
Copilot hat mir folgenden Code geliefert:
import requests import json import pandas as pd # Definiere die notwendigen Variablen tenant_id = 'YOUR_TENANT_ID' client_id = 'YOUR_CLIENT_ID' client_secret = 'YOUR_CLIENT_SECRET' scope = 'https://graph.microsoft.com/.default' grant_type = 'client_credentials' # Hole das Zugriffstoken url = f'https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token' data = { 'grant_type': grant_type, 'client_id': client_id, 'client_secret': client_secret, 'scope': scope } response = requests.post(url, data=data) access_token = response.json().get('access_token') # Definiere die Header für den API-Aufruf headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json' } # Abfrage der Benutzerliste users_url = 'https://graph.microsoft.com/v1.0/users' users_response = requests.get(users_url, headers=headers) users_data = users_response.json() # Extrahiere relevante Informationen aus den Benutzerdaten users_list = [] for user in users_data['value']: user_info = { 'id': user['id'], 'displayName': user['displayName'], 'userPrincipalName': user['userPrincipalName'], 'mail': user.get('mail', '') } users_list.append(user_info) # Konvertiere die Liste der Benutzer in ein DataFrame users_df = pd.DataFrame(users_list) # Speichere das DataFrame in einer CSV-Datei users_df.to_csv('users_list.csv', index=False) print("Die Liste der Benutzer wurde in users_list.csv gespeichert")
Quellen wurden von Copilot nicht angegeben aber das Ergebnis war soweit schon ziemlich gut, Nur die Rückgabe in eine CSV-Datei passt nicht für PowerBI. Dazu muss ich aber nur am Ende das Print anpassen:
users_df = pd.DataFrame(users_list) # Speichere das DataFrame in einer CSV-Datei users_df.to_csv('users_list.csv', index=False) print("Die Liste der Benutzer wurde in users_list.csv gespeichert")
Neu
users_df = pd.DataFrame(users_list) # Speichere das DataFrame in einer CSV-Datei print users_df
Zusätzlich hat mir Copilot noch folgende Anleitungen mitgeliefert
Die Umsetzung ist aber nicht wirklich schwer.
- Run Python scripts in Power BI Desktop -
Power BI
https://learn.microsoft.com/en-us/power-bi/connect-data/desktop-python-scripts
Schmunzeln erlaubt
Dass PowerBI vielleicht noch keine Jahrzehnte auf dem Buckel hat, sieht man auch an den teilweise lustigen Übersetzungen. Den Button "Stirnrunzeln senden" habe ich bislang so noch nie gesehen:
Immerhin haben zumindest die Übersetzer Spaß bei ihrer Arbeit.
Weitere Links
- REST - Representational State Transfer
- Graph API
- Power BI data sources - Power BI
https://learn.microsoft.com/en-us/power-bi/connect-data/power-bi-data-sources - Power Query Web connector - Power Query
https://learn.microsoft.com/en-us/power-query/connectors/web/web - List of all Power Query connectors -
Power Query
https://learn.microsoft.com/en-us/power-query/connectors/#g (Nichts unter Graph) - Power Query Microsoft Graph Security
connector - Power Query
https://learn.microsoft.com/en-us/power-query/connectors/microsoft-graph-security
Der ist aber schon depreciated - Using Microsoft Graph API through Power
BI — Part 1
https://medium.com/@manumariaraj92/using-microsoft-graph-api-through-power-bi-part-1-c11cc498daec - Using Microsoft Graph API through Power
BI — Part 2
https://medium.com/@manumariaraj92/using-microsoft-graph-api-through-power-bi-part-2-c9859402a15d - Welche Neuheiten enthält das aktuellste
Update für Power BI Desktop?
https://powerbi.microsoft.com/de-de/documentation/powerbi-desktop-latest-update/