Was Power BI ist
Power BI Desktop ist ein Programm für Windows, das Daten lädt, zu einem Modell verbindet und daraus interaktive Berichte baut. Es besteht aus drei Teilen, die man auseinanderhalten sollte: Power Query holt und formt die Daten, das Modell hält Tabellen, Beziehungen und Measures, der Bericht zeigt Visuals auf Seiten. Desktop ist kostenfrei; wer einen Bericht im Power-BI-Dienst veröffentlichen will, braucht ein Konto der Organisation.
| Teil | Was er tut | Im Projekt |
|---|---|---|
| Power Query | Verbindung, Spalten formen, Typen setzen | neun Tabellen aus hotel_bi; is_canceled und is_repeated_guest von true/false zu 1/0 gewandelt |
| Modell | Beziehungen, Measures, Sortierung | neun Beziehungen, 13 Measures in DAX |
| Bericht | Seiten, Visuals, Filter (Slicer) | vier Seiten: Management-Übersicht, Saisonalität und Herkunft, Vertrieb und Kundensegmente, Stornoanalyse |
Hinweis. Bei den in dieser Lernumgebung gezeigten Tools handelt es sich um eine Auswahl – diese ist weder als Empfehlung noch als Werbung zu verstehen. Power BI steht hier, weil Desktop kostenfrei ist und das Sternschema ohne Umwege anbindet. Alternativen auf derselben Ebene: Tableau (Lizenz, für Studierende über das Academic-Programm), Apache Superset und Metabase (Open Source). Angaben zu Lizenzen Stand 09/2026.
Die Datenbank anbinden
Dieselben sechs Angaben wie in Lab 05, verteilt auf drei Dialoge. Eine Entscheidung kommt dazu: Import oder DirectQuery. Import kopiert alle Zeilen in die PBIX-Datei – schnell, unabhängig von der Datenbank, aber ein Abbild vom Ladezeitpunkt. DirectQuery lässt jede Interaktion als SQL an die Datenbank gehen – immer aktuell, aber langsamer und mit Einschränkungen in DAX. Das Projekt nimmt Import: 119.390 Zeilen sind klein, und die Daten ändern sich nicht.
Nachbildung der Oberfläche, Stand 09/2026 – Beschriftungen wie im Original (deutsche Oberfläche).
- 1Server und Port in einem Feld, mit Doppelpunkt. Ohne
:5433versucht Power BI den Standardport und scheitert. - 2Import. Die Daten werden beim Laden kopiert; Aktualisieren holt sie neu.
- 3Links Datenbank wählen, nicht Windows. Das Häkchen Verbindung verschlüsseln abwählen – die Instanz hat kein Zertifikat.
- 4Beim ersten Verbinden fragt Power BI, ob es unverschlüsselt verbinden soll. Für diese öffentliche Leserolle: OK (Lab 05, Abschnitt Sicherheit).
Im Navigator dann das Schema hotel_bi aufklappen, alle neun Tabellen ankreuzen, Laden.
Power Query lädt die Tabellen und übernimmt die Spaltentypen aus PostgreSQL; die beiden Wahrheitswerte werden im
Projekt zusätzlich in 0/1 gewandelt, damit sich ihr Mittelwert bilden lässt.
Das Modell: neun Beziehungen
Nach dem Laden zeigt die Modellansicht das Sternschema aus Lab 04 als Bild: FACT_BOOKINGS
in der Mitte, die Dimensionen außen, jede Beziehung als Linie mit 1 auf der Dimensions- und * auf der
Faktenseite. Power BI hat die Beziehungen aus den Fremdschlüsseln erkannt; prüfen muss man sie trotzdem –
vor allem die zwei zu DIM_DATE.
| Beziehung | Kardinalität | Status | Wozu |
|---|---|---|---|
| FACT_BOOKINGS[hotel_id] → DIM_HOTEL[hotel_id] | * : 1 | aktiv | Filter und Gruppierung nach Hotel |
| FACT_BOOKINGS[arrival_date_key] → DIM_DATE[date_key] | * : 1 | aktiv | alle Kennzahlen nach Anreisemonat |
| FACT_BOOKINGS[reservation_status_date_key] → DIM_DATE[date_key] | * : 1 | inaktiv (gestrichelt) | gebuchter Umsatz nach Stornodatum, per USERELATIONSHIP |
| sechs weitere → DIM_MARKET_SEGMENT, DIM_DISTRIBUTION_CHANNEL, DIM_CUSTOMER_TYPE, DIM_MEAL, DIM_DEPOSIT_TYPE, DIM_COUNTRY | * : 1 | aktiv | Filter und Gruppierung |
Warum eine Beziehung inaktiv sein muss
Zwischen zwei Tabellen darf in Power BI nur ein Pfad aktiv sein – sonst wüsste ein Visual nicht, ob „August 2016“ die Anreise oder das Stornodatum meint. Die zweite Beziehung bleibt deshalb inaktiv und wird nur in dem einen Measure eingeschaltet, das sie braucht. Das ist die Role-Playing Dimension aus Lab 04, in der Sprache von Power BI.
Measures in DAX
Ein Measure ist eine Kennzahl, die Power BI im Kontext des Visuals berechnet: dasselbe Measure
liefert im Kachel-Visual den Gesamtwert, im Säulendiagramm den Wert je Monat, in der Matrix den Wert je Segment
und Kundentyp. Geschrieben wird es in DAX. Die 13 Measures des Projekts liegen in der Tabelle
FACT_BOOKINGS; sechs davon stehen unten mit ihrem SQL-Gegenstück aus Lab 06.
| Measure | DAX | In SQL (Lab 06) |
|---|---|---|
| Anzahl Buchungen | COUNTROWS(FACT_BOOKINGS) | count(*) |
| Gebuchter Umsatz | SUM(FACT_BOOKINGS[revenue]) | sum(revenue) |
| Umsatz | CALCULATE(SUM(FACT_BOOKINGS[revenue]), FACT_BOOKINGS[is_canceled] = 0) | sum(revenue) FILTER (WHERE NOT is_canceled) |
| Stornoquote % | DIVIDE(CALCULATE(COUNTROWS(FACT_BOOKINGS), FACT_BOOKINGS[is_canceled] = 1), COUNTROWS(FACT_BOOKINGS)) | avg(is_canceled::int) |
| Ø ADR | AVERAGE(FACT_BOOKINGS[adr]) | avg(adr) |
| Ø gebuchter Umsatz je Buchung | DIVIDE([Gebuchter Umsatz], [Anzahl Buchungen]) | sum(revenue) / count(*) |
DIVIDE statt /: Bei einem Nenner von null liefert DIVIDE ein leeres Ergebnis statt
eines Fehlers – etwa in einem Monat ohne Buchungen im gewählten Filter. Und Measures dürfen andere Measures
verwenden: [Gebuchter Umsatz] in eckigen Klammern ist ein Verweis, keine Kopie der Formel.
Der Bericht: Felder und Regale
Ein Visual entsteht, indem man Felder aus dem Datenbereich auf die Regale des Visuals zieht: bei einem Säulendiagramm X-Achse, Y-Achse und Legende. Eine Dimension auf der X-Achse und ein Measure auf der Y-Achse ergeben Säulen; eine geordnete Dimension wie der Monat ergibt eine Linie; zwei Dimensionen und ein Measure eine Matrix. Was auf welchem Regal liegt, ist das ganze Handwerk.
▁▂▃▅▆▇▆▅▃▂▁▂▃▅▆█▇▆▅▃
Visualisierungen
Daten
- ▾ FACT_BOOKINGS
- Σ adr 4
- Σ booking_id
- ▦ Anzahl Buchungen
- ▦ Umsatz
- ▦ Stornoquote %
- ▸ DIM_DATE
- ▸ DIM_HOTEL
Nachbildung der Oberfläche, Stand 09/2026 – Beschriftungen wie im Original.
- 1Das Visual trägt einen Titel, der sagt, was gezeigt wird – Kennzahl, Einheit, Zeitbezug.
- 2Zwei Slicer (Hotel, Anreisejahr) filtern alle Visuals der Seite – Kreuzfilterung über die Beziehungen des Modells.
- 3Auf der Y-Achse liegt ein Measure (Symbol ▦), keine Spalte. Measures rechnen im Kontext; Spalten werden nur summiert.
- 4Das Σ vor
adrundbooking_idheißt: Power BI würde diese Spalten summieren. Σ vonbooking_idist die klassische Falle – die Summe von Kennnummern.
| Seite | Visuals | Frage aus Lab 00 |
|---|---|---|
| Management-Übersicht | vier Kacheln, Buchungen und gebuchter Umsatz je Anreisemonat als Linien, zwei Slicer | alle vier, auf einen Blick |
| Saisonalität und Herkunftsländer | Buchungen nach Anreisemonat und Jahr, Top-10-Länder als Balken, Treemap der Länderanteile, Ländertabelle | Saisonalität, Herkunft |
| Vertrieb und Kundensegmente | Umsatz nach Kanal, Buchungen nach Segment, Segment × Kundentyp, drei Kacheln | Vertrieb |
| Stornoanalyse | Stornoquote nach Hotel, Kautionstyp, Marktsegment und Vorlaufzeit; gebuchter Umsatz nach Anreise- und nach Stornodatum | Stornorisiko |
Stolpersteine
Zieht man eine Zahlenspalte auf ein Regal, summiert Power BI sie. „Summe von booking_id“ ist eine
sinnlose Zahl mit elf Stellen. Zählen heißt: Measure Anzahl Buchungen verwenden oder die
Aggregation der Spalte auf Anzahl stellen.
Der Monatsname sortiert sich als Text: April, August, Dezember. Abhilfe: Nach Spalte sortieren –
month_name nach month. Die Datumsdimension hat die Zahl genau dafür.
Ein Visual nach Stornodatum zeigt dieselben Werte wie nach Anreisedatum? Dann läuft es über die aktive
Beziehung. Nur das Measure mit USERELATIONSHIP nutzt die zweite.
Bleibt das Häkchen gesetzt, meldet Power BI, dass der Server SSL nicht unterstützt. Abwählen und die Rückfrage bestätigen – für diese Leserolle vertretbar, für eigene Daten nicht.
Eine berechnete Spalte rechnet je Zeile und speichert das Ergebnis; ein Measure rechnet im Kontext des Visuals. Eine Quote als Spalte (0 oder 1 je Buchung) kann man nicht mitteln, ohne dass Power BI sie summiert. Quoten sind Measures.
Veröffentlichen lädt den Bericht in den Power-BI-Dienst und braucht ein Konto der Organisation.
Die Datei Hotel.pbix lässt sich ohne Konto öffnen und ansehen – sie enthält die importierten
Daten.
Spielplatz
Ein nachgebildetes Feldfenster mit den Feldern des Projekts und einer Stichprobe von 5.000 Buchungen. Legen Sie Felder auf X-Achse, Y-Achse und Legende; das Diagramm folgt aus der Belegung wie in Power BI. Die Stichprobe liefert andere absolute Zahlen als das Dashboard, aber dieselben Muster – und die Σ-Falle ist eingebaut.
Übungen
Fünf Übungen: zwei am Feldfenster, eine Zuordnung von Measures zu DAX, die Reihenfolge der Anbindung und Verständnisfragen zu Import, Beziehungen und Measures.
Zusammenfassung
- Drei Teile: Power Query holt, das Modell verbindet und rechnet, der Bericht zeigt.
- Anbinden mit sechs Angaben, Server und Port in einem Feld, Import statt DirectQuery, Verschlüsselung abwählen.
- Neun Beziehungen; die zweite zu DIM_DATE ist inaktiv und wird per USERELATIONSHIP eingeschaltet.
- Measures rechnen im Kontext des Visuals; CALCULATE mit Filter ist das DAX-Gegenstück zu FILTER (WHERE) in SQL.
- Dimension auf die X-Achse, Measure auf die Y-Achse – geordnete Dimensionen werden Linien, zwei Dimensionen eine Matrix.
- Σ von einer Kennnummer ist die Falle; Monatsnamen brauchen eine Sortierspalte; Quoten sind Measures, keine Spalten.