SUMMEWENNS/ZÄHLENWENNS und Pivot mit Uhrzeiten oder DatumZeiten sind rein mathematisch suboptimal, da gleitkommabedroht. In der Realität wird aber zumindest gewährleistet, dass die Anzahl-Summe über alle Gruppen stimmt.
Im Falle "TEXT" kann man nicht intervallieren.
Will man die Intervalle anders als die angebotenen Vorgaben in Pivot gestalten (z.B. 20 Minuten), dann sollte man die DatumZeiten z.B. x72 nehmen und dann runden oder kürzen.
Merke: Jede statistische Auswertung über DatumZeit unterliegt dem Gleitkommavorbehalt.
Hallo So den beschleunigten M-Code und komprimierten kompletten Code in einer Abfrage von 16:30 gepostet wurde, der bei mir um ein vielfaches schneller läuft.
Code:
let GZ = () => let in List.Zip({{Time.EndOfHour(#time(2, 45, 0)), Time.EndOfHour(#time(5, 45, 0)),Time.EndOfHour(#time(8, 45, 0)), Time.EndOfHour(#time(11, 45, 0)),Time.EndOfHour(#time(14, 45, 0)), Time.EndOfHour(#time(17, 45, 0)),Time.EndOfHour(#time(20, 45, 0)), Time.EndOfHour(#time(23, 45, 0))},{"00:00 - 02:59","03:00 - 05:59","06:00 - 08:59","09:00 - 11:59","12:00 - 14:59", "15:00 - 17:59","18:00 - 20:59", "21:00 - 23:59"}}), ZB = (x_Time as time) => let in GZ(){List.PositionOf(List.Transform(GZ(), each x_Time <= _{0}), true, Occurrence.First)}{1} in Table.InsertRows(Table.Buffer(Table.Combine({Table.AddColumn(Table.Pivot(Table.Group(Table.AddColumn(Table.SelectRows( Table.TransformColumnTypes(Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],{{"Datum", type date}, {"Uhrzeit", type time},{"KW", type number}, {"Tag", type text}}), each _[Datum] <> null), "Stundenbereich", each ZB([Uhrzeit])), {"Stundenbereich", "Tag"}, {{"Summe KW", each List.Sum([KW]), type nullable number}}),List.Transform({45474..45480}, each Date.DayOfWeekName(Date.From(_), "de-DE")), "Tag", "Summe KW", List.Sum), "G-Summe", each List.Sum(Record.ToList(Record.RemoveFields(_, {"Stundenbereich"})))), Table.FromRecords({[]})})), 9,{Record.FromList({"Ergebnis:"} & List.Accumulate(List.Transform({45474..45480}, each Date.DayOfWeekName(Date.From(_), "de-DE")) & {"G-Summe"},{},(st, cur)=> st & {List.Sum(Table.Column(Table.AddColumn(Table.Pivot( Table.Group(Table.AddColumn(Table.SelectRows(Table.TransformColumnTypes(Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],{ {"Datum", type date}, {"Uhrzeit", type time}, {"KW", type number}, {"Tag", type text}}), each _[Datum] <> null), "Stundenbereich", each ZB([Uhrzeit])), {"Stundenbereich", "Tag"}, {{"Summe KW", each List.Sum([KW]), type nullable number}}),List.Transform( {45474..45480}, each Date.DayOfWeekName(Date.From(_), "de-DE")), "Tag", "Summe KW", List.Sum), "G-Summe", each List.Sum( Record.ToList(Record.RemoveFields(_, {"Stundenbereich"})))), cur))}),Table.ColumnNames(Table.Buffer(Table.Combine({ Table.AddColumn(Table.Pivot(Table.Group(Table.AddColumn(Table.SelectRows(Table.TransformColumnTypes(Excel.CurrentWorkbook(){ [Name="Tabelle1"]}[Content],{{"Datum", type date}, {"Uhrzeit", type time}, {"KW", type number}, {"Tag", type text}}), each _[Datum] <> null), "Stundenbereich", each ZB([Uhrzeit])), {"Stundenbereich", "Tag"}, {{"Summe KW", each List.Sum([KW]), type nullable number}}),List.Transform({45474..45480}, each Date.DayOfWeekName(Date.From(_), "de-DE")), "Tag", "Summe KW", List.Sum), "G-Summe", each List.Sum(Record.ToList(Record.RemoveFields(_, {"Stundenbereich"})))), Table.FromRecords({[]})}))))})
schön - mal zu sehen, wie meine PQ-Lösung als verklumpter PQ-M-Code aussieht - aber leider hilft das in 1 Excel-Forum Niemanden: - der PQ-Einsteiger wird total verschreckt - und der PQ-Lernende muß das alles wieder in den Einzelschritt-Modus zurück transformieren - um zu begreifen, was da eigentlich alles passiert - doch diese Rückführung dürfte schon 1 große Hürde werden
Auf alle Fälle habe ich mir Gedanken gemacht, bestimmte Aktionen in M-Funktionen zu packen, anstatt sowas im M-Klumpen zu verstecken:
Code:
Table.AddColumn(c_02, "Time Group", each if Time.From([Uhrzeit]) <> null and Time.From([Uhrzeit]) >= #time(0, 0, 0) and Time.From([Uhrzeit]) < #time(3, 0, 0) then "00:00 - 03:00" else if Time.From([Uhrzeit]) <> null and Time.From([Uhrzeit]) >= #time(3,0, 0) and Time.From([Uhrzeit]) < #time(6, 0, 0) then "03:00 - 06:00" else if Time.From([Uhrzeit]) <> null and Time.From([Uhrzeit]) >= #time(6, 0, 0) and Time.From([Uhrzeit]) < #time(9, 0, 0) then "06:00 - 09:00" else if Time.From([Uhrzeit]) <> null and Time.From([Uhrzeit]) >= #time(9, 0, 0) and Time.From([Uhrzeit]) < #time(12, 0, 0) then "09:00 - 12:00" else if Time.From([Uhrzeit]) <> null and Time.From([Uhrzeit]) >= #time(12, 0, 0) and Time.From([Uhrzeit]) < #time(15, 0, 0) then "12:00 - 15:00" else if Time.From([Uhrzeit]) <> null and Time.From([Uhrzeit]) >= #time(15, 0, 0) and Time.From([Uhrzeit]) < #time(18, 0, 0) then "15:00 - 18:00" else if Time.From([Uhrzeit]) <> null and Time.From([Uhrzeit]) >= #time(18, 0, 0) and Time.From([Uhrzeit]) < #time(21, 0, 0) then "18:00 - 21:00" else if Time.From([Uhrzeit]) <> null and Time.From([Uhrzeit]) >= #time(21, 0, 0) and Time.From([Uhrzeit]) <= #time(23, 45, 0) then "21:00 - 23:45" else null),
Gruß von Luschi aus klein-Paris
Folgende(r) 1 Nutzer sagt Danke an Luschi für diesen Beitrag:1 Nutzer sagt Danke an Luschi für diesen Beitrag 28 • keniath
ermitteln. Mit einem Table-Join wwerden dann die Zeitfenster zugeordnet.
In einer 2. Version habe ich die eigentlich falschen Zuordnungen korrigiert. Denn die Erste Messung vom 1.9. 23 0:00 zeigt ja den Verbrauch der letzten Viertelstunde des 31.8.23. Somit müssen auch die Verbräuche von 3:00, 6;00, 9:00 ... jeweils dem vorherigen Zeitfenster zugeordnet werden.
Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:1 Nutzer sagt Danke an ws-53 für diesen Beitrag 28 • keniath
bei PIV sind sämtliche Ansprachen vergebliche Bemühungen. Selbst wenn Bill, persönlich, ihm sagen würde, dass diese Vorgehensweise Schwachsinn ist, dann würde er auch weiterhin diesen Schwachsinn betreiben. Denn er ist beratungsresistent und kann auch kein IT-ler sein, da ein IT-ler spätestens nach dem Ersten Änderungsbedarf diesen Unsinn aufgeben würde.
Aber verblendete gibt es halt in allen Bereichen. Wobei die verblendeten, die es in deiner Heimat gibt, mir mehr Sorgen bereiten, als der arme PIV.