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.
Mit der Freeware Version können bis zu 100.000 Datensätze verarbeitet werden!
Flowheater Chart

Zusammenführen von mehreren Zeilen

Mehr
3 Wochen 3 Stunden her #5373 von sws_flowheater
Zusammenführen von mehreren Zeilen wurde erstellt von sws_flowheater
Hallo liebes Flowheater Team,

ich habe folgendes Problem:
Wir haben eine txt-Datei, die verschiedene Daten enthält. Leider gehören 3 Zeilen immer zusammen. Es soll quasi eine Zeile sein, wird aber in drei unterteilt. Ich hatte versucht es an einem Marker festzumachen: hinter jeder Zeile steht entweder M1, M2 oder M3. M3 wäre der eigentliche Abschluss einer Zeile, wenn es keine Zeilenumbrüche geben würde.
Die Daten würde ich in den MemoryAdapter laden wollen, dort habe ich eine Tabelle erstellt, bei der es eine fortlaufende ID und eine Spalte "text" gibt. Innerhalb von Text soll die komplette Zeile stehen, die dann in weiteren Schritten verarbeitet wird.
Wie kann ich mein Problem lösen und alle drei Zeilen zu einer Zusammenfügen und das fortlaufend für die gesamte Eingabedatei?

Vielen Dank und freundliche Grüße

Mattes Mundt

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
2 Wochen 6 Tage her #5374 von FlowHeater-Team
FlowHeater-Team antwortete auf Zusammenführen von mehreren Zeilen
Hallo Herr Mundt,

das geht sehr einfach mit dem GroupBy Heater . Hier müssen Sie die Option „Jede Gruppe beginnt mit String im Wert“ aktivieren und tragen dann z.B. „M1“ als Gruppenstartwert ein. So weiß der GroupBy Heater dass er eine neue Gruppierung durchführen muss und führt alle Zeilen so lange zusammen bis wieder der Wert „M1“ ansteht.
Über dem String Append Heater und eingeschalteter Gruppierung können Sie dann die einzelnen Zeilenwerte zusammenfassen. Im Anhang finden Sie ein kleines Beispiel dazu.

Markierung im Screenshot
  1. GroupBy Heater mit aktivierter Option „Jede Gruppe beginnt mit String im Wert“
  2. String Append Heater mit eingeschalteter Gruppierung
 

 
Dateianhang: Dateiname: mehrere-ze...hren.zip
Dateigröße:5 KB

 

gruß
Robert Stark

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
2 Wochen 3 Tage her #5377 von sws_flowheater
sws_flowheater antwortete auf Zusammenführen von mehreren Zeilen
Vielen Dank. ich habe es auf einem anderen Wege gelöst, aber nun verstehe ich meinen Fehler.

Nun kommt in der gleichen Definition aber ein anderes Problem:
Ich habe nun mehrere InMemoryTabellen, welche ich für einen Datenabgleich benötige. Ebenso muss in dieses Datenabgleich Daten aus einer Oracle Datenbank gezogen werden.

Kann ich innerhalb von einer SQL Abfrage Daten aus der Oracle und Daten aus der InMemory Datenbank beziehen?

Außerdem kann ich keine Abfrage für den InMemoryAdapter machen, siehe Screenshot. Ist mein Verarbeitungsschritt falsch oder habe ich einen Denkfehler?

Vielen Dank nochmals für Ihre Hilfe!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
2 Wochen 3 Tage her - 2 Wochen 3 Tage her #5378 von FlowHeater-Team
FlowHeater-Team antwortete auf Zusammenführen von mehreren Zeilen
Hallo Herr Mundt,

in Ihrem Screenshot lesen Sie auf der READ-Seite die InMemory Adapter Tabelle „hkv_swg“. Wenn Sie von hier lesen können Sie die Felder von der READ-Seite direkt mit der WRITE Seite verbinden. Der SQL Heater ist aus meiner Sicht an der Stelle überflüssig!

Der SELECT, den Sie im SQL Heater verwenden, ist so falsch. Sie können hier lediglich ein einzelnes Feld oder aber eine Aggregatsfunktion wie COUNT, SUM, etc. verwenden, so dass immer nur ein Feld zurückgegeben wird.

    z.B.  select count(*) from [hkv_swg]

Um Ihre Oracle Daten ebenfalls zu verwenden, können Sie diese einmal in die InMemory Adapter Tabellen mit einmischen oder aber per SQL Heater oder aber Lookup Heater in die Definition reinholen. Alternativ und etwas einfacher geht der Lookup auf InMemory Adapter Tabellen auch mit String Replace Heater . Für eine etwas genauere Beschreibung bräuchte ich etwas mehr Informationen was genau gemacht werden soll.

 

gruß
Robert Stark
Letzte Änderung: 2 Wochen 3 Tage her von FlowHeater-Team.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
2 Wochen 3 Tage her #5379 von sws_flowheater
sws_flowheater antwortete auf Zusammenführen von mehreren Zeilen
Hallo,  vielen Dank erstmal für die ausführliche Hilfe. Damit werde ich meinem Ziel ein wenig näher kommen.
Sehr gerne kann ich Ihnen das Beispiel einmal erläutern. Also wir bekommen verschiedene Text-Dateien von einem Dienstleister/Kunden. Früher wurden die mit einer Reihe von Batch-Dateien in eine Datenbank zusammengeschrieben. Diese Daten werden nun zusammen mit Daten aus unserem ERP System bzw. deren Datenbank ausgewertet. Dazu gibt es verschiedene SQL Scripte, die die Daten kombiniert und in einzelne Dateien schreibt. Ich sende Ihnen einmal unten ein SQL Script.

Ich möchte diesen Prozess nun automatisieren. Also sobald die Dateien in einem entsprechenden Ordner abgelegt werden, soll Flowheater mithilfe der Definition die verschiedenen Verarbeitungsschritte automatisch ausführen. Wie gesagt, bis zum einlesen in die inMemory Tabellen bin ich gekommen. Nun geht es darum, diese Daten aus der inMemory und der Oracle Datenbank unseres ERP Systems zu verbinden bzw. gemeinsam auszuwerten.

In einem anderen Verarbeitungsschritt habe ich den Oracle-Adapter bereits konfiguriert, ich komme also an die Daten ran. Nur die SQL Abfragen zwischen beiden System lösen bei mir Probleme aus :D

Hier einmal eine Beispiel-SQL-Abfrage:
select h.haus_hausanschlussnummer
                                           ,a.ist_zugeordnet_hausanschl_haus
                                           ,swg.fremder_ordnungsbegriff_hv AS "Ordnungsbegriff"
                                           ,To_Char(a.von,'dd.mm.yyyy') AS "von_kVASy"
                                           ,To_Char(swg.nutzungsbeginn,'dd.mm.yyyy') AS "von_SWG"
                                           ,To_Char(a.bis,'dd.mm.yyyy') AS "bis_kVASy"
                                           ,To_Char(swg.nutzungsende,'dd.mm.yyyy') AS "bis_SWG"
                                           ,v.kund_name1 AS "Name1_kVASy"
                                           ,swg.nutzername_2 AS "Nutzername1_SWG"
                                           ,a.ist_zugeordnet_kunde_abne_kund AS "Kundennr_kVASy"
                                           ,v.kund_name2 AS "Name2_kVASy"
                                           ,swg.nutzername_1 AS "Nutzername2_SWG"
                                           
                                           ,swg.plz AS "PLZ_SWG"
                                           ,e.an_plz AS "PLZ_kVASy"
                                           ,swg.ort AS "Ort_SWG"
                                           ,e.an_ort AS "Ort_kVASy"
                                           
                                           --,swg.str_hnr AS "Str_Hnr_SWG"
                                           ,replace(RTrim(LTrim(swg.str_hnr)),' ','') as "Str_Hnr_SWG (Leerz. entf.)" 
                                           --,e.an_strasse||' '||e.an_hausnummer||' '||e.an_zusatzhausnummer AS "Str_Hnr_kVASy"
                                           ,replace(RTrim(LTrim((e.an_strasse||e.an_hausnummer||e.an_zusatzhausnummer))),' ','') AS "Str_Hnr_kVASy (Leerz. entf.)"
                                           
                                           
                                          -- ,swg.str_hnr
                                          -- ,RTrim(LTrim(swg.str_hnr))
                                          -- ,replace(RTrim(LTrim(swg.str_hnr)),' ','')
                                          
                                           --,RTrim(LTrim((e.an_strasse||e.an_hausnummer||e.an_zusatzhausnummer)))
                                  from  kvasyn_2022.orte@hkv_kvasyn o
                                      ,kvasyn_2022.strassen@hkv_kvasyn s
                                      ,kvasyn_2022.hausanschluesse@hkv_kvasyn h
                                      ,kvasyn_2022.vKUNDE_ABNEHMER@hkv_kvasyn v
                                      ,HKV_SWG swg
                                      ,kvasyn_2022.abrechnungen@hkv_kvasyn a
                                      ,kvasyn_2022.einzeladressen@hkv_kvasyn e
                                where o.ort_o_nummer = s.stra_ort_o_nummer
                                  and s.stra_st_nummer = h.haus_ist_zugeordnet_strasse_st
                                  
                                  AND e.kunde_abne_kunden_nr = a.ist_zugeordnet_kunde_abne_kund
                                  AND a.ist_zugeordnet_kunde_abne_kund = v.kund_lfd_nr
                                  AND a.ist_zugeordnet_hausanschl_haus = h.haus_hausanschlussnummer

                                  
                                  AND To_Char(a.von,'dd.mm.yyyy') = To_Char(swg.nutzungsbeginn,'dd.mm.yyyy')
                                  AND Nvl(To_Char(a.bis,'dd.mm.yyyy'),'31.12.2024') = To_Char(swg.nutzungsende,'dd.mm.yyyy')
                                  
                                  AND Nvl(REPLACE(v.kund_name1,' ',''),'-') = Nvl(REPLACE(swg.nutzername_2,' ',''),'-')                             
                                  
                                  AND Nvl(REPLACE(v.kund_name2,' ',''),'-') = Nvl(REPLACE(swg.nutzername_1,' ',''),'-')                             
                                  --AND (swg.plz != e.an_plz OR swg.ort != e.an_ort OR RTrim(LTrim(swg.str_hnr)) != RTrim(LTrim((e.an_strasse||' '||e.an_hausnummer||' '||e.an_zusatzhausnummer))))
                                  AND (swg.plz != e.an_plz OR swg.ort != e.an_ort OR replace(RTrim(LTrim(swg.str_hnr)),' ','') != replace(RTrim(LTrim((e.an_strasse||e.an_hausnummer||e.an_zusatzhausnummer))),' ','')) 


                                  
                                  
                                  AND Nvl(replace(swg.objektnr,'0','')||swg.nr_der_nutzeinheit,'-') = h.haus_hausanschlussnummer
                                  AND (
                                       To_Char(a.bis,'yyyy') = '2024'
                                       OR
                                       a.bis IS NULL
                                       )


                                  
                                  

                                  GROUP BY  h.haus_hausanschlussnummer
                                           ,a.ist_zugeordnet_hausanschl_haus
                                           ,swg.fremder_ordnungsbegriff_hv
                                           ,To_Char(a.von,'dd.mm.yyyy')
                                           ,To_Char(swg.nutzungsbeginn,'dd.mm.yyyy')
                                           ,To_Char(a.bis,'dd.mm.yyyy')
                                           ,To_Char(swg.nutzungsende,'dd.mm.yyyy')
                                           ,v.kund_name1
                                           ,swg.nutzername_2
                                           ,a.ist_zugeordnet_kunde_abne_kund
                                           ,v.kund_name2
                                           ,swg.nutzername_1
                                           ,o.ort_o_name
                                           ,swg.plz
                                           ,e.an_plz
                                           ,swg.ort
                                           ,e.an_ort
                                           ,s.stra_st_name ||' '||h.haus_hausnummer||' '||h.haus_zusatzhausnummer
                                           ,swg.str_hnr
                                          -- ,e.an_strasse||' '||e.an_hausnummer||' '||e.an_zusatzhausnummer
                                          ,RTrim(LTrim((e.an_strasse||e.an_hausnummer||e.an_zusatzhausnummer)))
                                         
hkv_swg ist dabei die InMemory Tabelle, die anderen sind aus der Oracle Datenbank.

Vielen Dank für Ihre Hilfe!

 

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
2 Wochen 2 Tage her #5380 von FlowHeater-Team
FlowHeater-Team antwortete auf Zusammenführen von mehreren Zeilen
Hallo Herr Mundt,

einen direkten SELECT über beide Datenquellen ( Oracle , InMemory) können Sie nicht durchführen. Aber mit dem InMemory Adapter können Sie über mehrere Verarbeitungsschritte weitere Details anreichern und am Ende der Verarbeitung dann auch wieder ausgeben bzw. in eine andere Datenbanktabelle wegschreiben.

Das Vorgehen ist hierbei immer das gleiche. Als erstes lesen Sie die Daten mit den meisten benötigten Feldern in eine InMemory Adapter Tabelle ein. Das wird in Ihrem Fall Ihre Oracle Datenquelle sein.

Dann können Sie diesen Datensätze der InMemory Tabelle beliebig viele weitere Felder hinzufügen. Sie müssen hier nur darauf achten, dass Sie hier „Daten aktualisieren“ auswählen und einen geeigneten Schlüssel, worüber Sie das Update steuern, definieren. Es gehen hier auch beliebig viele Felder (siehe Screenshot) die den „Schlüssel“ definieren, worüber Sie das Update ausführen möchten. 

Im Anhang finden Sie ein kleines Beispiel dazu.

 

 
Dateianhang: Dateiname: mehrere-ta...hren.zip
Dateigröße:15 KB

 

gruß
Robert Stark

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.332 Sekunden
FlowHeater Logo
FlowHeater - Der Daten Spezialist

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

Rechtliches
Support & Kontakt
Kontaktinformation

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