HR Analytics Dashboard in Power BI: Workforce Insights

Build a comprehensive HR analytics dashboard in Power BI covering headcount, turnover, diversity, absence, and employee lifecycle — with DAX formulas and KPI definitions.

E
ECOSIRE Research and Development Team
|19. März 20269 Min. Lesezeit1.9k Wörter|

HR Analytics Dashboard in Power BI: Workforce Insights

People Analytics ist die am schnellsten wachsende Anwendung von Business Intelligence im Unternehmen – und das aus gutem Grund. Unternehmen mit ausgereiften HR-Analyseprogrammen erzielen im Dreijahresdurchschnitt einen um 82 % höheren Gewinn als Unternehmen mit minimalen Personaldatenfunktionen (Deloitte Human Capital Trends). Dennoch verfolgen die meisten HR-Teams den Personalbestand immer noch in Excel-Tabellen und berechnen den Umsatz manuell in Google Sheets.

Power BI bietet HR-Führungskräften die gleiche analytische Tiefe, über die Finanz- und Vertriebsteams seit Jahren verfügen – Echtzeit-Transparenz des Personalbestands, automatisierte Fluktuationsberechnungen, Diversitätsanalysen und Verfolgung des Mitarbeiterlebenszyklus über die gesamte Mitarbeiterreise von der Einstellung bis zum Offboarding.

Dieser Leitfaden erstellt eine vollständige HR-Analyseplattform in Power BI, die das Datenmodell, jeden kritischen HR-KPI mit seiner DAX-Formel und die Dashboard-Seiten abdeckt, die echte Personalentscheidungen vorantreiben.

Wichtige Erkenntnisse

  • HR-Analysen erfordern einen SCD-Ansatz (Slow Changing Dimension) für den historischen Personalbestand
  • Bei der Berechnung der Fluktuationsrate muss zwischen freiwilligen und unfreiwilligen Trennungen unterschieden werden
  • Diversity-Dashboards erfordern ein sorgfältiges Datenschutzdesign – aggregiert, niemals auf individueller Ebene, wenn dies unangemessen ist
  • Die Analyse des Mitarbeiterlebenszyklus verfolgt die Zeit bis zur Einstellung, die Zeit bis zur Produktivität und die Bindungskurven
  • Abwesenheitsanalysen (Bradford-Faktor, Abwesenheitshäufigkeit) lassen sich in Gehaltsabrechnungsdaten integrieren
  • DAX-Kennzahlen für die Mitarbeiterzahl sind punktuell (nicht summiert) – erfordern spezielle Berechnungsmuster
  • HRIS-Systeme (Workday, SAP SuccessFactors, BambooHR) verfügen alle über Power BI-Anschlüsse – Die Sicherheit auf Zeilenebene muss HR-Daten auf autorisierte HR-Geschäftspartner und Manager beschränken

Datenmodell für HR Analytics

Kern-HR-Tabellen

Employee_Snapshot (sich langsam ändernd, eine Zeile pro Mitarbeiter und Monat):

SpalteBeschreibung
EmployeeIDMitarbeiterkennung
SnapshotDateMonatsenddatum des Snapshots
StatusAktiv, beurlaubt, gekündigt
DepartmentIDFK zur Abteilung
JobLevelNote/Band (L1-L8)
JobTitleAktuelle Berufsbezeichnung
ManagerIDFK an Mitarbeiter (Manager)
LocationIDFK zum Standort
HireDateUrsprüngliches Mietdatum
TerminationDateKündigungsdatum (null, wenn aktiv)
TerminationReasonFreiwillig, unfreiwillig, Ruhestand usw.
BaseSalaryMonatliches Grundgehalt
FullTimeEquivalent1,0 für FT, 0,5 für PT
GenderM/W/Nicht-binär (anonymisiert für kleine Gruppen)
AgeGroupAggregierte Altersgruppe (kein Rohalter)
EthnicitySelbstberichtete ethnische Gruppe
TenureMonthsBeschäftigungsmonate zum Snapshot-Datum

Hiring_Events (eine Zeile pro Einstellung):

  • HireID, EmployeeID, ApplicationDate, OfferDate, AcceptDate, StartDate, DepartmentID, SourceChannel, HiringManagerID, JobRequisitionID

Absence_Records (eine Zeile pro Abwesenheitsereignis):

  • AbsenceID, EmployeeID, StartDate, EndDate, DaysAbsent, AbsenceType, Reason, ApprovalStatus

Performance_Reviews (eine Zeile pro Bewertung):

  • ReviewID, EmployeeID, ReviewDate, PerformanceRating, ManagerID

Training_Completions (eine Zeile pro Training):

  • TrainingID, EmployeeID, CompletionDate, ProgramName, HoursCompleted

Personalbestandsanalyse

Berechnung des Personalbestands zu einem bestimmten Zeitpunkt

Bei der Mitarbeiterzahl handelt es sich um eine Momentaufnahme (wie viele Mitarbeiter zu einem bestimmten Zeitpunkt vorhanden sind), nicht um eine Summe. Dies erfordert eine spezielle DAX-Behandlung:

// Headcount at any selected date
Headcount =
CALCULATE(
    COUNTROWS(Employee_Snapshot),
    Employee_Snapshot[Status] = "Active",
    // Use the latest available snapshot for the selected period
    Employee_Snapshot[SnapshotDate] = MAX(Employee_Snapshot[SnapshotDate])
)

// FTE-adjusted Headcount
FTE Headcount =
CALCULATE(
    SUMX(
        FILTER(Employee_Snapshot, Employee_Snapshot[Status] = "Active"),
        Employee_Snapshot[FullTimeEquivalent]
    ),
    Employee_Snapshot[SnapshotDate] = MAX(Employee_Snapshot[SnapshotDate])
)

// Headcount by Department (for matrix/bar chart)
Dept Headcount =
CALCULATE(
    [Headcount],
    ALLEXCEPT(Employee_Snapshot, Employee_Snapshot[DepartmentID])
)

// Headcount growth (vs prior month)
Headcount MoM Change =
[Headcount] -
CALCULATE(
    [Headcount],
    DATEADD(Date[Date], -1, MONTH)
)

// Headcount trend (for sparkline or line chart)
Headcount Trend =
CALCULATE(
    [Headcount],
    REMOVEFILTERS(Date[Month])
)

Fluktuationsratenanalyse

Der Umsatz ist die HR-Kennzahl, die am häufigsten verfolgt und am häufigsten falsch berechnet wird. Die richtige Formel verwendet die durchschnittliche Mitarbeiterzahl als Nenner (nicht die Anfangs- oder Endmitarbeiterzahl).

Umsatz-KPIs

// Total Terminations in Period
Terminations =
CALCULATE(
    COUNTROWS(Employee_Snapshot),
    Employee_Snapshot[Status] = "Terminated",
    Employee_Snapshot[TerminationDate] >= MIN(Date[Date]),
    Employee_Snapshot[TerminationDate] <= MAX(Date[Date])
)

// Voluntary Terminations (resigned)
Voluntary Terminations =
CALCULATE(
    [Terminations],
    Employee_Snapshot[TerminationReason] = "Voluntary"
)

// Involuntary Terminations (laid off, fired)
Involuntary Terminations =
CALCULATE(
    [Terminations],
    Employee_Snapshot[TerminationReason] = "Involuntary"
)

// Average Headcount (for turnover denominator)
Avg Headcount =
AVERAGEX(
    VALUES(Date[Month]),
    [Headcount]
)

// Annualized Turnover Rate
Turnover Rate =
DIVIDE(
    [Terminations],
    [Avg Headcount],
    0
) * 12  -- Annualize if showing monthly data

// Voluntary Turnover Rate
Voluntary Turnover Rate =
DIVIDE([Voluntary Terminations], [Avg Headcount], 0) * 12

// Regrettable Turnover (voluntary + high performers)
Regrettable Turnover =
CALCULATE(
    [Voluntary Terminations],
    RELATED(Performance_Reviews[PerformanceRating]) >= 4  -- High performers
)

// Retention Rate
Retention Rate = 1 - [Turnover Rate]

// New Hire Survival Rate (% of new hires still employed after 90 days)
90 Day Survival Rate =
DIVIDE(
    CALCULATE(
        COUNTROWS(Hiring_Events),
        DATEDIFF(Hiring_Events[StartDate], TODAY(), DAY) >= 90,
        RELATED(Employee_Snapshot[Status]) = "Active"
    ),
    CALCULATE(
        COUNTROWS(Hiring_Events),
        DATEDIFF(Hiring_Events[StartDate], TODAY(), DAY) >= 90
    ),
    0
)

Kennzahlen zu Diversität, Gerechtigkeit und Inklusion

Datenschutzbewusste DEI-Analyse

DEI-Analysen müssen mit Datenschutzrichtlinien implementiert werden – zeigen Sie niemals Daten auf Einzelebene nach sensiblen Attributen an und unterdrücken Sie Daten für Gruppen, die kleiner als ein konfigurierbares Minimum sind (normalerweise 5–10 Mitarbeiter).

// Gender ratio (with suppression for small groups)
Gender Ratio Female =
VAR FemaleCount = CALCULATE([Headcount], Employee_Snapshot[Gender] = "Female")
VAR TotalCount = [Headcount]
RETURN
IF(TotalCount >= 10, DIVIDE(FemaleCount, TotalCount, 0), BLANK())

// Pay equity ratio (female to male)
Gender Pay Ratio =
VAR FemalePay = CALCULATE(
    AVERAGE(Employee_Snapshot[BaseSalary]),
    Employee_Snapshot[Gender] = "Female"
)
VAR MalePay = CALCULATE(
    AVERAGE(Employee_Snapshot[BaseSalary]),
    Employee_Snapshot[Gender] = "Male"
)
RETURN DIVIDE(FemalePay, MalePay, 0)

// Leadership diversity (% of senior roles filled by underrepresented groups)
Leadership Diversity % =
DIVIDE(
    CALCULATE(
        [Headcount],
        Employee_Snapshot[JobLevel] IN {"L6","L7","L8"},
        Employee_Snapshot[Gender] = "Female"
    ),
    CALCULATE(
        [Headcount],
        Employee_Snapshot[JobLevel] IN {"L6","L7","L8"}
    ),
    0
)

DEI-Dashboard-KPIs

KPIFormelZiel
GeschlechtergleichgewichtAnteil weiblicher Mitarbeiter am gesamten Personalbestand50 % ± 5 %
Geschlechtsspezifisches LohngefälleDurchschnittliches Gehalt für Frauen / Durchschnittliches Gehalt für Männer> 97 %
FührungsvielfaltUnterrepräsentierte Gruppen in Führungspositionen> 30 %
Vielfältige EinstellungsquoteDiverse Einstellungen / Gesamteinstellungen> 40 %
FörderungskapitalBeförderungsquote nach Geschlecht/ethnischer Zugehörigkeit± 2 % zwischen den Gruppen

Mitarbeiterlebenszyklusanalyse

Time-to-Hire

// Average days from job posting to offer acceptance
Avg Time to Hire =
AVERAGEX(
    Hiring_Events,
    DATEDIFF(
        Hiring_Events[ApplicationDate],
        Hiring_Events[AcceptDate],
        DAY
    )
)

// Offer Acceptance Rate
Offer Acceptance Rate =
DIVIDE(
    CALCULATE(COUNTROWS(Hiring_Events), Hiring_Events[AcceptDate] <> BLANK()),
    CALCULATE(COUNTROWS(Hiring_Events), Hiring_Events[OfferDate] <> BLANK()),
    0
)

// Source Channel Effectiveness (hired employees by source)
Source Hire Rate =
DIVIDE(
    COUNTROWS(Hiring_Events),
    CALCULATE(
        COUNTROWS(Hiring_Events),
        REMOVEFILTERS(Hiring_Events[SourceChannel])
    ),
    0
)

Amtszeitverteilung

// Tenure bucket (for histogram)
Tenure Bucket =
SWITCH(TRUE(),
    Employee_Snapshot[TenureMonths] < 3, "0-3 months",
    Employee_Snapshot[TenureMonths] < 12, "3-12 months",
    Employee_Snapshot[TenureMonths] < 24, "1-2 years",
    Employee_Snapshot[TenureMonths] < 60, "2-5 years",
    Employee_Snapshot[TenureMonths] < 120, "5-10 years",
    "10+ years"
)

// Average Tenure at Separation
Avg Tenure at Separation =
AVERAGEX(
    FILTER(Employee_Snapshot, Employee_Snapshot[Status] = "Terminated"),
    Employee_Snapshot[TenureMonths]
)

Abwesenheitsanalyse

Abwesenheits-KPIs

// Absence Rate (% of working days lost)
Absence Rate =
DIVIDE(
    SUM(Absence_Records[DaysAbsent]),
    [Headcount] * NETWORKDAYS(MIN(Date[Date]), MAX(Date[Date])),
    0
)

// Bradford Factor (frequency-weighted absence score)
// B = S² × D (S = absence episodes, D = total days)
Bradford Factor =
VAR Spells = COUNTROWS(Absence_Records)
VAR Days = SUM(Absence_Records[DaysAbsent])
RETURN Spells * Spells * Days

// Average Absence Days per Employee
Avg Absence Days =
DIVIDE(SUM(Absence_Records[DaysAbsent]), [Headcount], 0)

// Absence by Type (breakdown)
Medical Absence Days =
CALCULATE(
    SUM(Absence_Records[DaysAbsent]),
    Absence_Records[AbsenceType] = "Medical"
)

5-seitige HR-Dashboard-Architektur

Seite 1: Übersicht über die Belegschaft

  • KPI-Karte zur Mitarbeiterzahl (aktuell im Vergleich zum Vorjahr)
  • FTE-Mitarbeiterzahl (Ist vs. Ziel)
  • Mitarbeiterzahl nach Abteilung (Balkendiagramm)
  • Personalbestandstrend 12 Monate (Liniendiagramm)
  • Neueinstellungen vs. Kündigungen (Schmetterlings-/Vergleichsbalkendiagramm)
  • Geografische Karte der Mitarbeiterzahl

Seite 2: Umsatzanalyse

  • Annualisierte Fluktuationsrate (Messwert im Vergleich zum Branchen-Benchmark)
  • Freiwillig vs. unfreiwillig (Donut-Diagramm)
  • Umsatz nach Abteilung (sortiertes Balkendiagramm, höchstes zuerst)
  • Umsatz nach Tenure-Band (Histogramm)
  • Umsatztrend 24 Monate (Liniendiagramm)
  • Aufschlüsselung der Beendigungsgründe (Baumkarte)

Seite 3: Talentakquise

  • Time-to-Hire-Trend (Liniendiagramm pro Monat)
  • Angebotsannahmerate (KPI-Karte)
  • Einstellungen nach Quellkanal (Balkendiagramm)
  • Offene Stellenausschreibungen nach Abteilung (Tabelle)
  • Einstellungstrichter (von der Bewerbung bis zum Start)
  • Cost-per-Hire nach Abteilung

Seite 4: Vielfalt und Inklusion

  • Geschlechterverhältnis nach Level (gestapeltes Balkendiagramm)
  • Geschlechtsspezifisches Lohngefälle nach Abteilung (Balkendiagramm)
  • Trend zur Diversity-Einstellungsquote (Liniendiagramm)
  • Beförderungsrate nach Geschlecht (gruppierter Balken)
  • Team-Diversity-Index nach Manager

Seite 5: Abwesenheit & Wohlbefinden

  • Abwesenheitsrate nach Abteilung (Heatmap)
  • Verteilung des Bradford-Faktors
  • Abwesenheit nach Grund (Tortendiagramm)
  • Abwesenheitstrend (12-Monats-Liniendiagramm)
  • Streudiagramm der Korrelation zwischen Abwesenheit und Leistung

Häufig gestellte Fragen

Wie verbinde ich Power BI mit Workday oder SAP SuccessFactors?

Workday bietet ein Prism Analytics-Modul und eine REST-API, mit denen Power BI über den Web-Connector mithilfe der OAuth-Authentifizierung eine Verbindung herstellen kann. SAP SuccessFactors stellt OData-APIs für Mitarbeiterdaten bereit. Für beide Systeme lautet die empfohlene Architektur für große Unternehmen: HRIS → Fivetran- oder Talend-Pipeline → Snowflake/Azure Synapse → Power BI. Dadurch wird die analytische Ebene vom HRIS entkoppelt und Probleme mit der API-Ratenbegrenzung vermieden.

Wie schütze ich sensible Mitarbeiterdaten in Power BI?

Wenden Sie mehrere Schutzebenen an: Die Sicherheit auf Zeilenebene schränkt ein, welche Mitarbeiterdaten jeder Betrachter sieht (z. B. sehen Manager nur ihre direkten Untergebenen, HRBP sieht die ihnen zugewiesenen Geschäftseinheiten). Wenden Sie Microsoft Information Protection-Vertraulichkeitsbezeichnungen auf Datensätze an, die personenbezogene Daten enthalten. Zeigen Sie Gehaltsdaten niemals auf der Ebene einzelner Mitarbeiter in gemeinsamen Dashboards an. Unterdrücken Sie für Diversitätsanalysen Metriken für Gruppen mit weniger als 10 Mitarbeitern. Stellen Sie sicher, dass die Datenschutzrichtlinie Ihrer Organisation die Verwendung von People Analytics ausdrücklich zulässt.

Was ist der Unterschied zwischen Mitarbeiterzahl und FTE?

Beim Headcount werden die Mitarbeiter unabhängig von ihrer Arbeitszeit gezählt (ein Teilzeitmitarbeiter zählt als 1). FTE (Vollzeitäquivalent) gewichtet nach Arbeitsstunden – ein 50 % Teilzeitbeschäftigter zählt als 0,5 FTE. Verwenden Sie die Mitarbeiterzahl für absolute Mitarbeiterzahlen (z. B. „Wir haben 500 Mitarbeiter“). Verwenden Sie FTE für die Kapazitätsplanung und Kostenmodellierung (z. B. „Wir haben eine Kapazität von 430 FTE“). Beide Maßnahmen sind wichtig und dienen unterschiedlichen Zwecken.

Wie berechne ich die Fluktuationsrate richtig?

Fluktuationsrate = (Anzahl der Trennungen / durchschnittliche Mitarbeiterzahl) × 100. Der Schlüssel ist der Nenner – verwenden Sie den Durchschnitt der Anfangs- und Endmitarbeiterzahl für den Zeitraum, nicht nur die Endmitarbeiterzahl. Um den rollierenden 12-Monats-Umsatz zu ermitteln, addieren Sie die Trennungen der letzten 12 Monate und dividieren Sie sie durch die durchschnittliche Mitarbeiterzahl der letzten 12 Monate. Viele Unternehmen verwenden fälschlicherweise die endgültige Mitarbeiterzahl, was den Umsatz in wachsenden Unternehmen in die Höhe treibt.

Kann Power BI das Fluktuationsrisiko für einzelne Mitarbeiter vorhersagen?

Mit Azure Machine Learning-Integration ja. Erstellen Sie in Azure ML ein Fluktuationsvorhersagemodell unter Verwendung historischer Funktionen (Beschäftigung, Leistungsbewertung, Engagement-Score, Datum der letzten Beförderung, Gehalt im Vergleich zum Markt, Managerbewertung) und geben Sie für jeden aktuellen Mitarbeiter einen Fluktuationswahrscheinlichkeitswert aus. Verbinden Sie diese Bewertung mit Power BI und zeigen Sie sie in einem Manager-Dashboard an, das das Abwanderungsrisiko ihres Teams zeigt – was proaktive Gespräche über die Mitarbeiterbindung ermöglicht, bevor Mitarbeiter kündigen.


Nächste Schritte

HR-Analysen in Power BI ermöglichen Personalleitern die gleiche datengesteuerte Entscheidungsfindung, die Finanz- und Vertriebsteams seit Jahren nutzen. Wenn Sie wissen, wer aus welchen Teams ausscheidet, warum und mit welcher Amtszeit, können Sie in der Personalabteilung früher eingreifen und die Talente behalten, die am wichtigsten sind.

Das Power BI-Team von ECOSIRE erstellt komplette HR-Analyseplattformen – vom HRIS-Datenpipeline-Design bis hin zu interaktiven People Analytics-Dashboards mit entsprechenden Datenschutzkontrollen und rollenbasiertem Zugriff.

Entdecken Sie unsere Power BI-Dashboard-Entwicklungsdienste, um unseren HR-Analytics-Ansatz zu verstehen, oder kontaktieren Sie unser Team, um Ihre Workforce-Analytics-Anforderungen und Datenquellen zu besprechen.

E

Geschrieben von

ECOSIRE Research and Development Team

Entwicklung von Enterprise-Digitalprodukten bei ECOSIRE. Einblicke in Odoo-Integrationen, E-Commerce-Automatisierung und KI-gestützte Geschäftslösungen.

Chatten Sie auf WhatsApp