Datei mit mehr als 500 Spalten, teilen möglich?

Hallo zusammen,

ich habe von einem Hersteller eine Datei mit 742 (!) Spalten bekommen.
Die „letzten“ 693 sind Merkmale zu Artikeln, die teilweise jeweils nur 1x in der Datei vorkommen.
Der Excel-Reader hat sich zwar kurz geschüttelt, aber der kann die Datei schon mal auslesen (sieht man in der Vorschau)
Der Mapper hingegen will maximal 500 Spalten.
Soweit ich sehen kann gibt es zwar die Möglichkeit die Anzahl der ausgelesenen Zeilen zu beschränken, aber nicht der Spalten.
Alle Hilfssteps, die man nutzen kann um Spalten auszuschließen scheitern an der Anzahl der Spalten in der Ausgangsdatei.
Hat jemand eine Idee, wie man dem Herr werden kann ?
Klar, ich kann natürlich die Excel vorher aufmachen und manuell die Spalten löschen, allerdings würde ich das gerne automatisiert machen.

Gruß

Heinke

Hallo Heinke,

mit dem ColumnRemover Step kannst du Spalten aus dem input Spreadsheet entfernen.

Das funktioniert auch für input Spreadsheets mit mehr als 500 Spalten.

VG Torsten

Hallo @synesty-Torsten ,

leider ist das nicht praktikabel. Ich habe versucht den ColumnRemover mit der Option „include“ zu verwenden und nur die 50 Felder zu nehmen, die verwendet werden sollen. Das funktioniert schon mal nicht. Da kommt weiterhin die Meldung, dass es mehr als 515 Felder sind.
Bei über 700 Feldern jetzt die einzeln anhaken, die nicht genommen werden sollen ist unpraktisch, ich habe es trotzdem versucht. Ich habe 295 der Spalten versucht zu entfernen.
Der Fehler kommt troztdem.
Ich kann Dir gerne die Datei und den Flow zukommen lassen.

Es wäre toll, wenn man da auch sagen könnte: Nimm Spalte 1- 200 oder 500-750 oder so.

Gruß

Heinke

Hallo Heinke,

Ja, kannst du mir bitte den Flow per Ticket schicken. Dann schaue ich mir mal an warum der include Modus nicht greift.

Ich weiß nicht, ob das so eine gute Idee ist. Sobald eine neue Eigenschaft in der Excel Datei hinzukommt, verschieben sich die Spalten und es werden andere Spalten im ColumnRemover Step entfernt.
Du kannst im columns - input auch Wildcards (? oder * ) verwenden.

Falls du die Spalten trotzdem über den index auswählen willst, könntest du es mit einem TextHtmlWriter Step lösen:

<#list spreadsheet@XXX_1.getHeader().getCols() as col><#if (col_index > 0 && col_index < 200) || (col_index > 500 && col_index < 750)>${col}<#sep>,</#if></#list>
(spreadsheet@XXX_1 muss noch ersetzt werden)

Mit diesem Skript kannst du dir die Spaltennamen Komma-separiert für bestimmte Spaltenbereiche ausgeben. Den Output kannst du dann im ColumnRemove Step
verwenden oder einfach in das columns input Feld einfügen.

VG Torsten

1 „Gefällt mir“