Files
Ai/powerbi/REXX_aBSENZEN.txt
T

85 lines
4.0 KiB
Plaintext

// ============================================================
// QUERY 2: Rexx_Absenzen
// ============================================================
// Quelle: Abwesenheitinstunden.xlsx (Rexx #744)
// Krankheitsstunden Detail → fuehrend statt SAP-Tage
// ============================================================
let
Source = Excel.Workbook(File.Contents("C:\temp\Abwesenheitinstunden.xlsx"), null, true),
Data = Source{0}[Data],
Head = Table.PromoteHeaders(Data, [PromoteAllScalars = true]),
Sel = Table.SelectColumns(Head, {
"Personalnummer",
"Nachname, Vorname (Link Personal)",
"Stelle", "Organisation", "Leitung j/n", "Personal Status",
"Krankheit angetreten (Stunden Ind.)",
"Krank nicht buchbar angetreten (Stunden Ind.)",
"Krankheit angetreten (Zeitraum)",
"Krank nicht buchbar angetreten (Zeitraum)",
"Krankheit genehmigt (Stunden Ind.)",
"Krank nicht buchbar genehmigt (Stunden Ind.)",
"Krankheit gebucht gesamt (Stunden Ind.)",
"Krank nicht buchbar gebucht gesamt (Stunden Ind.)"
}),
Ren = Table.RenameColumns(Sel, {
{"Personalnummer", "PERNR_Text"},
{"Nachname, Vorname (Link Personal)", "Name"},
{"Stelle", "Stelle"},
{"Organisation", "Organisation"},
{"Leitung j/n", "Leitung"},
{"Personal Status", "Status"},
{"Krankheit angetreten (Stunden Ind.)", "Krankheit_Kurz_Std"},
{"Krank nicht buchbar angetreten (Stunden Ind.)", "Krankheit_Lang_Std"},
{"Krankheit angetreten (Zeitraum)", "Krankheit_Kurz_Zeitraum"},
{"Krank nicht buchbar angetreten (Zeitraum)", "Krankheit_Lang_Zeitraum"},
{"Krankheit genehmigt (Stunden Ind.)", "Krankheit_Kurz_Genehmigt"},
{"Krank nicht buchbar genehmigt (Stunden Ind.)", "Krankheit_Lang_Genehmigt"},
{"Krankheit gebucht gesamt (Stunden Ind.)", "Krankheit_Kurz_Gebucht"},
{"Krank nicht buchbar gebucht gesamt (Stunden Ind.)", "Krankheit_Lang_Gebucht"}
}),
AddPernr = Table.AddColumn(Ren, "Personalnummer", each
try Number.FromText(Text.Trim(Text.From([PERNR_Text]))) otherwise null, Int64.Type),
SetTypes = Table.TransformColumnTypes(AddPernr, {
{"Krankheit_Kurz_Std", type number},
{"Krankheit_Lang_Std", type number},
{"Krankheit_Kurz_Genehmigt", type number},
{"Krankheit_Lang_Genehmigt", type number},
{"Krankheit_Kurz_Gebucht", type number},
{"Krankheit_Lang_Gebucht", type number}
}),
// Gesamt-Krankheitsstunden
AddGes = Table.AddColumn(SetTypes, "Krankheit_Gesamt_Std", each
(if [Krankheit_Kurz_Std] = null then 0 else [Krankheit_Kurz_Std]) +
(if [Krankheit_Lang_Std] = null then 0 else [Krankheit_Lang_Std]),
type number),
// Krankheitstage (Stunden / 8.4h pro Tag)
AddKTG = Table.AddColumn(AddGes, "Krankheitstage_Gesamt", each
Number.Round([Krankheit_Gesamt_Std] / 8.4, 1), type number),
AddKTK = Table.AddColumn(AddKTG, "Krankheitstage_Kurz", each
let s = if [Krankheit_Kurz_Std] = null then 0 else [Krankheit_Kurz_Std] in
Number.Round(s / 8.4, 1), type number),
AddKTL = Table.AddColumn(AddKTK, "Krankheitstage_Lang", each
let s = if [Krankheit_Lang_Std] = null then 0 else [Krankheit_Lang_Std] in
Number.Round(s / 8.4, 1), type number),
// Krankenquote (kompatibel, Basis 21 Tage)
AddKQ = Table.AddColumn(AddKTL, "Krankenquote_MA", each
if [Krankheitstage_Gesamt] = 0 then 0 else [Krankheitstage_Gesamt] / 21, type number),
AddKQO = Table.AddColumn(AddKQ, "Krankenquote_ohne_LZK", each
if [Krankheitstage_Kurz] = 0 then 0 else [Krankheitstage_Kurz] / 21, type number),
AddAbs = Table.AddColumn(AddKQO, "Absenztage_Total", each [Krankheitstage_Gesamt], type number),
Filter = Table.SelectRows(AddAbs, each [Status] = "Aktiv"),
Clean = Table.RemoveColumns(Filter, {"PERNR_Text"}),
Reorder = Table.ReorderColumns(Clean, {"Personalnummer"} &
List.RemoveItems(Table.ColumnNames(Clean), {"Personalnummer"}))
in
Reorder