9.8 KiB
HR-KPI-Pruefung gegen Schweizer Praxis und HR-Best-Practices
Stand: 2026-05-13
Zweck dieses Dokuments:
- fachliche Pruefpunkte fuer den neuen Reiter
HR KPIsammeln - keine Codeaenderung ausloesen
- sichtbar machen, welche Kennzahlen bereits plausibel sind und wo vor produktiver Nutzung noch HR-/Fachentscheid noetig ist
Quellen und Massstab
Verwendeter Massstab:
- Schweizer Absenzverstaendnis gemaess BFS/AVOL: Absenzen sind Zeiten, in denen eine Person normalerweise haette arbeiten muessen, aber nicht gearbeitet hat. Ferien/Feiertage und flexible Arbeitszeitreduktionen sind keine Absenzen.
- Obsan/BFS-Definition fuer gesundheitsbedingte Absenzen: Krankheit und Unfall; Absenzenquote = Absenzen als Prozent der vertraglich festgelegten Jahresarbeitszeit.
- Internationale HR-Controlling-Praxis fuer Fluktuation: Austritte im Zeitraum geteilt durch durchschnittlichen Headcount im Zeitraum. Freiwillige und unfreiwillige Austritte sollten getrennt ausgewiesen werden.
Referenzen:
- BFS Arbeitsvolumenstatistik / Definitionen: https://www.bfs.admin.ch/bfs/de/home/statistiken/arbeit-erwerb/erhebungen/avol.html
- Obsan/BFS Absenzen Krankheit/Unfall: https://ind.obsan.admin.ch/de/indicator/pflemo/absenzen-durch-krankheitunfall
- BAG/Obsan MonAM Absenzen Krankheit/Unfall: https://ind.obsan.admin.ch/fr/indicator/monam/absences-au-travail-pour-cause-de-maladie-ou-d-accident-age-15
- CIPD Retention/Turnover Guidance: https://www.cipd.org/en/knowledge/guides/employee-retention/
- SHRM-nahe Turnover-Formel, oeffentlich referenziert: Separations / Average Employees * 100
Aktueller Umsetzungsstand im Reiter
Der Reiter liest aktuell:
C:\temp\Saldiperstichdatum.xlsxals Hauptquelle Rexx #757C:\temp\Exportkommengehen.xlsxfuer Geburtsdatum / ArbeitszeitmodellC:\temp\HR_KPI_Export.xlsxfuer SAP-FelderC:\temp\Abwesenheitinstunden.xlsxfuer Krankheit/Absenzen aus Rexx #744C:\temp\Personalausgeschieden.xlsxfuer Austritte/Fluktuation aus Rexx #381
Die Power-Query-/DAX-Logik wurde nicht als Interpreter umgesetzt, sondern als C#-Nachbau.
Pruefpunkte mit moeglicher Abweichung
1. Fluktuationsnenner: Stichtags-Headcount statt Durchschnitt
Aktueller Reiter:
Headcount Festangestelltwird aus dem aktuell geladenen Stichtagsbestand gerechnet.Avg Headcount QuartalundAvg Headcount Jahrentsprechen aktuell faktisch ebenfalls diesem Stichtagswert.
Best Practice:
- Fluktuation sollte fuer Monat, Quartal und Jahr mit durchschnittlichem Headcount des jeweiligen Zeitraums gerechnet werden.
- Bei stabiler Belegschaft ist der Unterschied klein.
- Bei Wachstum, Abbau oder saisonalen Schwankungen kann der Unterschied relevant sein.
Pruefen:
- Liefert Rexx/SAP monatliche Headcount-Snapshots?
- Falls ja: Monatsdurchschnitt fuer Quartal/Jahr berechnen.
- Falls nein: UI klar als
Stichtagsnahe FluktuationoderNaeherungbeschriften.
Status:
- fachlich akzeptabel als erste Naeherung
- fuer offizielles HR-Reporting noch zu bestaetigen
2. Freiwillige vs. unfreiwillige Austritte
Aktueller Reiter:
Ist_Arbeitnehmerkuendigungversucht freiwillige Arbeitnehmer-/Mitarbeiterkuendigungen anhand Textmustern zu erkennen.- Praktikanten, Werkstudenten, Aushilfen, Lehrlinge, Pensionierungen, befristete Vertraege und Kuendigungen durch Trafag werden ausgeschlossen.
Best Practice:
- Total Turnover und Voluntary Turnover getrennt ausweisen.
- Fuer Retention ist freiwillige Fluktuation meist entscheidender als Gesamtaustritte.
Pruefen:
- Sind alle Rexx-Austrittsarten stabil und vollstaendig gemappt?
- Gibt es lokale Schreibweisen wie
Kdg AN,Eigenkuendigung,Aufhebungsvereinbarung,Mutual agreement,Ende Probezeit? - Soll
Aufhebungsvereinbarungzaehlen oder separat ausgewiesen werden?
Status:
- HR-gepruefte Grundlogik vorhanden
- Mappingliste muss bei neuen Austrittsarten gepflegt/validiert werden
3. Fluktuation Quartal/Jahr bei nur einem aktuellen Bestand
Aktueller Reiter:
- Quartals-/Jahresraten werden ueber Austrittsdatum gefiltert.
- Headcount bleibt aktueller Stichtagsbestand.
Risiko:
- Wenn der aktuelle Bestand z. B. Ende Jahr niedriger/hoeher ist als im Quartal, verzerrt das die historische Rate.
Pruefen:
- Fuer Quartal/Jahr entweder echte historische Headcounts laden oder die Kennzahl explizit als operative Naeherung fuehren.
Status:
- Darstellung gut fuer operatives Cockpit
- nicht automatisch als auditierbare Jahreskennzahl verwenden
4. Absenzenquote: 21 Arbeitstage pauschal
Aktueller Reiter:
- Krankheitstage = Stunden / 8.4
- Krankenquote je Mitarbeiter = Krankheitstage / 21
- Gesamtquote = Krankheitstage / (Headcount * 21)
Schweizer/BFS-nahe Praxis:
- Absenzenquote wird als Dauer der Absenzen in Prozent der vertraglich festgelegten Arbeitszeit berechnet.
- Bei Teilzeit und unterschiedlichen Sollzeiten sollte der Nenner aus Sollarbeitszeit/Solltagen kommen.
Pruefen:
- Soll der Nenner pro Person aus
Avg_Sollzeit_Tag, Arbeitszeitmodell oder Beschaeftigungsgrad berechnet werden? - Fuer Teilzeit nicht pauschal 21 Vollzeittage verwenden, falls die Quote offiziell sein soll.
- Krankheit und Unfall separat ausweisen, wenn Datenquelle das erlaubt.
Status:
- 21-Tage-Naeherung gut fuer schnelle Sicht
- fuer Schweizer Standard-Absenzquote fachlich zu ungenau
5. Krankheit kurz/lang Definition
Aktueller Reiter:
Krankheit angetreten= kurzKrank nicht buchbar angetreten= lang- Umrechnung pauschal Stunden / 8.4
Pruefen:
- Bedeutet
Krank nicht buchbarfachlich wirklich Langzeitkrankheit? - Oder ist es ein Buchungs-/Workflowstatus?
- HR muss bestaetigen, ob diese Felder Kurz-/Langzeitkrankheit abbilden.
Status:
- benoetigt HR-/Rexx-Felddefinition
6. Unfalltage aus SAP vs. Rexx-Absenzen
Aktueller Reiter:
- Krankheit kommt aus Rexx-Stunden.
- BU/NBU kommt aus SAP-HR-KPI-Datei.
Pruefen:
- Sind BU/NBU in SAP und Krankheit in Rexx zeitlich gleich abgegrenzt?
- Sind Unfalltage in den Rexx-Krankheitsstunden enthalten oder getrennt?
- Gibt es Doppelzaehlung, wenn Krankheit/Unfall spaeter zusammengefuehrt werden?
Status:
- getrennte Anzeige ist korrekt
- Gesamtabsenzquote aus Krankheit + Unfall erst nach Quellenabgleich bilden
7. FTE-Berechnung
Aktueller Reiter:
- FTE = Beschaeftigungsgrad aus SAP / 100.
- Wenn SAP-Wert fehlt: Vollzeit = 1, sonst 0.5.
Best Practice:
- FTE sollte aus vertraglichem Beschaeftigungsgrad oder Sollarbeitszeit pro Person kommen.
- Pauschal 0.5 fuer Nicht-Vollzeit ist nur Fallback.
Pruefen:
- Ist
Beschaeftigungsgrad %fuer alle aktiven Mitarbeitenden verfuegbar? - Wenn nein: kann Rexx
Arbeitszeitmodelloder Sollzeit genauer liefern?
Status:
- korrekt, wenn SAP-Datei vollstaendig ist
- Fallback fuer offizielle FTE zu grob
8. GLZ-Ampel 50/100 Stunden
Aktueller Reiter:
- Gruen: absolut <= 50h
- Gelb: absolut <= 100h
- Rot: absolut > 100h
Pruefen:
- Sind diese Schwellen HR-/GL-/Reglement-konform?
- Soll negative GLZ gleich behandelt werden wie positive?
- Gibt es unterschiedliche Regeln fuer Teilzeit?
Status:
- als Management-Ampel plausibel
- Schwellen fachlich bestaetigen lassen
9. Ferien-Rest-Ampel
Aktueller Reiter:
- Restferien <= 5 Tage = Gruen
-
5 Tage = Rot
Pruefen:
- Ist >5 Tage wirklich kritisch oder nur zum Jahresende relevant?
- Soll der Stichtag im Jahr beruecksichtigt werden?
- Soll Anspruch, bezogen, ausstehend und Rest getrennt nach Kalenderjahr gezeigt werden?
Status:
- sehr grobe Ampel
- saisonale Logik fehlt
10. Lohn / Datenschutz
Aktueller Reiter:
- Bruttolohn wird im Model geladen, aber aktuell nicht prominent als KPI angezeigt.
Pruefen:
- Darf Bruttolohn im HR-KPI-Reiter angezeigt werden?
- Falls ja: welche Rollen duerfen ihn sehen?
- Falls nein: Feld im UI konsequent ausblenden oder gar nicht laden.
Status:
- vor produktivem Einsatz mit Datenschutz/HR klaeren
11. Altersgruppen / Geschlecht
Aktueller Reiter:
- Alter und Geschlecht werden berechnet/gemappt.
- Noch keine spezifischen Diversity-/Altersstruktur-Kacheln.
Pruefen:
- Soll Geschlecht nach Schweizer Datenschutz-/HR-Kontext im Cockpit sichtbar sein?
- Aggregiert ja/nein?
- Mindestgruppengroessen fuer Anzeige definieren, damit keine Einzelpersonen ableitbar sind.
Status:
- Daten vorhanden
- Anzeige/Datenschutz noch nicht entschieden
12. Personalschluessel / Join-Qualitaet
Aktueller Reiter:
- Rexx #757 und SAP werden ueber Personalnummer verbunden.
- Rexx #732 wird ueber Name verbunden, weil keine Personalnummer vorhanden ist.
Risiko:
- Name-Join ist fehleranfaellig bei gleichen Namen, Namensaenderungen, Sonderzeichen oder Formatabweichungen.
Pruefen:
- Gibt es in #732 doch eine stabile ID?
- Falls nein: Join-Trefferquote anzeigen.
- Nicht gematchte Namen separat ausweisen.
Status:
- wichtigster technischer Qualitaetspruefpunkt
Empfohlene Mindestkontrollen vor produktiver Nutzung
- Kontrollwerte aus Power BI / HR gegen neuen Reiter vergleichen:
Austritte Total Rexx = 104Austritte Arbeitnehmerkuendigung = 42Austritte Fluktuationsrelevant = 33
- Headcount aktiv gegen Rexx/HR-Stichtagszahl vergleichen.
- FTE-Summe gegen SAP/HR vergleichen.
- Krankheitstage aus Rexx direkt gegen Export-Summe vergleichen.
- BU/NBU-Tage gegen SAP-Datei summieren.
- Stichprobe von mindestens 10 Mitarbeitenden pruefen:
- Personalnummer
- Organisation
- FTE
- GLZ
- Ferien Rest
- Krankheitstage
- Join-Qualitaet dokumentieren:
- Anzahl Rexx-Hauptzeilen
- Anzahl SAP-Treffer
- Anzahl #732-Name-Treffer
- Anzahl nicht gematcht
Empfehlung fuer die naechste Umsetzung
Noch keine Formel aendern, bevor die Kontrollwerte protokolliert sind.
Sinnvolle naechste technische Erweiterungen:
- Tab
Datenstatusum Join-Trefferquoten erweitern. - Tab
Fluktuationmit Kontrollwerten Power BI/HR anzeigen. - Absenzenquote optional auf vertragliche Sollzeit/FTE umstellen.
- Kennzahlen mit
Naeherungmarkieren, solange nur ein Stichtagsbestand statt historischer Monats-Snapshots vorhanden ist.