Zum Hauptinhalt springen
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Chart

CSV-Zeile mit sehr vielen identischen Spalten auf mehrere Zeilen verteilen

  • Jost Broichmann
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
4 Jahre 11 Monate her - 4 Jahre 11 Monate her #3858 von Jost Broichmann
Ich habe eine Datenquelle die CSV Dateien mit sehr langen Zeilen auswirft. Es handelt sich um Messeinrichtungen, die zu einem Zeitpunkt Messwerte in eine Zeile schreiben. Die Spalten wiederholen sich, gekennzeichnet wird eine neue Messeinrichtung durch eine neue Anlagennummer.

Prinzipiell sehen die Daten wie folgt aus:

Date;Time;ID;WertA;WertB;WertC;ID;WertA;WertC;WertD;ID;WertA;WertB;WertC
25.11.19;19:30;1;11;12;13;2;21;23;24;3;31;32;33 

Ziel ist ein Import in SQL, da kann jede Spalte nur 1x vorkommen, die Zeilen ergeben sich aus den Anlagen-IDs

DateTime;ID;WertA;WertB;WertC;WertD
19-11-25 19:30;1;11;12;13;Null
19-11-25 19:30;2;21;Null;23;24
19-11-25 19:30;3;31;32;33;Null

Die DateTime-Umrechung bekomme ich hin, die sortierte Aufteilung auf mehrere Zeilen nicht. Über einen Tipp wäre ich dankbar.
Letzte Änderung: 4 Jahre 11 Monate her von Jost Broichmann. Begründung: Word-Formatierung

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Jahre 11 Monate her #3859 von FlowHeater-Team
Hallo Herr Broichmann,

um aus einer CSV Zeile mehrere Zeilen oder aber Datensätze zu generieren benötigen Sie einmal den GroupOut Heater . Dieser kopiert die aktuelle READ Zeile n-Mal. Wenn wie in Ihrem Beispiel 3x Wertepaare vorhanden sind müssen Sie für n=2 verwenden, so dass diese Zeile insgesamt 3x verarbeitet wird. 1x Original + 2 Kopien. Der Wert wird einfach statisch über einen X-Value Heater übergeben.

Dann benötigen Sie einen AutoID Heater . Diesen müssen Sie so konfigurieren, dass hiermit die kopierten bzw. gruppierten CSV Zeilen gezählt werden. Hierzu müssen Sie die Option „GroupOut“ aktivieren, siehe Screenshot.

Dann wird es etwas mühselig. Jetzt müssen Sie noch entscheiden, dass beim originalen Datensatz (AutoID Zähler = 1) die ersten Werte verwendet werden, beim zweiten Datensatz (AutoID Zähler = 2) die zweiten Werte, usw.

Hierzu habe ich im angehängten Beipspiel einen .NET Script Heater mit unten stehen C# Skript verwendet. Der .NET Script Heater erhält als ersten Eingangsparameter den Wert des oben eingefügten AutoID Heaters . Zusätzliche fügen Sie hier alle ID Werte hinzu. Achtung hier müssen Sie die Reihenfolge einhalten so wie diese in der CSV Datei vorhanden sind. Also erster ID Wert, zweiter ID Wert, dritter ID Wert, usw. Das Skript gibt dann je nach Verarbeitung den richtigen Wert zurück. Sie benötigen für jedes Ausgabefeld auf der WRITE Seite einen separaten .NET Script Heater . Das Vorgehen sowie das Skript sind dann immer gleich.

Klingt etwas kompliziert. Ich denke, wenn Sie sich das angehängte Beispiel dazu ansehen wird etwas einfacher zu verstehen sein.

C# Skript um die richtigen Wertepaare auszugeben
Code:
public object DoWork() {   // AutoID Zähler holen = ersten Eingangsparameter   int i = (int)InValues[0].GetInt();   // den richtigen Wert anhand der Eingangsreihenfolge zurückliefern   return InValues[i]; }





Dateianhang:

Dateiname: csv-spalte...ilen.zip
Dateigröße:3 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Jost Broichmann
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
4 Jahre 11 Monate her #3860 von Jost Broichmann
Hallo Herr Stark,

vielen Dank! Ich habe das in der Zwischenzeit mit mehreren InMemory-Adaptern in der Write-Seite probiert, die im 2. Schritt in SQL geschrieben werden. Geht auch, ist aber ein ziemliches Geklicke und evtl. fehleranfälliger, als ein paar saubere Zeilen Code.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.276 Sekunden
FlowHeater Logo

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Copyright © 2009-2024 by FlowHeater GmbH. Alle Rechte vorbehalten.