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

Erster Schritte in Power BI Desktop

Die Schritte mit PowerBI sind immer die Gleichen:

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

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.

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.

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.

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