Forum Discussion
WMart_AMS
6 months agoFrequent Visitor
Generate a column for dates between start dates (list/ pivot?)
Hi all, I am looking for a solution in power query for the following. I have an overview with shipping and return costs per year, country and channel. the costs change every now and then. m...
- 6 months ago
Hi,
ich hoffe, die Datenqualität ist im Original besser...;)
So wie ich das verstanden habe, könntest Du das folgendermaßen lösen:
Abfrage 1: Alle Versandkosten:
M-Code:
let Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content], Tarifspalten = Table.ColumnNames(Quelle), #"Entfernte oberste Elemente" = List.Skip(Tarifspalten,2), #"In Tabelle konvertiert" = Table.FromList(#"Entfernte oberste Elemente", Splitter.SplitTextByDelimiter(" "), null, null, ExtraValues.Error), #"Gefilterte Zeilen" = Table.SelectRows(#"In Tabelle konvertiert", each ([Column1] = "Rückgabekosten")), ColToDel = Table.AddColumn(#"Gefilterte Zeilen", "Relevant", each [Column1] & " " & [Column2])[Relevant], #"Entfernte Spalten" = Table.RemoveColumns(Quelle,ColToDel), #"Entpivotierte Spalten" = Table.UnpivotOtherColumns(#"Entfernte Spalten", {"CountryID", "Kanal"}, "Attribut", "Wert"), #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Entpivotierte Spalten", "Attribut", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Tarif", "Datum"}) in #"Spalte nach Trennzeichen teilen"Abfrage 2: Alle Rückgaben, an die die Versanddaten angehängt werden. (Natürlich kann man das auch in einer Abfrage erledigen, aber so wird es hoffentlich klarer)
M-Code:
let Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content], Tarifspalten = Table.ColumnNames(Quelle), #"Entfernte oberste Elemente" = List.Skip(Tarifspalten,2), #"In Tabelle konvertiert" = Table.FromList(#"Entfernte oberste Elemente", Splitter.SplitTextByDelimiter(" "), null, null, ExtraValues.Error), #"Gefilterte Zeilen" = Table.SelectRows(#"In Tabelle konvertiert", each ([Column1] = "Versandkosten")), ColToDel = Table.AddColumn(#"Gefilterte Zeilen", "Relevant", each [Column1] & " " & [Column2])[Relevant], #"Entfernte Spalten" = Table.RemoveColumns(Quelle,ColToDel), #"Entpivotierte Spalten" = Table.UnpivotOtherColumns(#"Entfernte Spalten", {"CountryID", "Kanal"}, "Attribut", "Wert"), #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Entpivotierte Spalten", "Attribut", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Tarif", "Datum"}), #"Angefügte Abfrage" = Table.Combine({#"Spalte nach Trennzeichen teilen", TarifVersand}) in #"Angefügte Abfrage"Hier kannst Du die Beispieldatei herunterladen.
- 6 months ago
let fx_dates = (s, e) => List.Generate(() => s, (x) => x < e, (x) => Date.AddMonths(x, 1)), Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], eff_dates = List.Buffer( List.Sort( List.Distinct( List.Transform( List.Skip(Table.ColumnNames(Source), 2), (x) => Date.From(Text.AfterDelimiter(x, "cost "), "de") ) ) ) & {Date.StartOfMonth(Date.AddMonths(Date.From(DateTime.LocalNow()), 2))} ), all_dates = List.Buffer( List.Transform( List.RemoveLastN(List.Positions(eff_dates)), (x) => fx_dates(eff_dates{x}, eff_dates{x + 1}) ) ), upvt = Table.UnpivotOtherColumns(Source, {"CountryID", "Channel"}, "Attribute", "Tarif"), split = Table.SplitColumn(upvt, "Attribute", Splitter.SplitTextByDelimiter(" cost "), {"Cost type", "Date"}), tx = Table.TransformColumns( split, { {"Date", (x) => all_dates{List.PositionOf(eff_dates, Date.From(x, "de"))}}, {"Tarif", (x) => Value.FromText(x, "de")} } ), z = Table.ExpandListColumn(tx, "Date") in z
v-hashadapu
6 months agoCommunity Support
Hi WMart_AMS , Hope you are doing well. Kindly let us know if the issue has been resolved or if further assistance is needed. Your input could be helpful to others in the community.