Neues Thema starten
Beantwortet

Tabelle Umformatieren - Wie Pivot bei Excel

Moin moin,


ich hätte eine Frage. Ich würde gerne eine Tabelle umformen. Konkret geht es um Tabellen, wie man sie rauskriegt, wenn man bei Plenty ein Format wie Variation_Prices zieht.


Dort bekommt man folgende Struktur:


VariationID;PriceID;Price

123;1;50

123;2;45

123;3;30

124;1;12

124;2;85

124;3;98


Ich würde gerne folgendes erhalten


VariationID;Price - ID1;Price - ID2; Price - ID3

123;50;45;30

124;12;85;98


Bis jetzt ist meine Idee, dass ganze per Filter und Datenbank zu machen - dazu brauche ich pro PriceID einen Filter und einen DatenWriter, der die Preise direkt in die Datenbank in ein entsprechendes Feld schreibt. Sprich:


Filtern nach PriceID == 1 -> Writer ordnet es anhand Idtenfier = VariationID der Spalte Price - ID1 zu.


Allerdings ist das ein ziemlich unelegantes Verfahren, vor allem wenn es sich um recht viele verschieden PriceIDs handelt.


Gibt es eine elegante Lösung hierfür ggf in einem Schritt?


Vielen Dank und beste Grüße,

Christof Goldhammer


s2c GmbH


Beste Antwort

Moin Moin Christof,


in diesem Fall kommst du wahrscheinlich per Spreadsheet-Ansatz ans Ziel. Hierbei bauen wir uns eine Map (eine Liste mit Schlüssel = Wert Paaren) auf



Folgender Vorschlag wie das ganze zu lösen sein könnte:


1. Benutze im SpreadsheetMapper die Gruppieren-Funktion, gruppiere in deinem Fall nach der Spalte "VariationID".

2. Füge eine neue Spalte (z.B. "PriceMap") hinzu und trage dort in das Wertfeld folgendes Skript ein:  

${PriceID!}=${Price!}

 Stelle in der Spalte unter Funktionen -> Aggregatfunktionen 

"Eindeutige Werte" ein und nutze als Trennzeichen beispielsweise Semikolon (";")


3. Reiche das Spreadsheet nun an einen weiteren Mapper durch und trage dort in einer Spalte (z.B. PriceID1) folgendes Skript ein:  

${parseField(PriceMap, "MAP", "TEXT", ";", "=").at("1")}

  Somit sollte der Preis für PriceID 1 gezogen werden.

Nun kannst du die nächste Spalte hinzufügen und beim Wert in der Klammer von "at" die nächste PriceID eintragen (also z.B. 2)



Wir hoffen das du damit ans Ziel gelangst.



Viele Grüße

Das Synesty Support Team


Antwort

Moin Moin Christof,


in diesem Fall kommst du wahrscheinlich per Spreadsheet-Ansatz ans Ziel. Hierbei bauen wir uns eine Map (eine Liste mit Schlüssel = Wert Paaren) auf



Folgender Vorschlag wie das ganze zu lösen sein könnte:


1. Benutze im SpreadsheetMapper die Gruppieren-Funktion, gruppiere in deinem Fall nach der Spalte "VariationID".

2. Füge eine neue Spalte (z.B. "PriceMap") hinzu und trage dort in das Wertfeld folgendes Skript ein:  

${PriceID!}=${Price!}

 Stelle in der Spalte unter Funktionen -> Aggregatfunktionen 

"Eindeutige Werte" ein und nutze als Trennzeichen beispielsweise Semikolon (";")


3. Reiche das Spreadsheet nun an einen weiteren Mapper durch und trage dort in einer Spalte (z.B. PriceID1) folgendes Skript ein:  

${parseField(PriceMap, "MAP", "TEXT", ";", "=").at("1")}

  Somit sollte der Preis für PriceID 1 gezogen werden.

Nun kannst du die nächste Spalte hinzufügen und beim Wert in der Klammer von "at" die nächste PriceID eintragen (also z.B. 2)



Wir hoffen das du damit ans Ziel gelangst.



Viele Grüße

Das Synesty Support Team

Super! Ihr seid die Besten ;-)


Der Weg tut genau das was er soll, nur wesentlich eleganter, als der Weg, den ich gegangen wäre :-D

Anmelden um einen Kommentar zu veröffentlichen