// ============================================================ // 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