Kontakt

Nutzen Sie dieses Kontaktformular oder schreiben Sie mir direkt per E-Mail.

Q&A – Fragen und Antworten rund im Power BI

Stellen Sie mir hier Ihre Fragen zu Power BI. Senden Sie mir Ihre Frage einfach per E-Mail an frage@jantrummel.de.

Ich werde alle Fragen selbstverständlich anonymisiert veröffentlichen, sodass keine Rückschlüsse auf Sie, Ihr Unternehmen oder Ihre Daten gezogen werden können.

Diesen Service ist für Sie kostenfrei!

Fragen aus dem Januar 2021

Formel aus dem Seminar

Frage vom 21.01.2021

Diese Frage bezieht sich auf eine Übungsaufgabe aus meinem Power BI-Seminar. Die Aufgabe lautete:

Schreiben Sie ein Measure, das den Umsatz mit den Büchern zeigt, wobei nur solche Bücher beachtet werden sollen, von denen mindestens 30 Stück verkauft wurden.

Hier ist die Lösung:

Umsatz Bücher ab 30 Stück = 
CALCULATE(
    [Umsatz],
    FILTER('Bücher',[Anzahl verkaufte Bücher] >= 30)
)

In einer Matrix-Visualisierung sollten Sie dieses Measure dann für jede Literaturepoche ausgeben, sodass sich folgendes Bild hätte ergeben sollen:

Matrix, die den Umsatz je Literaturepoche für Bücher zeigt, die mehr als 30 mal verkauft wurden.
Lösung der Aufgabe

Ein Teilnehmer hatte jedoch eine andere Formel geschrieben. Diese sehen Sie hier:

Teilnehmerlösung = 
CALCULATE(
    [Umsatz],
    FILTER(Bestellungen,COUNT(Bestellungen[Buch-Nr])>=30)
)

Die Matrix zeigte dann auch ein anderes Bild:

Matrix in Power BI, die einen Umsatz je Literaturepoche zeigt. Die Umsatzspalte heißt "Teilnehmerlösung".
Die Matrix mit dem Measure Teilnehmerlösung.

Was genau tut das Measure Teilnehmerlösung und warum liefert es ein anderes Ergebnis? Lesen Sie im Folgenden die Antwort!

Antwort

Zuerst beschreibe ich Ihnen, warum das Measure Umsatz Bücher ab 30 Stück die richtige Antwort liefert. Betrachten Sie als Beispiel die Zeile Biedermeier, für die das Measure einen Umsatz von 418 € liefert.

Die Funktion CALCULATE berechnet das Measure Umsatz unter Berücksichtigung einer Filterbedingung neu. Diese Filterbedingung wird hier mit der Funktion FILTER realisiert. FILTER liefert eine virtuelle Tabelle, die eben jene Zeilen enthält, für die der Umsatz neu kalkuliert werden soll.

Betrachten Sie nun die Funktion FILTER genauer: Die Funktion bezieht sich auf eine der Grundtabellen des Datenmodells. Dies ist hier die Tabelle Bücher. Der Ausdruck [Anzahl verkaufte Bücher] >= 30 ist wiederum eine Filterbedingung, die in der Tabelle bestimmte Zeilen ermittelt. Dies sind die Bücher, die mindestens 30 Mal verkauft worden sind.

Nun müssen Sie auch noch den Filterkontext berücksichtigen, der von der Matrix-Visualisierung erzeugt wird! Für unsere Beispielzeile mit der Epoche Biedermeier bedeutet dies, dass die Grundtabelle Bücher, die in FILTER benutzt wird, bereits auf alle Bücher aus dem Biedermeier gefiltert ist. Was FILTER sieht ist im Prinzip Folgendes:

Matrix in Power BI, die Bücher aus der Biedermeier-Epoche zeigt.
Die interne Sicht von FILTER auf die Grundtabelle Bücher.

Die Anweisung [Anzahl verkaufte Bücher] >= 30 von FILTER selbst reduziert diese Tabelle dann weiter auf die Zeile mit dem Titel Das Hospiz auf dem Großen St. Bernhard, da nur dieses Buch die Filterbedingung erfüllt.

Und somit zeigt die erste Matrix aus der Frage oben für den Biedermeier auch nur einen Umsatz von 418 €.

Nun beschreibe ich Ihnen, warum das Measure Teilnehmerlösung andere Daten liefert:

Die Funktion FILTER greift hier auf die Tabelle Bestellungen. Bedingt durch den Filterkontext der Matrix sieht FILTER nur die Zeilen der Grundtabelle, in denen Bücher aus der jeweiligen Epoche verkauft worden sind. Nehmen wir als Beispiel wieder den Biedermeier, dann sieht FILTER diese Daten:

Matrix in Power BI mit Bestellungen von Büchern aus dem Biedermeier.
Die interne Sicht von FILTER auf die Tabelle Bestellungen.

Die Filterbedingung COUNT(Bestellungen[Buch-Nr])>=30 besagt nun, dass diese Zeilen von FILTER zurückgegeben werden, wenn die Anzahl der Buch-Nummern größer oder gleich 30 ist. Dies ist hier der Fall (s. Bild)! Der Umsatz aller Bestellungen mit Biedermeier-Büchern beläuft sich auf 874 €. Und das ist auch der Wert, der in der zweiten Matrix aus der Frage in der Zeile Biedermeier steht!

Beachten Sie, dass es in der Teilnehmerlösung keinen Bezug auf ein bestimmtes Buch gibt! Es geht immer um die gesamten Bestellungen der jeweiligen Literaturepoche!

Nun bleibt abschließend nur noch zu klären, warum das Gesamtergebnis der zweiten Matrix aus der Frage 5.230 € zeigt, wobei Sie bei der Addition der einzelnen Werte 1.028 + 360 + 874+ 965 + 913 + 492 doch auf 4.632 € kommen! Macht Power BI hier einen Fehler? Mitnichten!

Für Measures in Power BI gilt, dass Sie in jeder Zeile einer Visualisierung exklusiv und unabhängig von anderen Zeilen berechnet werden. Dies ist ein entscheidender Unterschied zu Berechnung von Kennzahlen in klassischen Pivot-Tabellen in Excel! Für die Zeile Gesamt gilt nun, dass FILTER auf alle Zeilen der Tabelle Bestellungen blickt. Eigentlich auch logisch, da es in der Gesamt-Zeile ja keine Einschränkung mehr auf eine Literaturepoche gibt. Und da die Anzahl der Buch-Nummern in der ungefilterten Tabelle Bestellungen natürlich größer als 30 ist, wird eben auch der Gesamtumsatz zurückgegeben.

Datenschnitt - Datumsbereich nur bis heute

Frage vom 21.01.2021

Bei dieser Frage geht es um einen Datenschnitt in Power BI, über den ein Datumsbereich gewählt werden kann. Nehmen Sie als Beispiel diesen Datenschnitt:

Datenschnitt in Power BI, der einen Schieberegler zeigt, über den ein Datumsbereich eingestellt werden kann.
Datenschnitt zur Auswahl eines Datumsbereichs

Die Frage war, ob es möglich ist, das angezeigte Enddatum (im Bild der 31.12.2025) immer dynamisch auf das aktuelle Datum zu setzen.

Antwort

Um diese Frage zu beantworten, habe ich in der Kalendertabelle mit folgender Formel eine neue berechnete Spalte angelegt:

Datumsauswahl = 
IF(
    Datumstabelle[Datum] <= TODAY(), 
    Datumstabelle[Datum],
    BLANK()
)

Die Formel prüft für jede Zeile der Kalendertabelle, ob das Datum vor dem heutigen Datum liegt bzw. ob es dem heutigen Datum entspricht. Die Funktion TODAY liefert dafür das aktuelle Systemdatum. Mit BLANK fügen Sie ein Leerzeichen ein, wenn das Datum noch in der Zukunft liegt.

Eine Tabelle in Power BI, die in der Spalte "Datumsauswahl" nur Einträge beinhaltet, wenn das Datum vor dem aktuellen Systemdatum liegt
Die Formel liefert nur Datumsangaben, die nicht hinter dem aktuellen Systemdatum liegen

Wenn Sie nun die Spalte Datumsauswahl in den Datenschnitt einfügen, reicht der auswählbare Datumsbereich nur bis zum aktuellen Systemdatum.

Ein Datenschnitt in Power BI, der nur Datumsangaben bis zum aktuellen Systemdatum zeigt (hier: 24.01.2021).
Der Datumsbereich im Datenschnitt endet jetzt beim aktuellen Systemdatum

Arbeitstage (inkl. Feiertage) berechnen

Frage vom 21.01.2021

Wie können in einem Projekt die Arbeitstage berechnet werden? Wie können sowohl Wochenendtage als auch Feiertage aus der Zählung ausgeschlossen werden?

Antwort

Lesen Sie dazu meinen Beitrag in der Rubrik Wissenswertes. Ich habe ihn um die Berechnung von Feiertagen erweitert:


Fragen aus dem Dezember 2020

Power BI und Teams - keine Lizenz

Frage vom 18.12.2020

Können Anwender in Teams freigegebene Power BI-Berichte lesen, wenn sie keine Power BI Pro-Lizenz besitzen?

Antwort

Nein, das ist nicht möglich. Benutzer, die weder die Power BI Pro-Lizenz besitzen, noch Mitglied einer Power BI Premium-Kapazität sind, können in Teams freigegebene Bericht zwar anklicken. Der Inhalt wird jedoch nicht geladen.

Mehr dazu lesen Sie in diesem Microsoft-Artikel:

https://docs.microsoft.com/de-de/power-bi/collaborate-share/service-collaborate-microsoft-teams

Bericht mit dynamischer Berechtigung freigeben

Frage vom 18.12.2020

Wir wollen unseren Power BI-Bericht freigeben, allerdings soll jeder Nutzer nur eine Projekte sehen können. Geht das?

Antwort

Ja, das geht. Ich habe einen Beitrag dazu geschrieben:

Monatsnamen in Datumstabelle einfügen

Frage vom 08.12.2020

Ich benutze eine Kalendertabelle als markierte Datumstabelle, um Berechnungsfehler auszuschließen (empfohlen von Marco Russo und Alberto Ferrari in Ihrem Buch Power BI…).

Dabei ist mir aber aufgefallen das der Drilldown in Diagrammen nicht so gut funktioniert wie in einer automatischen Datumshierarchie.

Außerdem möchte ich gerne 2 Jahre im Diagramm einsehen. Die Daten sollen natürlich nach Datum sortiert sein. Angezeigt werden soll aber nur das Jahr und der Monat als Name nicht als Zahl.

Also:

2019 Januar, Februar, ...

2020 Januar, Februar, ...

Wenn ich das über die Funktion gruppieren löse, ist das Datum etwas unscharf da die Daten monatlich auf 30 Tage verteilt werden (kaufm. Jahr).

Haben Sie einen Tipp das zu lösen?

Antwort

Erzeugen Sie in Ihrer Datumstabelle mit der Funktion FORMAT eine Spalte mit Monatsnamen.

Wechseln Sie in Power BI Desktop in den Bereich Daten und wählen Sie die Datumstabelle aus. Klicken Sie dann auf der Registerkarte Start auf Neue Spalte.

Menüband von Power BI Desktop. Die Registerkarte "Start" und der Befehl "Neue Spalte" sind rot umkreist.
Fügen Sie eine neue Spalte ein.

Geben Sie folgende Formel ein:

Monatsname = FORMAT(Datumstabelle[Date],"MMMM")

Des Weiteren gehe ich davon aus, dass Sie in Ihrer Datumstabelle eine Spalte mit Monatsnummern (Zahlen) haben (berechnet z.B. mit der Funktion MONTH).

Damit die Monatsnamen nicht alphabetisch sortiert werden, binden Sie die Sortierung der Monatsnamen an die Monatsnummern.

Wählen Sie Spalte Monatsname an und klicken Sie auf der Registerkarte Spaltentools auf die Schaltfläche Nach Spalte sortieren. Wählen Sie in der Liste die Spalte Monatsnummer.

Befehl "Nach Spalte sortieren" in Power BI Desktop. In der Liste ist "Monatsnummer" gewählt.
Binden Sie die Sortierung der Monatsnamen an die Monatsnummern.

Nun können Sie die Monatsnamen in Ihren Visualisierungen verwenden.

DAX-Measure für eine m:n-Beziehung

Frage vom 03.12.2020

Ich möchte gern aus 2 Tabellen ein DAX-Measure erstellen, bei dem es um folgendes geht:

Tabelle 1: Fertigungen mit Spalte Lieferdatum

Tabelle 2: Reklamationen mit Spalte Auftragsdatum

Beide Tabellen sind über die Spalte FANummer miteinander verknüpft (m:n-Beziehung).

Nun möchte ich eine Quote ermitteln:

Wie viele Reklamationen sind innerhalb von 15 Monaten nach Lieferdatum für eine FANummer eingegangen.

Hier sind die beiden Tabellen (Demodaten):

Tabelle Fertigungen

FANummerLieferdatum
101.01.2020
101.01.2020
202.01.2020
202.01.2020
202.01.2020
330.06.2020
407.09.2020
407.09.2020

Tabelle Reklamationen

FANummerAuftragsdatumBezeichnung
131.12.2020A
109.05.2021B
127.03.2020C
207.08.2021D
314.05.2021E
301.01.2021F
406.12.2021G
403.03.2022H
404.09.2023I
406.07.2029J

In diesem Beispiel wären das die Reklamationen A, C, E, F und G.

Ich brauche ein Measure, dass die Anzahl der von der Bedingung betroffenen Reklamationen ermittelt, hier also 5. 

Antwort

Folgendes Measure löst die Aufgabe:

Reklas M15 = 
SUMX( 
    SUMMARIZE( 
        'Fertigungen',
        Fertigungen[FANummer],
        "Anzahl Reklas M15",
        COUNTROWS(
            FILTER(
                RELATEDTABLE(Reklamationen),
                Reklamationen[Auftragsdatum] >= MAX('Fertigungen'[Lieferdatum]) && 
                Reklamationen[Auftragsdatum] <= MAXX(Fertigungen,EDATE(Fertigungen[Lieferdatum],15))
            )
        )
    ),
    [Anzahl Reklas M15]
)

Gehen wir die einzelnen Funktionen einmal von außen nach innen durch:

Mit SUMX addiere ich Zahlen in einer Tabellenspalte.

Die Tabelle erzeuge ich hier mit Hilfe der Funktion SUMMARIZE (es handelt sich um eine sogenannte virtuelle Tabelle). Sie gruppiert die Datensätze der Tabelle Fertigungen nach FANummern und berechnet die Ergebnisspalte „Anzahl Reklas M15“, indem sie die Anzahl der verbundenen Reklamationen berechnet, bei denen das Auftragsdatum zwischen dem Lieferdatum und dem Lieferdatum in 15 Monaten liegt.

Diese Berechnung ist nicht ganz simpel, ich versuche es aber mal in einfachen Worten zu erklären:

Der Trick ist, dass ich mir zu jeder Fertigung (also zu jeder Zeile in der von SUMMARIZE gelieferten Tabelle) die mit ihr verbundenen Reklamationen ermitteln lasse. Das erreiche ich mit der Funktion RELATEDTABLE. Die von der Funktion gelieferten Datensätze muss ich jedoch weiter filtern, weshalb ich RELATEDTABLE als zu filternde Tabelle in der Funktion FILTER nutze.

Als Filterbedingung gebe ich nun an, dass das jeweilige Auftragsdatum der Reklamation größer oder gleich dem Lieferdatum und kleiner oder gleich dem Lieferdatum in 15 Monaten sein muss. Achtung: Da wir uns jetzt in der Tabelle Reklamationen bewegen, kann ich nicht mehr direkt auf das Lieferdatum zugreifen. Ich kann es aber mit Hilfe der Funktion MAX ermitteln, die auf Grund des Filterkontextes, den SUMMARIZE erzeugt, das Lieferdatum der in der äußeren Funktion betrachteten Fertigung liefert. Ja, das ist wirklich etwas knifflig...

Das Lieferdatum in 15 Monaten erzeuge ich, indem ich mit der Funktion EDATE das Lieferdatum um 15 Monate in die Zukunft verschiebe. Auch hier kann ich nicht direkt auf das Liederdatum zugreifen, daher nutze ich die Funktion MAXX – MAXX, weil ich hier eine Berechnung eingeben kann (nämlich EDATE).

Die Funktion COUNTROWS zählt die Zeilen der von FILTER zurückgegebenen Tabelle. Damit erhalte ich die Anzahl der Reklamationen, die der jeweiligen Fertigung zugeordnet sind und im 15-Monats-Rahmen des Lieferdatums liegen. Die Zahl steht in der der Ergebnisspalte "Anzahl Reklas M15".

Zum Schluss addiert SUMX alle Zahlen aus der Ergebnisspalte "Anzahl Reklas M15" auf und bildet damit das Gesamtergebnis.

Schauen wir uns die Ergebnisse an:

In einer Tabellen-Visualisierung gebe ich die Spalten FANummer (aus Fertigung), Lieferdatum und das Measure aus:

Tabelle "Fertigungen" mit 3 Zeilen
Die Fertigungen mit dem Measure Reklas M15

In einer weiteren Tabellen-Visualisierung gebe ich zur Kontrolle die FANummer (diesmal aus Reklamationen), das Auftragsdatum, die Bezeichnung sowie das Measure aus:

Tabelle "Reklamationen" mit 5 Zeilen
Die Tabelle "Reklamationen" mit dem Measure "Reklas M15"

Meiner Ansicht nach sollte das Ergebnis korrekt sein.

Trotzdem gilt: Bitte testen Sie das Measure ausgiebig, bevor Sie den Ergebnissen wirklich vertrauen! Bekanntlich steckt der Teufel im Detail!


Fragen aus dem November 2020

Anzahl Arbeitstage in einem Projekt berechnen

Frage vom 09.11.2020

Wie kann man die Arbeitstage in einem Projekt oder einem Auftrag bestimmen?

Antwort

Dazu habe ich den Beitrag in meiner Rubrik Wissenswertes geschrieben. Sie finden die Antwort hier:


Fragen aus dem Oktober 2020

Externe Gastbenutzer in Power BI

Frage vom 27.10.2020

Kann man Power BI-Berichte auch an externe Gastbenutzer weitergeben?

Antwort

Ja das geht. Das Gastbenutzer benötigt dafür eine Power BI Pro-Lizenz. Sie können ihm diese Lizenz zur Verfügung stellen, falls der Gastbenutzer selbst keine Lizenz besitzt.

Wie Sie Gastbenutzer anlegen und diesem Lizenzen zuweisen, erklärt dieser Artikel: https://docs.microsoft.com/de-de/power-bi/admin/service-admin-azure-ad-b2b

Alle DAX-Funktionen erklärt

Frage vom 27.10.2020

Wo finde ich eine Übersicht über die DAX-Funktionen in Power BI?

Antwort

Eine sehr gute Übersicht über die DAX-Funktionen finden Sie hier:

https://docs.microsoft.com/de-de/dax/dax-function-reference

GANTT-Diagramme in Power BI

Frage vom 27.10.2020

Kann man in Power BI ein GANTT-Diagramm (Balkenplan-Diagramm) erstellen, um Projekte / Aufgaben in zeitlicher Abfolge in Form von Balken auf einer Zeitachse darzustellen?

Antwort

Ja, das geht. Gehen Sie folgendermaßen vor:

Roter Pfeil markiert die Option "Visual aus einer Datei importieren" in Power BI Desktop
  • Lernen Sie die Visualisierung kennen, indem Sie in Excel eine einfache Demo-Tabelle anlegen, die Sie in Power BI Desktop importieren:
Excel-Tabelle mit den Spalten Aufgabe, Startdatum und Ende sowie 4 Zeilen.
  • Fügen Sie in Power BI Desktop die neue Gantt-Visualisierungen in einen Bericht und ziehen Sie die Felder Aufgabe, Startdatum und Enddatum in die gleichnamigen Bereiche in der Felder-Leiste.

Hier ist Ihr Gantt-Diagramm in Power BI!

Ein Gantt-Diagramm in Power BI mit 4 Balken auf einer Zeitachse.

Erfahrungen mit Power BI

Frage vom 27.10.2020

Auf welche Weise findet Power BI erfahrungsgemäß in Unternehmen seine Anwendung?


Es ist ja als Selbsthilfe-Tool für jeden gestrickt, trotzdem halte ich es auch nicht für unwahrscheinlich, dass am Ende sehr wenige Personen für sehr viele Personen Dashboards basteln.


Welche Erfahrungen haben Sie denn schon gemacht bzw. gibt es da eine Tendenz die sich abzeichnet?

Antwort


Im Prinzip soll es genau so sein, wie Sie vermuten: Einige Berichtsdesigner erzeugen mit Power BI Desktop Berichte, welche sie über den Power BI-Dienst einer größeren Zahl an Nutzern zur Verfügung stellen.

Das Konzept soll gerade nicht sein, dass jeder mit Power BI Desktop seine eigenen Berichtsdateien baut, denn dann erzeugt jeder seine eigenen kleinen Wissensinseln und es findet kein Austausch von Erkenntnissen statt.

Wie dies in den Unternehmen umgesetzt wird, hängt natürlich sehr stark davon ab, ob diese den Power BI-Dienst verwenden und ob die Vorteile der Anwendung richtig kommuniziert werden.

Meiner Erfahrung nach tun sich viele Unternehmen mit dem Dienst sehr schwer, da sie ihre Daten nicht in der Microsoft-Cloud speichern wollen. Der Preis spielt dabei eine eher untergeordnete Rolle. Es geht vielmehr um Fragen der Datensicherheit.

Gerade durch die Corona-Krise haben Unternehmen jedoch den Nutzen und die Notwendigkeit von Cloud-Lösungen erkannt. Dagegen steht, dass Datenschützer jüngst wieder massiv Microsoft für seine Datenschutzbedingungen kritisieren.
https://www.heise.de/news/Datenschutzbehoerden-erklaeren-den-Einsatz-von-Microsoft-365-fuer-rechtswidrig-4931745.html

Es bleibt abzuwarten, wie sich die Lage hier entwickelt und ob Microsoft mehr auf die Wünsche der europäischen Kunden in Punkto Datenschutz eingehen wird.