COUNTIF() in Power BI meistern: Ein DAX-basierter Ansatz
Excel-Nutzende stellen in Power BI schnell fest: Eine native COUNTIF()-Funktion fehlt. Dieser Artikel zeigt verschiedene Wege, COUNTIF() in Power BI umzusetzen, inklusive praxisnaher Anwendungsfälle.
Die Funktion COUNTIF() ist bei Excel-Nutzern beliebt, weil sie das Zählen von Daten auf Basis einer Bedingung ermöglicht. Beim Umstieg auf Power BI stellen jedoch viele fest, dass es dort keine native COUNTIF()-Funktion gibt.
Zum Glück lässt sich die COUNTIF()-Logik mit verschiedenen DAX-Formeln (Data Analysis Expressions) nachbauen. Dieser Artikel zeigt dir, wie du COUNTIF()-ähnliche Berechnungen in Power BI mit DAX-Funktionen wie CALCULATE(), COUNTROWS(), COUNTA() und FILTER() umsetzt.
Warum es COUNTIF() in Power BI nicht gibt
Im Unterschied zu Excel, das zellbasierte Formeln nutzt, arbeitet Power BI mit tabellenbasierten Berechnungen und Filterkontext. Es operiert auf Tabellen und deren Beziehungen und verwendet DAX für Berechnungen.
Anstatt einzelne Zellen zu referenzieren, arbeitet DAX mit Spalten und wendet Berechnungen dynamisch basierend auf dem Filterkontext an—bestimmt durch Slicer, Zeilen-/Spaltenfilter und Tabellenbeziehungen.
Excel COUNTIF() ist zellorientiert: Formeln werden zeilenweise innerhalb eines Bereichs angewendet. Power BI geht anders vor und nutzt Beziehungen zwischen Tabellen, um Berechnungen zu verfeinern. Statt einzelne Zellen zu scannen, setzt DAX kontextabhängige Filter auf Basis des Berichts.
Was das für dich bedeutet
Als Power BI-Nutzer mit Excel-Erfahrung musst du dich an den tabellenbasierten Ansatz gewöhnen. DAX-Methoden, die auf Spaltenebene arbeiten, sind effizienter als zeilenweise Iterationen.
Im Gegensatz zu Excel musst du in Power BI die passende Methode wählen, um COUNTIF() für dein Datenmodell zu replizieren. Du solltest dir also abgewöhnen, Formeln auf einzelne Zellen anzuwenden, und stattdessen in Tabellen und Filterkontexten denken.
Zentrale DAX-Funktionen für COUNTIF()-Logik
Dein Ansatz zur Umsetzung von COUNTIF() in Power BI hängt von Faktoren ab wie den Beziehungen zwischen Tabellen, fehlenden Werten in den Daten, Datenmenge usw. Manche DAX-Funktionen sind für eine schnellere, effizientere Verarbeitung optimiert.
Überblick über die wichtigsten Funktionen
DAX-Funktionen werden für berechnete Spalten, Measures und Tabellen verwendet. Diese DAX-Funktionen helfen dir, die COUNTIF()-Funktionalität in Power BI nachzubilden.
CALCULATE(): Modifiziert den Filterkontext einer Expression und ermöglicht das dynamische Anwenden oder Anpassen von Filtern. So kannst du z. B. den Gesamtumsatz für eine bestimmte Region berechnen.
COUNTROWS(): Zählt die Zeilenanzahl in einer Tabelle und lässt sich mit Filterfunktionen kombinieren, um bestimmte Zeilen zu zählen, z. B. Bestellungen über 1.000 $.
COUNTA(): Zählt nicht-leere Werte in einer Spalte und ist hilfreich bei fehlenden Daten, z. B. zählst du nur nicht-leere Kunden-IDs, um valide Datensätze zu berücksichtigen.
FILTER(): Wird meist mit CALCULATE() und COUNTROWS() eingesetzt und gibt eine Tabelle basierend auf einer Bedingung zurück, z. B. Bestellungen mit einem Wert über 500 $.
ALLEXCEPT(): Hebt alle Filter auf, außer den angegebenen. So kannst du z. B. den Gesamtumsatz nach Region berechnen, obwohl Slicer oder Filter aktiv sind. Das ist wichtig bei Aggregationen über Hierarchien.
RELATEDTABLE(): Liefert eine Tabelle basierend auf bestehenden Beziehungen. Beispiel: Zähle die Bestellungen je Kunde über die Kundenbeziehung.
So greifen sie ineinander
Da COUNTROWS() die Zeilen einer Tabelle zählt, kannst du mit FILTER() zunächst die Zeilen herausfiltern, die eine Bedingung erfüllen. Anschließend begrenzt CALCULATE() den Filterkontext so, dass COUNTROWS() nur die passenden Zeilen berücksichtigt. Hier ein Beispiel für die DAX-Syntax:
Sales over 5 quantities =
CALCULATE(
COUNTROWS(Sales),
FILTER('Sales, 'Sales[Quantity] > 5)
)Bereitgestellt von
CALCULATE() wirkt hier wie das Zusammenführen zweier Ausdrücke. Anstatt mit COUNTROWS() alles zu zählen, begrenzt CALCULATE() die Zählung auf den durch FILTER() definierten Kontext.
Einfache Beispiele für COUNTIF()-Äquivalente in Power BI
Bevor wir in Beispiele einsteigen, wie du COUNTIF() in Power BI umsetzt, lade bitte die Supermarkt-Verkaufsdaten.
Beispiel 1: Anzahl der Bestellungen durch Kundinnen
Die folgende DAX-Syntax berechnet die Anzahl der Bestellungen durch weibliche Kunden.
Orders by female customers =
CALCULATE(
COUNTROWS(Sales),
FILTER(Sales, Sales[Gender] = "Female")
)Bereitgestellt von
Anzahl der Bestellungen durch Kundinnen. Bild: Autor.
FILTER(Sales, Sales[Gender] = "Female") filtert die Bestellungen auf weibliche Kunden.
COUNTROWS(Sales) zählt dank CALCULATE() nicht alle Daten, sondern die gefilterte Tabelle.
Beispiel 2: Bestellungen nach Stadt zählen
Die folgende DAX-Syntax zählt die Anzahl der Bestellungen je Stadt.
Total Orders by City = CALCULATE(COUNTA(Sales[City]), ALLEXCEPT(Sales, Sales[City]))Bereitgestellt von
Anzahl der Bestellungen je Stadt. Bild: Autor.
COUNTA(Sales[City]) zählt die Anzahl nicht-leerer Werte in der Spalte City.
ALLEXCEPT(Sales, Sales[City]) entfernt alle Filter außer dem Filter auf die Spalte City in der Tabelle Sales.
CALCULATE() sorgt dafür, dass COUNTA() für jede Stadt separat berechnet wird und wirkt damit wie COUNTIF() in Excel.
Beispiel 3: Alternative mit COUNTROWS
Alternativ kannst du folgende DAX-Syntax nutzen, die COUNTROWS() statt COUNTA() verwendet.
Total Orders by City = CALCULATE(COUNTROWS(Sales), ALLEXCEPT(Sales, Sales[City]))Bereitgestellt von
COUNTROWS() zählt die Zeilen der Tabelle Sales unabhängig von leeren Werten.
Wenn die Spalte City keine Werte enthält, liefern beide Ansätze das gleiche Ergebnis. Sind jedoch Werte fehlend, schließt COUNTA() sie aus, während COUNTROWS() sie einbezieht.
Nutze COUNTROWS(), wenn jede Zeile einen Datensatz repräsentiert, z. B. eine Bestellung. Enthält dein Datensatz potenziell ungültige Einträge, eignet sich COUNTA(), das nur gültige Werte zählt.
Measures für dynamische Berechnungen
Oft brauchst du Measures, die sich dynamisch je nach Tabellenfilter oder Slicer ändern. In diesem Abschnitt zeige ich, wie du COUNTIF() in solchen Szenarien umsetzt.
Szenario: Hochwertige Bestellungen zählen
Hier ein Beispiel, bei dem wir Bestellungen mit einer Gesamtmenge über fünf ermitteln wollen.
High Value Orders = COUNTROWS(FILTER(Sales, Sales[Quantity] > 5))Bereitgestellt von
Anzahl hochwertiger Bestellungen. Bild: Autor.
FILTER(Sales, Sales[Quantity] > 5) gibt Bestellungen mit einer Menge über fünf zurück.
COUNTROWS() zählt die Zeilen der gefilterten Tabelle mit Bestellungen über fünf.
Im Gegensatz zu berechneten Spalten, die Speicher und Modellgröße erhöhen, werden Measures nur bei Bedarf berechnet und sind damit effizienter. Die DAX-Syntax für eine berechnete Spalte sähe so aus:
Das schreibt in jede Zeile eine statische 1 oder 0. Um die hochwertigen Bestellungen zu zählen, müsstest du ein Measure mit SUM(Sales[High Value]) anlegen.
Stell dir vor, du würdest für jeden Filter berechnete Spalten erstellen—das treibt den Speicherbedarf hoch und macht dich unflexibel.
Die folgende Tabelle zeigt, warum du in der Regel Measures berechneten Spalten vorziehen solltest.
Measure
Berechnete Spalte
Zur Abfragezeit berechnet, reagiert auf Filter
Statisch, wird beim Laden/Aktualisieren berechnet
Effizienter, nur bei Bedarf berechnet
Verbraucht Speicher und vergrößert das Modell
Passt sich dynamisch an Filter, Slicer und Visuals an
Werte bleiben gleich, bis Daten aktualisiert werden
Fortgeschrittene Techniken und mehrere Bedingungen
Excel COUNTIFS() unterstützt mehrere Bedingungen—das lässt sich auch in Power BI nachbilden.
Mehrere Kriterien / COUNTIFS()-Logik
Hier eine DAX-Syntax, um Bestellungen mit Menge über fünf zu zählen, die per Kreditkarte bezahlt wurden.
Anzahl der Bestellungen mit Menge über fünf und Bezahlung per Kreditkarte. Bild: Autor.
Die Formel filtert die Tabelle Sales auf Bestellungen mit Menge > 5 und Zahlungsart Kreditkarte. && steht für den UND-Operator, sodass nur Bestellungen gezählt werden, die beide Bedingungen erfüllen.
Interessierst du dich für Bestellungen, die mindestens eine der Bedingungen erfüllen, nutzt du den ODER-Operator, in DAX dargestellt durch ||.
Anzahl der Bestellungen mit Menge über fünf oder Bezahlung per Kreditkarte. Bild: Autor.
Logische Operatoren und Variablen nutzen
DAX-Ausdrücke zur Replikation von COUNTIF() können komplex werden. Variablen machen den Code verständlicher, steuern die Auswertungsreihenfolge und vermeiden doppelte Berechnungen, indem Werte nur einmal gespeichert werden.
Hier ein Beispiel, das Bestellungen von Kundinnen zählt, die entweder per Kreditkarte bezahlt wurden oder eine Menge über fünf haben, unter Nutzung von Variablen.
CreditCard Or Above 5 By Female =
VAR FilteredSales =
FILTER(
Sales,
(Sales[Quantity] > 5 || Sales[Payment] = "Credit card")
&& Sales[Gender] = "Female"
)
RETURN
COUNTROWS(FilteredSales)Bereitgestellt von
Anzahl der Bestellungen durch Kundinnen mit Kreditkartenzahlung oder Menge über fünf. Bild: Autor.
Der Filter wird in einer Variablen gespeichert und in COUNTROWS() verwendet. So kannst du den Ausdruck auch schreiben:
CreditCard Or Above 5 By Female =
VAR MinQuantity = 5
VAR FilteredSales =
FILTER(
Sales,
(Sales[Quantity] > MinQuantity || Sales[Payment] = "Credit card")
&& Sales[Gender] = "Female"
)
VAR Result = COUNTROWS(FilteredSales)
RETURN
ResultBereitgestellt von
Hier werden Mindestmenge, Filter und Ergebnis als Variablen abgelegt. Wie bei der Priorität von Klammern in der Mathematik werden in DAX Bedingungen in Klammern zuerst ausgewertet.
Im obigen Beispiel wird der ODER-Operator || vor dem UND-Operator && ausgewertet, da er in Klammern steht. Das bedeutet: Zuerst werden Bestellungen mit Menge > 5 oder Kreditkartenzahlung gefiltert, danach auf weibliche Kunden eingeschränkt.
COUNTIF() über verknüpfte Tabellen
Arbeitest du mit mehreren Tabellen, kannst du mit COUNTROWS() oder COUNTA() Datensätze zählen, die eine Bedingung in einer verknüpften Tabelle erfüllen, und dabei RELATEDTABLE() nutzen.
RELATEDTABLE() berücksichtigt die Modellbeziehung zwischen zwei Tabellen, etwa 1:1 oder 1:n.
Angenommen, es gibt eine weitere Tabelle Sales2 mit denselben Supermarktverkäufen, und Sales und Sales2 sind über Invoice ID verknüpft.
Beziehung zwischen den Tabellen Sales und Sales2. Bild: Autor.
Mit der folgenden DAX-Syntax ermittelst du die Anzahl der Bestellungen von Mitgliedern, wenn Sales keine Spalte Customer type hat, Sales2 aber schon.
Orders by members =
COUNTROWS(FILTER(RELATEDTABLE(Sales2), Sales2[Customer Type] = "Member"))Bereitgestellt von
Anzahl der Bestellungen von Kunden mit Mitgliedsstatus. Bild: Autor.
RELATEDTABLE(Sales2) filtert Sales2 automatisch auf Zeilen mit derselben Invoice ID wie in den Sales-Daten.
FILTER() reduziert weiter auf Bestellungen mit "Member", während COUNTROWS() die gefilterte Tabelle zählt.
Praxisbeispiele und Integrationstipps
Hier sind einige Praxisfälle und Integrationstipps für die Umsetzung von COUNTIF() in Power BI.
Anwendungsfälle aus der Praxis
Hast du eine Tabelle mit Testergebnissen oder Bestellungen, kannst du mit COUNTROWS() und FILTER() doppelte Einträge zählen. Über eine Notenspalte lässt sich außerdem ermitteln, wie viele bestanden oder durchgefallen sind. Ein weiteres wichtiges COUNTIF()-Äquivalent ist SUMX(), mit dem du z. B. Punktzahlen unter einer Bedingung summierst.
Datenintegrations-Tools
Anstatt Excel- oder Google-Sheets-Dateien immer wieder manuell hochzuladen, kannst du Tools wie Coupler.io zur Automatisierung der Datenextraktion nutzen.
Sobald sich deine Tabelle aktualisiert, spiegelt sich das automatisch im Power BI-Dashboard wider—ohne manuelles Hochladen.
So zeigt Power BI stets aktuelle Daten, während du dich auf Analysen und Entscheidungen konzentrierst. Außerdem kannst du damit mehrere Quellen in einem Dashboard zusammenführen.
Erprobte Tipps für Lesbarkeit und Performance
Verwende berechnete Spalten, wenn Berechnungen vor der Aggregation auf Zeilenebene erfolgen müssen. Greife zu Measures, wenn die Berechnung von Nutzerfiltern oder Slicern abhängt oder du einen aggregierten Wert brauchst statt zeilenweiser Berechnungen.
Das Verständnis des Filterkontexts ist entscheidend, um zwischen Measure und berechneter Spalte zu wählen. Filterkontext entsteht durch Slicer, Filter oder Gruppierungen; Zeilenkontext gilt innerhalb einer Tabellenzeile. Berechnete Spalten nutzen Zeilenkontext und können unnötige Spalten erzeugen, die den Speicherbedarf erhöhen.
Berücksichtige den Filterkontext auch bei Measures. Statt SUM(Sales[Amount]) verwende CALCULATE(SUM(Sales[Amount])), um die Filterung zu steuern. Mit der ersten Variante erhältst du bei aktivem Filter ggf. nicht den gewünschten Wert; mit der zweiten kannst du Filter gezielt beeinflussen.
Vermeide zudem zu viele Iteratoren wie FILTER() in einem einzigen DAX-Ausdruck, da sie bei großen Datensätzen durch zeilenweises Iterieren die Performance bremsen.
Fazit
Auch wenn die native COUNTIF() aus Excel in Power BI fehlt, lassen sich ihre Funktionen mit DAX wie CALCULATE(), COUNTROWS(), COUNTA() und FILTER() sehr gut nachbilden.
Der richtige Ansatz hängt von deinen Daten ab. Bei fehlenden Werten greife zu COUNTA(), bei vollständigen Daten zu COUNTROWS(). Um externe Filter auszuschließen, nutze ALLEXCEPT() innerhalb von CALCULATE().
Denke daran: Deine DAX-Ausdrücke beeinflussen, wie schnell Visuals im Dashboard laden. Schreibe optimierte DAX-Formeln und entscheide bewusst zwischen Measures und berechneten Spalten. Hier findest du weitere DataCamp-Ressourcen zu fortgeschrittenen DAX-Techniken.
Erfahrener Data-Science-Dozent und Biostatistiker mit Kenntnissen in Python, R und maschinellem Lernen.
Power BI Countif() Fragen
Hat Power BI eine native COUNTIF()-Funktion?⌄
Power BI hat keine native COUNTIF()-Funktion, aber es gibt verschiedene Möglichkeiten, sie in Power BI umzusetzen.
Welche Funktionen gibt es für die Umsetzung von COUNTIF() in Power BI?⌄
Die Hauptfunktionen zur Umsetzung von COUNTIF() in Power BI sind CALCULATE(), COUNTROWS(), COUNTA(), FILTER(), ALLEXCEPT() und RELATEDTABLE(). Je nach Datenmodell kombinierst du diese Funktionen, um COUNTIF() in Power BI nachzubilden.
Was ist der Unterschied zwischen COUNTROWS() und COUNTA()?⌄
COUNTROWS() zählt die Zeilenanzahl in den Daten, unabhängig davon, ob die Zeile einen gültigen Eintrag hat, während COUNTA() die Anzahl gültiger (nicht-leerer) Werte in einer Spalte zählt.
Welchen Vorteil haben Measures gegenüber berechneten Spalten?⌄
Measures sind effizienter und benötigen kaum Speicher, da sie on the fly berechnet werden. Berechnete Spalten vergrößern hingegen das Datenmodell und verbrauchen Speicher.
Was sind praktische Anwendungsfälle der COUNTIF()-Umsetzung in Power BI?⌄
Power BI-COUNTIF() hat viele Einsatzmöglichkeiten—vom bedingten Zählen von Datensätzen bis zum Erstellen bedingter Spalten auf Basis von Zählungen und mehr.
Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Schau dir 4 Möglichkeiten an, wie du NaN-Werte in Python mit NumPy und Pandas erkennen kannst. Lerne die wichtigsten Unterschiede zwischen NaN und None kennen, um Daten effizient zu bereinigen und zu analysieren.
Quadrieren in Python ist einfach: Nutze den eingebauten Operator ** oder setze für vielseitigere Lösungen NumPy, pow(), math.pow(), Bitoperatoren und weitere Funktionen ein.
Lerne mehr über Python-Lambda-Funktionen, wozu sie gut sind und wann man sie benutzt. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Die Funktion
COUNTIF()ist bei Excel-Nutzern beliebt, weil sie das Zählen von Daten auf Basis einer Bedingung ermöglicht. Beim Umstieg auf Power BI stellen jedoch viele fest, dass es dort keine nativeCOUNTIF()-Funktion gibt.Zum Glück lässt sich die
COUNTIF()-Logik mit verschiedenen DAX-Formeln (Data Analysis Expressions) nachbauen. Dieser Artikel zeigt dir, wie duCOUNTIF()-ähnliche Berechnungen in Power BI mit DAX-Funktionen wieCALCULATE(),COUNTROWS(),COUNTA()undFILTER()umsetzt.Warum es COUNTIF() in Power BI nicht gibt
Im Unterschied zu Excel, das zellbasierte Formeln nutzt, arbeitet Power BI mit tabellenbasierten Berechnungen und Filterkontext. Es operiert auf Tabellen und deren Beziehungen und verwendet DAX für Berechnungen.
Anstatt einzelne Zellen zu referenzieren, arbeitet DAX mit Spalten und wendet Berechnungen dynamisch basierend auf dem Filterkontext an—bestimmt durch Slicer, Zeilen-/Spaltenfilter und Tabellenbeziehungen.
Excel COUNTIF() ist zellorientiert: Formeln werden zeilenweise innerhalb eines Bereichs angewendet. Power BI geht anders vor und nutzt Beziehungen zwischen Tabellen, um Berechnungen zu verfeinern. Statt einzelne Zellen zu scannen, setzt DAX kontextabhängige Filter auf Basis des Berichts.
Was das für dich bedeutet
Als Power BI-Nutzer mit Excel-Erfahrung musst du dich an den tabellenbasierten Ansatz gewöhnen. DAX-Methoden, die auf Spaltenebene arbeiten, sind effizienter als zeilenweise Iterationen.
Im Gegensatz zu Excel musst du in Power BI die passende Methode wählen, um
COUNTIF()für dein Datenmodell zu replizieren. Du solltest dir also abgewöhnen, Formeln auf einzelne Zellen anzuwenden, und stattdessen in Tabellen und Filterkontexten denken.Zentrale DAX-Funktionen für COUNTIF()-Logik
Dein Ansatz zur Umsetzung von
COUNTIF()in Power BI hängt von Faktoren ab wie den Beziehungen zwischen Tabellen, fehlenden Werten in den Daten, Datenmenge usw. Manche DAX-Funktionen sind für eine schnellere, effizientere Verarbeitung optimiert.Überblick über die wichtigsten Funktionen
DAX-Funktionen werden für berechnete Spalten, Measures und Tabellen verwendet. Diese DAX-Funktionen helfen dir, die
COUNTIF()-Funktionalität in Power BI nachzubilden.CALCULATE(): Modifiziert den Filterkontext einer Expression und ermöglicht das dynamische Anwenden oder Anpassen von Filtern. So kannst du z. B. den Gesamtumsatz für eine bestimmte Region berechnen.COUNTROWS(): Zählt die Zeilenanzahl in einer Tabelle und lässt sich mit Filterfunktionen kombinieren, um bestimmte Zeilen zu zählen, z. B. Bestellungen über 1.000 $.COUNTA(): Zählt nicht-leere Werte in einer Spalte und ist hilfreich bei fehlenden Daten, z. B. zählst du nur nicht-leere Kunden-IDs, um valide Datensätze zu berücksichtigen.FILTER(): Wird meist mitCALCULATE()undCOUNTROWS()eingesetzt und gibt eine Tabelle basierend auf einer Bedingung zurück, z. B. Bestellungen mit einem Wert über 500 $.ALLEXCEPT(): Hebt alle Filter auf, außer den angegebenen. So kannst du z. B. den Gesamtumsatz nach Region berechnen, obwohl Slicer oder Filter aktiv sind. Das ist wichtig bei Aggregationen über Hierarchien.RELATEDTABLE(): Liefert eine Tabelle basierend auf bestehenden Beziehungen. Beispiel: Zähle die Bestellungen je Kunde über die Kundenbeziehung.So greifen sie ineinander
Da
COUNTROWS()die Zeilen einer Tabelle zählt, kannst du mitFILTER()zunächst die Zeilen herausfiltern, die eine Bedingung erfüllen. Anschließend begrenztCALCULATE()den Filterkontext so, dassCOUNTROWS()nur die passenden Zeilen berücksichtigt. Hier ein Beispiel für die DAX-Syntax:CALCULATE()wirkt hier wie das Zusammenführen zweier Ausdrücke. Anstatt mitCOUNTROWS()alles zu zählen, begrenztCALCULATE()die Zählung auf den durchFILTER()definierten Kontext.Einfache Beispiele für COUNTIF()-Äquivalente in Power BI
Bevor wir in Beispiele einsteigen, wie du
COUNTIF()in Power BI umsetzt, lade bitte die Supermarkt-Verkaufsdaten.Beispiel 1: Anzahl der Bestellungen durch Kundinnen
Die folgende DAX-Syntax berechnet die Anzahl der Bestellungen durch weibliche Kunden.
Anzahl der Bestellungen durch Kundinnen. Bild: Autor.
FILTER(Sales, Sales[Gender] = "Female")filtert die Bestellungen auf weibliche Kunden.COUNTROWS(Sales)zählt dankCALCULATE()nicht alle Daten, sondern die gefilterte Tabelle.Beispiel 2: Bestellungen nach Stadt zählen
Die folgende DAX-Syntax zählt die Anzahl der Bestellungen je Stadt.
Anzahl der Bestellungen je Stadt. Bild: Autor.
COUNTA(Sales[City])zählt die Anzahl nicht-leerer Werte in der Spalte City.ALLEXCEPT(Sales, Sales[City])entfernt alle Filter außer dem Filter auf die SpalteCityin der Tabelle Sales.CALCULATE()sorgt dafür, dassCOUNTA()für jede Stadt separat berechnet wird und wirkt damit wieCOUNTIF()in Excel.Beispiel 3: Alternative mit COUNTROWS
Alternativ kannst du folgende DAX-Syntax nutzen, die
COUNTROWS()stattCOUNTA()verwendet.COUNTROWS()zählt die Zeilen der TabelleSalesunabhängig von leeren Werten.Wenn die Spalte
Citykeine Werte enthält, liefern beide Ansätze das gleiche Ergebnis. Sind jedoch Werte fehlend, schließtCOUNTA()sie aus, währendCOUNTROWS()sie einbezieht.Nutze
COUNTROWS(), wenn jede Zeile einen Datensatz repräsentiert, z. B. eine Bestellung. Enthält dein Datensatz potenziell ungültige Einträge, eignet sichCOUNTA(), das nur gültige Werte zählt.Measures für dynamische Berechnungen
Oft brauchst du Measures, die sich dynamisch je nach Tabellenfilter oder Slicer ändern. In diesem Abschnitt zeige ich, wie du
COUNTIF()in solchen Szenarien umsetzt.Szenario: Hochwertige Bestellungen zählen
Hier ein Beispiel, bei dem wir Bestellungen mit einer Gesamtmenge über fünf ermitteln wollen.
Anzahl hochwertiger Bestellungen. Bild: Autor.
FILTER(Sales, Sales[Quantity] > 5)gibt Bestellungen mit einer Menge über fünf zurück.COUNTROWS()zählt die Zeilen der gefilterten Tabelle mit Bestellungen über fünf.Im Gegensatz zu berechneten Spalten, die Speicher und Modellgröße erhöhen, werden Measures nur bei Bedarf berechnet und sind damit effizienter. Die DAX-Syntax für eine berechnete Spalte sähe so aus:
Berechnete Spalte
High Value. Bild: Autor.Das schreibt in jede Zeile eine statische 1 oder 0. Um die hochwertigen Bestellungen zu zählen, müsstest du ein Measure mit
SUM(Sales[High Value])anlegen.Stell dir vor, du würdest für jeden Filter berechnete Spalten erstellen—das treibt den Speicherbedarf hoch und macht dich unflexibel.
Die folgende Tabelle zeigt, warum du in der Regel Measures berechneten Spalten vorziehen solltest.
Measure
Berechnete Spalte
Zur Abfragezeit berechnet, reagiert auf Filter
Statisch, wird beim Laden/Aktualisieren berechnet
Effizienter, nur bei Bedarf berechnet
Verbraucht Speicher und vergrößert das Modell
Passt sich dynamisch an Filter, Slicer und Visuals an
Werte bleiben gleich, bis Daten aktualisiert werden
Fortgeschrittene Techniken und mehrere Bedingungen
Excel
COUNTIFS()unterstützt mehrere Bedingungen—das lässt sich auch in Power BI nachbilden.Mehrere Kriterien / COUNTIFS()-Logik
Hier eine DAX-Syntax, um Bestellungen mit Menge über fünf zu zählen, die per Kreditkarte bezahlt wurden.
Anzahl der Bestellungen mit Menge über fünf und Bezahlung per Kreditkarte. Bild: Autor.
Die Formel filtert die Tabelle
Salesauf Bestellungen mit Menge > 5 und Zahlungsart Kreditkarte.&&steht für den UND-Operator, sodass nur Bestellungen gezählt werden, die beide Bedingungen erfüllen.Interessierst du dich für Bestellungen, die mindestens eine der Bedingungen erfüllen, nutzt du den ODER-Operator, in DAX dargestellt durch
||.Anzahl der Bestellungen mit Menge über fünf oder Bezahlung per Kreditkarte. Bild: Autor.
Logische Operatoren und Variablen nutzen
DAX-Ausdrücke zur Replikation von
COUNTIF()können komplex werden. Variablen machen den Code verständlicher, steuern die Auswertungsreihenfolge und vermeiden doppelte Berechnungen, indem Werte nur einmal gespeichert werden.Hier ein Beispiel, das Bestellungen von Kundinnen zählt, die entweder per Kreditkarte bezahlt wurden oder eine Menge über fünf haben, unter Nutzung von Variablen.
Anzahl der Bestellungen durch Kundinnen mit Kreditkartenzahlung oder Menge über fünf. Bild: Autor.
Der Filter wird in einer Variablen gespeichert und in
COUNTROWS()verwendet. So kannst du den Ausdruck auch schreiben:Hier werden Mindestmenge, Filter und Ergebnis als Variablen abgelegt. Wie bei der Priorität von Klammern in der Mathematik werden in DAX Bedingungen in Klammern zuerst ausgewertet.
Im obigen Beispiel wird der ODER-Operator
||vor dem UND-Operator&&ausgewertet, da er in Klammern steht. Das bedeutet: Zuerst werden Bestellungen mit Menge > 5 oder Kreditkartenzahlung gefiltert, danach auf weibliche Kunden eingeschränkt.COUNTIF() über verknüpfte Tabellen
Arbeitest du mit mehreren Tabellen, kannst du mit
COUNTROWS()oderCOUNTA()Datensätze zählen, die eine Bedingung in einer verknüpften Tabelle erfüllen, und dabeiRELATEDTABLE()nutzen.RELATEDTABLE()berücksichtigt die Modellbeziehung zwischen zwei Tabellen, etwa 1:1 oder 1:n.Angenommen, es gibt eine weitere Tabelle
Sales2mit denselben Supermarktverkäufen, undSalesundSales2sind überInvoice IDverknüpft.Beziehung zwischen den Tabellen
SalesundSales2. Bild: Autor.Mit der folgenden DAX-Syntax ermittelst du die Anzahl der Bestellungen von Mitgliedern, wenn
Saleskeine SpalteCustomer typehat,Sales2aber schon.Anzahl der Bestellungen von Kunden mit Mitgliedsstatus. Bild: Autor.
RELATEDTABLE(Sales2)filtertSales2automatisch auf Zeilen mit derselbenInvoice IDwie in denSales-Daten.FILTER()reduziert weiter auf Bestellungen mit"Member", währendCOUNTROWS()die gefilterte Tabelle zählt.Praxisbeispiele und Integrationstipps
Hier sind einige Praxisfälle und Integrationstipps für die Umsetzung von
COUNTIF()in Power BI.Anwendungsfälle aus der Praxis
Hast du eine Tabelle mit Testergebnissen oder Bestellungen, kannst du mit
COUNTROWS()undFILTER()doppelte Einträge zählen. Über eine Notenspalte lässt sich außerdem ermitteln, wie viele bestanden oder durchgefallen sind. Ein weiteres wichtigesCOUNTIF()-Äquivalent ist SUMX(), mit dem du z. B. Punktzahlen unter einer Bedingung summierst.Datenintegrations-Tools
Anstatt Excel- oder Google-Sheets-Dateien immer wieder manuell hochzuladen, kannst du Tools wie Coupler.io zur Automatisierung der Datenextraktion nutzen.
Sobald sich deine Tabelle aktualisiert, spiegelt sich das automatisch im Power BI-Dashboard wider—ohne manuelles Hochladen.
So zeigt Power BI stets aktuelle Daten, während du dich auf Analysen und Entscheidungen konzentrierst. Außerdem kannst du damit mehrere Quellen in einem Dashboard zusammenführen.
Erprobte Tipps für Lesbarkeit und Performance
Verwende berechnete Spalten, wenn Berechnungen vor der Aggregation auf Zeilenebene erfolgen müssen. Greife zu Measures, wenn die Berechnung von Nutzerfiltern oder Slicern abhängt oder du einen aggregierten Wert brauchst statt zeilenweiser Berechnungen.
Das Verständnis des Filterkontexts ist entscheidend, um zwischen Measure und berechneter Spalte zu wählen. Filterkontext entsteht durch Slicer, Filter oder Gruppierungen; Zeilenkontext gilt innerhalb einer Tabellenzeile. Berechnete Spalten nutzen Zeilenkontext und können unnötige Spalten erzeugen, die den Speicherbedarf erhöhen.
Berücksichtige den Filterkontext auch bei Measures. Statt
SUM(Sales[Amount])verwendeCALCULATE(SUM(Sales[Amount])), um die Filterung zu steuern. Mit der ersten Variante erhältst du bei aktivem Filter ggf. nicht den gewünschten Wert; mit der zweiten kannst du Filter gezielt beeinflussen.Vermeide zudem zu viele Iteratoren wie
FILTER()in einem einzigen DAX-Ausdruck, da sie bei großen Datensätzen durch zeilenweises Iterieren die Performance bremsen.Fazit
Auch wenn die native
COUNTIF()aus Excel in Power BI fehlt, lassen sich ihre Funktionen mit DAX wieCALCULATE(),COUNTROWS(),COUNTA()undFILTER()sehr gut nachbilden.Der richtige Ansatz hängt von deinen Daten ab. Bei fehlenden Werten greife zu
COUNTA(), bei vollständigen Daten zuCOUNTROWS(). Um externe Filter auszuschließen, nutzeALLEXCEPT()innerhalb vonCALCULATE().Denke daran: Deine DAX-Ausdrücke beeinflussen, wie schnell Visuals im Dashboard laden. Schreibe optimierte DAX-Formeln und entscheide bewusst zwischen Measures und berechneten Spalten. Hier findest du weitere DataCamp-Ressourcen zu fortgeschrittenen DAX-Techniken.