Commit pending finance and Power BI work
This commit is contained in:
@@ -0,0 +1,440 @@
|
||||
# Handoff Power BI HR KPI - 2026-05-11
|
||||
|
||||
## Kontext
|
||||
|
||||
Ziel ist ein Power-BI-Dashboard fuer HR-KPIs Schweiz. HR soll das Dashboard konsumieren, nicht selbst bauen. Die Daten sollen aus SAP und mehreren Rexx-Exports in Power BI zusammengefuehrt werden.
|
||||
|
||||
Der aktuelle Fokus ist Phase 1: Zeit und Absenzen, insbesondere Krankheit, Unfall, Ferien, GLZ/Saldo und Vergleich der Quoten mit SAP.
|
||||
|
||||
## Dateien im Projektordner
|
||||
|
||||
Arbeitsordner:
|
||||
|
||||
```text
|
||||
C:\Users\koi\source\repos\Ai\Powerbi
|
||||
```
|
||||
|
||||
Vorhandene Dateien:
|
||||
|
||||
```text
|
||||
HR_KPI_Formeln_CH.xlsx
|
||||
infos.txt
|
||||
infos2.txt
|
||||
```
|
||||
|
||||
`infos.txt` und `infos2.txt` wurden gelesen. Sie enthalten den bisherigen Chat-/Projektverlauf zum HR-KPI-Dashboard.
|
||||
|
||||
## Relevante Exportdateien in C:\temp
|
||||
|
||||
In `C:\temp` wurden relevante SAP- und Rexx-Dateien gefunden:
|
||||
|
||||
```text
|
||||
C:\temp\HR_KPI_EXPORT.xlsx
|
||||
C:\temp\Abwesenheitinstunden.xlsx
|
||||
C:\temp\Exportkommengehen.xlsx
|
||||
C:\temp\Saldiperstichdatum.xlsx
|
||||
C:\temp\Saldistundenferien.xlsx
|
||||
C:\temp\Personalausgeschieden.xlsx
|
||||
```
|
||||
|
||||
Wichtige Beobachtung: `HR_KPI_EXPORT.xlsx` wirkt wie ein SAP-Live-Export. Die ersten gelesenen Daten waren fuer `Geschäftsjahr = 2026` und `Buchungsperiode = 4`, also April 2026. Fuer den von HR gewuenschten Test Q1/2026 muessen vermutlich SAP-Daten fuer Perioden 1, 2 und 3 exportiert bzw. bereitgestellt werden.
|
||||
|
||||
## Vorhandene Formelmappe
|
||||
|
||||
Datei:
|
||||
|
||||
```text
|
||||
C:\Users\koi\source\repos\Ai\Powerbi\HR_KPI_Formeln_CH.xlsx
|
||||
```
|
||||
|
||||
Sheets:
|
||||
|
||||
```text
|
||||
KPI_Formeln
|
||||
Beispielrechnung
|
||||
PowerBI_Mapping
|
||||
```
|
||||
|
||||
Diese Datei ist aktuell eine Formel-/Beispielmappe, keine Live-Datendatei.
|
||||
|
||||
### Inhalt KPI_Formeln
|
||||
|
||||
Enthaelt mathematische Definitionen fuer:
|
||||
|
||||
- Krankheitstage je Mitarbeitenden
|
||||
- Krankheitstage gesamt
|
||||
- Krankheitsquote %
|
||||
- Unfallquote %
|
||||
- Gesundheitsbedingte Absenzen %
|
||||
- Soll-Arbeitszeit %
|
||||
- FTE
|
||||
- allgemeine Prozentanteile
|
||||
|
||||
Wichtige Formelidee:
|
||||
|
||||
```text
|
||||
Krankheitstage je Mitarbeitenden = Krankheitsstunden / persoenliche Sollzeit pro Tag
|
||||
Krankheitsquote % = Summe Krankheitsstunden / Summe Soll-Arbeitsstunden * 100
|
||||
Unfallquote % = (BU-Stunden + NBU-Stunden) / Summe Soll-Arbeitsstunden * 100
|
||||
Gesundheitsbedingte Absenzen % = (Krankheit + BU + NBU) / Sollstunden * 100
|
||||
```
|
||||
|
||||
### Inhalt Beispielrechnung
|
||||
|
||||
Enthaelt Beispielwerte fuer drei Mitarbeitende:
|
||||
|
||||
- Vollzeit
|
||||
- Teilzeit 50%
|
||||
- 80%
|
||||
|
||||
Diese Beispielrechnung dient zum Validieren der Formellogik.
|
||||
|
||||
### Inhalt PowerBI_Mapping
|
||||
|
||||
Enthaelt Mapping von KPI auf Power-BI-Felder/Measures, z.B.:
|
||||
|
||||
- `Rexx_Absenzen[Krankheit_Gesamt_Std]`
|
||||
- `M_Krankheitstage_Gesamt`
|
||||
- `M_Gesundheitsbedingte_Absenzen_Prozent`
|
||||
- `HR_KPI_Daten[FTE]`
|
||||
|
||||
## Architekturentscheidung
|
||||
|
||||
SAP und Rexx werden nicht in SAP zusammengefuehrt.
|
||||
|
||||
Stattdessen:
|
||||
|
||||
```text
|
||||
SAP CSV/XLSX + mehrere Rexx XLSX/CSV + manuelle Excel-Dateien
|
||||
werden in Power BI ueber Personalnummer/PERNR zusammengefuehrt.
|
||||
```
|
||||
|
||||
### SAP-Report
|
||||
|
||||
Der SAP-Report `Z_HR_KPI_CONSOLIDATE` liefert nur SAP-Daten:
|
||||
|
||||
- Stammdaten
|
||||
- Organisation/Kostenstelle
|
||||
- Beschaeftigungsgrad/FTE
|
||||
- Ein-/Austritt
|
||||
- Lohn
|
||||
- SAP-Abwesenheiten
|
||||
- Stellenplan
|
||||
- CSV-/Excel-Export fuer Power BI
|
||||
|
||||
Rexx-Daten werden nicht aus SAP extrahiert. Rexx-Felder im SAP-Report sind nur Platzhalter bzw. sollten langfristig eher separat aus Rexx kommen.
|
||||
|
||||
### Rexx
|
||||
|
||||
Rexx kann nicht alles in einem Export liefern, da pro Export maximal ca. 40 Felder moeglich sind. Daher werden thematische Exports benoetigt:
|
||||
|
||||
- Abwesenheiten/Krankheit
|
||||
- Ferien
|
||||
- GLZ/Salden/Ueberstunden
|
||||
- Austritte/Fluktuation
|
||||
- Pulsumfrage/Zufriedenheit
|
||||
- ggf. weitere Themen
|
||||
|
||||
## Gelesene Spalten aus den Live-/Exportdateien
|
||||
|
||||
### C:\temp\HR_KPI_EXPORT.xlsx
|
||||
|
||||
Sheet:
|
||||
|
||||
```text
|
||||
Data
|
||||
```
|
||||
|
||||
Dimension:
|
||||
|
||||
```text
|
||||
A1:AK1139
|
||||
```
|
||||
|
||||
Relevante Spalten aus Zeile 1:
|
||||
|
||||
```text
|
||||
Personalnummer
|
||||
Geschäftsjahr
|
||||
Buchungsperiode
|
||||
Buchungskreis
|
||||
Personalbereich
|
||||
Personalteilbereich
|
||||
Kostenstelle
|
||||
Organisationseinheit
|
||||
Planstelle
|
||||
Stellenschlüssel
|
||||
Mitarbeiterkreis
|
||||
Abrechnungskreis
|
||||
Teilzeitkraft
|
||||
Mitarbeitergruppe
|
||||
Beschäftigungsgrad %
|
||||
Vorname
|
||||
Nachname
|
||||
Geschlecht
|
||||
Geburtsdatum
|
||||
Datum
|
||||
Datum
|
||||
Bruttolohn Monat
|
||||
Krankheitstage gesamt
|
||||
Krankheit < 60 Tage
|
||||
Krankheit >= 60 Tage (LZK)
|
||||
Nichtberufsunfall Tage
|
||||
Berufsunfall Tage
|
||||
Soll-Stelle vorhanden
|
||||
Pulsumfrage Score (Rexx)
|
||||
MA-Zufriedenheit (Rexx)
|
||||
Kununu Score
|
||||
Angelegt am
|
||||
Uhrzeit
|
||||
Angelegt von
|
||||
```
|
||||
|
||||
Beispiel aus den ersten Datenzeilen:
|
||||
|
||||
```text
|
||||
Personalnummer 2005, Geschäftsjahr 2026, Buchungsperiode 4
|
||||
Personalnummer 2010, Geschäftsjahr 2026, Buchungsperiode 4
|
||||
Personalnummer 2012, Geschäftsjahr 2026, Buchungsperiode 4
|
||||
```
|
||||
|
||||
Hinweis: Fuer Q1/2026 brauchen wir Perioden 1, 2, 3 oder einen Q1-Gesamtexport.
|
||||
|
||||
### C:\temp\Abwesenheitinstunden.xlsx
|
||||
|
||||
Sheet:
|
||||
|
||||
```text
|
||||
Abwesenheit in Stunden
|
||||
```
|
||||
|
||||
Dimension:
|
||||
|
||||
```text
|
||||
A1:Z253
|
||||
```
|
||||
|
||||
Spalten:
|
||||
|
||||
```text
|
||||
Personalnummer
|
||||
Foto rund
|
||||
Nachname, Vorname (Link Personal)
|
||||
Stelle
|
||||
Organisation
|
||||
Leitung j/n
|
||||
Eintrittsdatum
|
||||
Personal Status
|
||||
Krank nicht buchbar angetreten (Stunden Ind.)
|
||||
Krankheit angetreten (Stunden Ind.)
|
||||
Krank nicht buchbar angetreten (Stunden)
|
||||
Krankheit angetreten (Stunden)
|
||||
Krank nicht buchbar angetreten (Zeitraum)
|
||||
Krankheit angetreten (Zeitraum)
|
||||
Krank nicht buchbar ausstehend (Stunden Ind.)
|
||||
Krankheit ausstehend (Stunden Ind.)
|
||||
Krank nicht buchbar gebucht gesamt (Stunden)
|
||||
Krankheit genehmigt (Zeitraum)
|
||||
Krank nicht buchbar genehmigt (Zeitraum)
|
||||
Krankheit genehmigt (Stunden)
|
||||
Krank nicht buchbar genehmigt (Stunden)
|
||||
Krankheit genehmigt (Stunden Ind.)
|
||||
Krank nicht buchbar genehmigt (Stunden Ind.)
|
||||
Krankheit gebucht gesamt (Stunden)
|
||||
Krankheit gebucht gesamt (Stunden Ind.)
|
||||
Krank nicht buchbar gebucht gesamt (Stunden Ind.)
|
||||
```
|
||||
|
||||
Wichtig: Rexx liefert Krankheit in Stunden. Laut Projektentscheidung ist Rexx fuer Krankheit/Absenzen fuehrend, weil SAP nur Tage liefert.
|
||||
|
||||
### C:\temp\Exportkommengehen.xlsx
|
||||
|
||||
Sheet:
|
||||
|
||||
```text
|
||||
Export KOMMENGEHEN
|
||||
```
|
||||
|
||||
Dimension:
|
||||
|
||||
```text
|
||||
A1:O253
|
||||
```
|
||||
|
||||
Spalten:
|
||||
|
||||
```text
|
||||
Sozialversicherungsnummer
|
||||
Nachname, Vorname (Link Personal)
|
||||
Geburtsdatum
|
||||
Personal Status
|
||||
Stelle
|
||||
Organisation
|
||||
Arbeitszeitmodell
|
||||
Arbeitszeit
|
||||
Ø tägliche Sollarbeitszeit (Woche)
|
||||
Arbeitszeit Mo.
|
||||
Arbeitszeit Di.
|
||||
Arbeitszeit Mi.
|
||||
Arbeitszeit Do.
|
||||
Arbeitszeit Fr.
|
||||
Arbeitszeit Sa.
|
||||
```
|
||||
|
||||
Wichtig: Dieser Export enthaelt keine Personalnummer, sondern Sozialversicherungsnummer und Namen. Fuer stabile Power-BI-Joins ist Personalnummer besser. Falls moeglich, Rexx-Export um `Personalnummer` ergaenzen.
|
||||
|
||||
### C:\temp\Saldiperstichdatum.xlsx
|
||||
|
||||
Sheet:
|
||||
|
||||
```text
|
||||
Saldi per Stichdatum
|
||||
```
|
||||
|
||||
Dimension:
|
||||
|
||||
```text
|
||||
A1:Q253
|
||||
```
|
||||
|
||||
Spalten:
|
||||
|
||||
```text
|
||||
Personalnummer
|
||||
Kürzel
|
||||
Nachname, Vorname (Link Personal)
|
||||
Stelle
|
||||
Organisation
|
||||
Kostenstelle
|
||||
Leitung j/n
|
||||
Eintrittsdatum
|
||||
Personal Status
|
||||
Anstellungsverhältnis
|
||||
Stunden Saldo
|
||||
Urlaubsanspruch
|
||||
Urlaub Rest
|
||||
Ferien ausstehend (Tage)
|
||||
Lohnart
|
||||
Lohn
|
||||
Lohn Währung
|
||||
```
|
||||
|
||||
Dieser Export ist wichtig fuer:
|
||||
|
||||
- GLZ/Stunden Saldo
|
||||
- Ferienanspruch
|
||||
- Urlaub Rest
|
||||
- Ferien ausstehend
|
||||
- ggf. Lohn aus Rexx, wobei SAP fuer Lohn fuehrend/sensibler sein sollte
|
||||
|
||||
## Fachliche Entscheidungen aus den TXT-Dateien
|
||||
|
||||
- HR soll das Dashboard konsumieren, nicht bauen.
|
||||
- Phase 1 ist Zeit und Absenzen.
|
||||
- Rexx ist fuer Krankheit/Absenzen fuehrend.
|
||||
- SAP liefert ergaenzende Basisdaten, die Rexx nicht sauber oder nicht vollstaendig liefert.
|
||||
- Kununu wird manuell gepflegt.
|
||||
- Refline/Time-to-hire ist spaeteres Thema.
|
||||
- Rexx Scheduled Reports wurden gesucht, aber offenbar nicht gefunden/freigeschaltet.
|
||||
- Manuelles Ablegen der Exports in einem Ordner ist fuer den Start akzeptabel.
|
||||
|
||||
## Welche Daten nur aus SAP kommen
|
||||
|
||||
Diese Felder sind wichtig und kommen eher aus SAP als aus Rexx:
|
||||
|
||||
- Geschlecht
|
||||
- Beschaeftigungsgrad %
|
||||
- FTE-Grundlage
|
||||
- Mitarbeitergruppe/Mitarbeiterkreis
|
||||
- Planstelle/Stellenschluessel
|
||||
- Soll-Stelle vorhanden
|
||||
- Bruttolohn Monat
|
||||
- SAP-Abwesenheiten fuer Vergleich
|
||||
- BU-/NBU-Tage, falls nicht in Rexx als Stunden vorhanden
|
||||
|
||||
## Welche Daten aus Rexx kommen
|
||||
|
||||
Rexx ist wichtig fuer:
|
||||
|
||||
- Krankheit in Stunden
|
||||
- Krankheit genehmigt/gebucht/angetreten/ausstehend
|
||||
- GLZ/Stunden Saldo
|
||||
- Ferienanspruch
|
||||
- Urlaub Rest
|
||||
- Ferien ausstehend
|
||||
- Organisation/Kostenstelle aus Rexx fuer operative Sicht
|
||||
- ggf. Pulsumfrage/Zufriedenheit
|
||||
|
||||
## Q1/2026-Test mit Live-Daten
|
||||
|
||||
HR-Anfrage:
|
||||
|
||||
> Waere es moeglich, dass wir mit den Live Daten das Q1/2026 testen koennten? Dann koennten wir die Quoten mit jenen aus dem SAP vergleichen um zu pruefen, ob wir die identischen Formeln haben.
|
||||
|
||||
Interpretation:
|
||||
|
||||
Es soll mit Live-Daten fuer Q1/2026 gerechnet werden:
|
||||
|
||||
```text
|
||||
Januar 2026
|
||||
Februar 2026
|
||||
Maerz 2026
|
||||
```
|
||||
|
||||
Dann sollen die berechneten Quoten gegen SAP verglichen werden.
|
||||
|
||||
### Noetige Daten fuer Q1/2026
|
||||
|
||||
Aus SAP:
|
||||
|
||||
- Export fuer Perioden 1, 2, 3 im Jahr 2026
|
||||
- oder ein Export, der Q1 kumuliert enthaelt
|
||||
|
||||
Aus Rexx:
|
||||
|
||||
- Abwesenheit/Krankheit mit Zeitraum Q1/2026
|
||||
- Sollzeit pro Mitarbeitenden fuer Q1/2026
|
||||
- optional BU/NBU, falls Rexx das liefert
|
||||
- GLZ/Ferien nur falls fuer den Q1-Vergleich benoetigt
|
||||
|
||||
### Kritischer Punkt
|
||||
|
||||
Die aktuell gefundene SAP-Datei `C:\temp\HR_KPI_EXPORT.xlsx` zeigt in den ersten Datenzeilen Periode 4/2026. Das reicht nicht fuer Q1/2026.
|
||||
|
||||
Naechster sinnvoller Schritt:
|
||||
|
||||
1. SAP-Report fuer Q1/2026 laufen lassen, also Perioden 1 bis 3 oder Q1-Gesamt.
|
||||
2. Rexx-Abwesenheitsexport ebenfalls fuer Q1/2026 ziehen.
|
||||
3. Power-BI-/Excel-Testdatei erstellen, die beide Quellen ueber Personalnummer verbindet.
|
||||
4. Quoten berechnen:
|
||||
- Krankheitsquote %
|
||||
- Unfallquote %
|
||||
- Gesundheitsbedingte Absenzen %
|
||||
- Krankheitstage gesamt
|
||||
5. Ergebnis mit SAP-Quote vergleichen.
|
||||
|
||||
## Technische Hinweise aus dieser Session
|
||||
|
||||
Excel-Dateien wurden nicht ueber Excel-GUI bearbeitet, sondern als XLSX-Zip/XML gelesen. Das vermeidet Dateisperren.
|
||||
|
||||
Ein Versuch mit Excel-COM hing und wurde abgebrochen. Danach wurde ein unsichtbarer Excel-Prozess geprueft. Beim Beenden war der Prozess bereits nicht mehr vorhanden. Es wurden keine Excel-Dateien gespeichert oder veraendert.
|
||||
|
||||
In dieser Session wurde bis zur Erstellung dieser Handoff-Datei keine vorhandene Excel-Datei manipuliert.
|
||||
|
||||
## Empfohlene Antwort an HR
|
||||
|
||||
Vorschlag:
|
||||
|
||||
```text
|
||||
Ja, das koennen wir machen. Fuer den Q1/2026-Test brauche ich die Live-Exports fuer Januar bis Maerz 2026 bzw. einen Q1-Gesamtexport aus SAP sowie den passenden Rexx-Abwesenheitsexport fuer denselben Zeitraum. Dann berechne ich die Quoten mit unserer Formel und stelle sie den SAP-Werten gegenueber, damit wir Abweichungen in Definition oder Zeitraum sofort sehen.
|
||||
```
|
||||
|
||||
## Offene Punkte
|
||||
|
||||
- SAP-Q1/2026-Datei fehlt noch oder wurde noch nicht gefunden.
|
||||
- Rexx-Q1/2026-Abwesenheitsexport muss bereitgestellt werden.
|
||||
- Klaeren, ob `Exportkommengehen.xlsx` kuenftig Personalnummer enthalten kann. Ohne Personalnummer ist der Join unsauber.
|
||||
- Klaeren, ob BU/NBU in Rexx als Stunden verfuegbar ist oder fuer Unfallquote weiter aus SAP-Tagen umgerechnet werden muss.
|
||||
- Definieren, ob Q1-Quote mit Sollstunden aus Kalender/SAP oder Rexx-Sollarbeitszeit gerechnet wird.
|
||||
- Sicherstellen, dass alle Dateien denselben Zeitraum abdecken.
|
||||
|
||||
Reference in New Issue
Block a user