Johannes MerkelData & BI für Unternehmenssteuerung
← Alle ArtikelPower BI im Controlling

Flow vs. Stock: Der Klassifikationsfehler, der Ihr Reporting still verfälscht

3 Min. Lesezeit

In einem Reporting-Projekt fällt ein falsch klassifizierter Kennzahlentyp selten sofort auf. Die Zahlen sehen plausibel aus, die Summen stimmen scheinbar. Bis jemand im Controlling nachrechnet und die Jahressumme der belegten Fläche das Dreifache des tatsächlichen Bestands ergibt. Dann beginnt die Suche. Dabei lässt sich der ganze Fehler mit einer Frage vermeiden, die vor dem ersten Measure beantwortet gehört.

Die Ausgangslage

In einem Monatsreporting für einen Immobilien-Bestandshalter standen zwei Arten von Kennzahlen nebeneinander im selben Dashboard:

  • Neuvermietungen pro Monat. Wie viele Verträge bzw. wie viel Fläche in einer Periode neu abgeschlossen wurden.
  • Belegte Fläche zum Stichtag. Wie viel Fläche zu einem Zeitpunkt insgesamt vermietet ist.

Beide wurden mit derselben Time-Intelligence-Logik behandelt: ein TOTALYTD über die Periode, um „das Jahr bis heute" zu zeigen. Für die Neuvermietungen ist das korrekt. Für die belegte Fläche ist es ein stiller Rechenfehler.

Das Problem: zwei grundverschiedene Metriktypen

Der Unterschied hat einen Namen, der aus der Betriebswirtschaft stammt: Flow (Stromgröße) gegen Stock (Bestandsgröße).

  • Eine Flow-Kennzahl ist über die Zeit additiv. Umsatz, Kosten, neue Verträge pro Monat. Die Summe über zwölf Monate ist eine sinnvolle Jahreszahl.
  • Eine Stock-Kennzahl ist ein Bestand zu einem Zeitpunkt. Belegte Fläche, Leerstand, Mitarbeiterzahl. Die „Summe über zwölf Monate" ist bedeutungslos: Wer im Januar 10.000 m² und im Februar weiterhin 10.000 m² belegt hat, besitzt nicht 20.000 m².

Genau das passiert aber, wenn man TOTALYTD auf eine Bestandsgröße anwendet: Die Engine akkumuliert die Monatswerte und zählt denselben Bestand zwölf Mal. Das Ergebnis ist nicht „falsch um einen Faktor, den man wegrechnen kann". Es ist je nach Filterkontext unterschiedlich falsch, und deshalb so schwer zu entdecken.

Die Entscheidung. Vor dem ersten Measure

Bevor Sie eine Time-Intelligence-Funktion (TOTALYTD, TOTALMTD, SAMEPERIODLASTYEAR, DATEADD, …) schreiben, klassifizieren Sie die Kennzahl. Eine einzige Frage genügt:

Die Antwort bestimmt die gesamte nachgelagerte DAX-Logik:

KennzahlTypYTD-LogikVorjahresvergleich
Neuvermietung (Fläche/Monat)FlowTOTALYTD akkumuliertSAMEPERIODLASTYEAR
Belegte Fläche zum StichtagStockletzter Wert der PeriodeSAMEPERIODLASTYEAR (verschiebt den Stichtag)
Leerstand zum StichtagStockletzter Wert der PeriodeSAMEPERIODLASTYEAR

Bemerkenswert ist die rechte Spalte: Der Vorjahresvergleich funktioniert für beide Typen. SAMEPERIODLASTYEAR verschiebt schlicht den Filterkontext um ein Jahr, und bei einer Stock-Kennzahl erbt der „Stichtag = letztes Datum im Kontext" diese Verschiebung automatisch. Nur die Akkumulation (YTD) unterscheidet die beiden.

Die Stolperfallen

Drei Dinge, die in der Praxis immer wieder auftauchen:

  1. TOTALYTD ist kein No-Op, das man vorsichtshalber stehen lässt. Bei einer Stock-Kennzahl, die nicht über die Kalenderdimension verbunden ist, hat es scheinbar keine Wirkung. Bis jemand die Beziehung „aufräumt" und die Doppelzählung plötzlich aktiv wird. Lassen Sie es bei Bestandsgrößen ganz weg.

  2. Snapshot-Tabellen nie an die Kalenderdimension hängen. Wer einen Monatsultimo-Snapshot baut und ihn mit DIM_Kalender verknüpft, lädt die Stock-Doppelzählung durch die Hintertür wieder ein: TOTALYTD summiert dann über die Monats-Snapshots. Snapshot disconnected lassen, Stichtag als Wertfilter setzen.

  3. Ein ereignisbasiertes Measure gehört nicht in den Stichtags-Snapshot. „Neuvermietung der Periode" beruht auf einem datierten Ereignis (Vertragsabschluss). Das ist Flow und bleibt live. Packt man es in einen Stichtags-Snapshot ohne Periodenbezug, wird es zur Portfolio-Summe hochgerechnet. Klassifizieren Sie vor jeder Snapshot-Optimierung.

Das Takeaway

Die Korrektur selbst ist trivial. TOTALYTD entfernen, den letzten Wert der Periode nehmen. Der eigentliche Hebel liegt früher: Metriktyp klassifizieren, bevor die erste Time-Intelligence-Funktion geschrieben wird. Eine Frage, ein Satz in der Modell-Dokumentation („Fläche = Stock, Neuvermietung = Flow"). Und eine ganze Klasse stiller Reporting-Fehler entsteht gar nicht erst.

Wenn Ihre YTD-Zahlen „irgendwie zu hoch" wirken, lohnt der erste Blick fast immer hier.