FlowHeater Demo Video
 
Der Daten Import / Export Spezialist
 
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
×

Erweiterte Suche

Suche nach Stichwort
×

Suchoptionen

Finde Beiträge von
Ergebnisse sortieren nach
Suche zu einem bestimmten Zeitpunkt
Zu Resultat springen
Suche in Kategorien
×

Suchergebnisse

Gesucht wurde: GroupBy
08 Mär 2021 05:40
  • Ralf Birk
  • Ralf Birks Avatar
Hallo Robert,

die 2 Bearbeitungsschritt-Variante ist natürlich wesentlich schlanker....Sehr schön

@Oliver: Du musst bei dieser Variante nur aufpassen das die Gruppen vor der Verarbeitung sortiert sind da sonst der Output nicht deinen Wünschen entspricht. Wenn die zusammenhängende (Auf- oder Absteigend) Sortierreihenfolge des Gruppenfelds nicht gegeben ist würde ich lieber die 3 Bearbeitungsschritte-Variante nehmen.

Gruß Ralf
Kategorie: Allgemein
06 Mär 2021 14:04
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Barz,

einmal funktioniert jetzt der Download von FlowHeater (*.fhd) Dateien, hier war noch am WebServer ein falscher MIME Type dafür hinterlegt, vielen Dank für den Hinweis.

Dann habe ich im Anhang ein weiteres Beispiel angefügt, das mit nur zwei Verarbeitungsschritten auskommt.
  1. Hier wird die Textdatei gelesen und anhand der Gruppe mittels des Addition Heater  wird hier eine Berechnung durchgeführt. Der Wert wird temporär in einer InMemory Adapter  Tabelle gespeichert. Ist bereits ein Eintrag für die Gruppe vorhanden wird der Wert aktualisiert (UPDATE). So haben Sie am Ende für jede Gruppe eine Summe.

  2. Im Zweiten Verarbeitungsschritt wird dann die TextDatei erneut gelesen. Die berechnete Summe wird über den String Replace Heater  (Datenlookup) und der im ersten Verarbeitungsschritt berechneten Summe aus der InMemory Adapter  Tabelle gelesen.

Dateianhang:

Dateiname: summen-berechnen.zip
Dateigröße:10 KB
Kategorie: Allgemein
05 Mär 2021 11:55
  • Oliver Barz
  • Oliver Barzs Avatar
Hallo Ralf,

vielen Dank für Deine Unterstützung.
Magst Du die *fhd nochmal hochladen? Ich bekomme nur ein XML im Browser angezeigt.

VG Olli
Kategorie: Allgemein
05 Mär 2021 06:08
  • Ralf Birk
  • Ralf Birks Avatar
Hallo Oliver,

das ist relativ simpel.
Ändere den 2. Verarbeitungsschritt in Write von Text auf InMemory und füge einen 3. Verarbeitungsschritt hinzu (InMemory zu Textfile).
In diesem 3. Schritt liest du die erzeugte InMemory des ersten Schritts und fügst ein Rename wie im Bild an.
Die .fhd füge ich auch an...

Viel Erfolg
Kategorie: Allgemein
04 Mär 2021 15:23
  • Oliver Barz
  • Oliver Barzs Avatar
Hallo Herr Stark, Hallo Ralf,

auf der Suche nach meinem Problem bin ich zu diesem Thread gekommen, und würde dies gern einmal darstellen wollen.
In meinem Fall ist es so, dass ich die gruppierten Werte aus einer Spalte aufsummieren möchte, allerdings möchte ich in der Ausgabe
die Datensätze NICHT gruppiert ausgegeben bekommen.

Wenn man Ihr Input Beispiel nimmt,

Gruppe;Beschreibung;Wert
A;A1;1
A;A2;2
A;A3;3
B;B1;10
B;B2;20
B;B3;30
C;C1;100
C;C2;200
C;C3;300

soll mein Ergebnis nicht so:

Gruppe;Beschreibung;Wert
C;C1;600,00
B;B1;60,00
A;A1;6,00

sondern so aussehen:

A;A1;1;6
A;A2;2;6
A;A3;3;6
B;B1;10;60
B;B2;20;60
B;B3;30;60
C;C1;100;600
C;C2;200;600
C;C3;300;600

Ich habe heute eine Menge, mir neuer, Funktionen für mein Vorhaben nutzen können,
aber daran habe ich mir die Zähne ausgebissen. Sobald ich einen GroupBy Heater einsetze, ist es vorbei.
Und ohne diesen Heater bekomme ich die Werte nicht in jeden Datensatz addiert.

VG Oliver Barz
Kategorie: Allgemein
08 Feb 2021 16:58
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Müller,

ich habe jetzt mal dazu ein kleines Beispiel erstellt, siehe Anhang.

Da ich nicht mehr Informationen habe gehe ich davon aus, dass die Gruppierung anhand des Standortes (000) durchgeführt werden soll?

Zusammenfassen mehrerer Zeilen geht mit dem GroupBy Heater sowie dem String Append Heater . Allerdings ist Ihre Anforderung, zwei Zeilen zusammen und dann erst wieder ein Trennzeichen nicht ganz so einfach abzubilden, deshalb habe ich hier zu einem zusätzlichen .NET Script Heater   und unten stehenden C# Skript zurückgegriffen.

Das C# Skript entfernt quasi wieder jedes zweites Trennzeichen aus der vorher gruppierten Zeichenfolge.

Hier wird dann -> A#ArtikelA#17#ArtikelB#1#ArtikelC#6#ArtikelD#9#ArtikelE#18
zu -> A#ArtikelA 17#ArtikelB 1#ArtikelC 6#ArtikelD 9#ArtikelE 18

Schauen Sie sich das mal an.


C# Skript um jedes zweite Trennzeichen wieder zu entfernen
public object DoWork()
{
    if (InValues.Length != 1)
        throw new Exception("Es wird ein Eingangsparameter erwartet!");

    string line = (string)InValues[0].GetString();

    // Trennzeichen
    char c = '#';

    // Zeichenkette anhand des Trennzeichen aufteilen
    string [] parts = line.Split(c);

    string ret = String.Empty;

    bool bAddDelimiter = true;
    foreach(string part in parts)
    {
        ret += part;

        // jedes 2. Trennzeichen entfernen
        if (bAddDelimiter)
        {
            ret += c;
        }
        else
        {
            ret += " ";
        }

        bAddDelimiter = !bAddDelimiter;
    }

    // Abschließendes Trennzeichen entfernen!
    if (ret[ret.Length - 1] == '#')
    {
        ret = ret.Substring(0, ret.Length - 1);
    }
    
    return ret;
}

Dateianhang:

Dateiname: zeilen-zus...ssen.zip
Dateigröße:11 KB
Kategorie: Access Adapter
08 Feb 2021 09:56
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Müller,

wenn sich der String Append Heater auf alle Datensätze der Gruppierung auswirken soll müssen Sie das noch im String Append Heater aktivieren, siehe Screenshot.

Kategorie: Access Adapter
18 Jan 2021 17:24
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Bönnighausen,

genau dafür wurde der FlowHeater konzipiert. Ich habe Ihnen im Anhang mal ein kleines Beispiel erstellt. Hier wird davon ausgegangen, dass die Messwerte (IDs) in sortierter Reihenfolge vorliegen. Das Beispiel funktioniert so mit Ihren gelieferten Testdaten .

Das Beispiel verwendet zwei Verarbeitungsschritte. Der erste „Anzahl ermitteln“ ermittelt über den GroupBy Heater zusammen mit dem AutoID Heater lediglich für jeden Messwert die Anzahl und speichert diese in einer InMemory Tabelle „Anzahl“ zwischen. Die Anzahl wird dann im zweiten Verarbeitungsschritt „Verarbeitung“ benötigt um zu entscheiden ob eine Berechnung der „Messwert_ID_Group“ stattfinden soll oder nicht.
Zuerst muss natürlich erst einmal das Feld mit den Inhalten extrahiert werden. Hierzu wird der String Split Heater mit dem Trennzeichen „#“ verwendet.

Anmerkung: Wenn Ihre Eingangsdatei nur diese Werte enthält, könnten Sie im TextFile Adapter als CSV Trennzeichen auch „#“ angeben und Sie hätten die Felder gleich während des Einlesens getrennt!

Dann wird mit Hilfe des String Replace Heater ein Daten Lookup auf die im ersten Verarbeitungsschritt zwischengespeicherte InMemory Tabelle „Anzahl“ an Messwerten durchgeführt. Mit diesem Wert wird über die IF-THEN-ELSE Heater geprüft (Anzahl != 1) ob eine Berechnung bzw. eine Ausgabe für diesen Messwert/Zeile notwendig ist. Die notwendige Berechnung findet über zwei AutoID Heater statt. Hier wurde einmal eingestellt, dass über „gleiche Eingangsparameter“ sowie einmal über „Gruppenwechsel“ gezählt werden soll, siehe Screenshot.

Der String Format Heater wird dazu benötigt um die berechneten Werte sauber als Ganzzahlwert ohne Dezimalstellen zu Formatieren, das könnte auch über die allgemeinen Format Adapter Einstellungen geändert werden.

Es gibt mehrere Möglichkeiten, das umzusetzen. Probieren Sie es mal aus, gerne können wir noch Änderungen vornehmen.


Fertige Definition



AutoID Einstellung zu "Zählen" gleicher Eingangsparameter



AutoID EInstellung zu "Zählen" auf Gruppenwechsel



Dateianhang:

Dateiname: gruppierun...hlen.zip
Dateigröße:16 KB
Kategorie: Allgemein
06 Jan 2021 16:33
  • Matthias Rindt
  • Matthias Rindts Avatar
Hallo Herr Stark,

ich habe eine Verarbeitung über mehrere Verarbeitungsschritte erstelle und führe diese im Massdata-Modus aus.

Innerhalb der einzelnen Schritte nutzte ich den GroupBy zum Verdichten von Zeilen mit gleichen Eingangswerten. Teilweise erfolgt hier die Verdichtung über drei Eingangswerte: Belegnummer, Kontonummer, Steuerschlüssel.  

In manchen Buchungen kommen aber z.B. die gleichen Steuerschlüssel (numerischer Wert, 2 stellig) mehrfach vor wobei aber ein anderer Steuerschlüssel von der Reihenfolge her dazwischen liegt. Damit klappt dann das korrekte verdichten nicht. Idealerweise könnte ich die Werte vorher mit den Sort-Heater wieder in die richtige Reihenfolge bringen aber der geht ja nur im Memory-Modus. Eine Idee wie ich das Problem lösen könnte?

Ausgangsdatei ist eine csv. Diese wird in 4 verschieden DB-Tabellen aufgeteilt. Deswegen die verschiedenen Verarbeitungsschritte. Zwischen den Tabellen bestehen 1:n-Beziehungen. Für die korrekte Zuordnung der Datensätze ist eben die richtige Verdichtung nötig.

Viele Grüße und vielen Dank, Matthias Rindt 
Kategorie: Allgemein
16 Dez 2020 16:29
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Müller,

das ist etwas Tricky aber machbar :-) Das Problem ist, dass in Ihrer Textdatei die Feldnamen nicht per Trennzeichen vom Inhalt separiert sind. Im Anhang habe ich Ihnen mal ein Beispiel inkl. Access Datenbank erstellt. Hier werden die Felder mit dem Code „0000003“ per Trennzeichen „#“ getrennt in einem Feld zusammenfasst. Falls Sie was anderes benötigen einfach nochmal etwas konkreter schreiben was genau benötigt wird.

Vorgehensweise Punkte siehe Screenshot
  1. Über diese beiden SubString Heater  werden die Feldnamen vom Feldinhalt separiert.

  2. Dann wir eine GroupBy Heater  benötigt, der alle Zeilen die zu einem Datensatz gehören zu einem zusammenfasst. In Ihrem Fall habe ich den Code bzw. Feldnamen „0000001“ verwendet.

  3. Dann benötigen Sie für jedes Feld, das Sie auf die WRITE Seite übertragen möchten einen IF-THEN-ELSE Heater  der prüft, welche Code bzw. Feldname gerade verarbeitet wird. Das wird benötigt, damit im Access Datenbankfeld auch wirklich nur der richtige Inhalt geschrieben wird.

  4. Beim Feldnamen bzw. Code „0000003“ wird zusätzlich noch ein String Append Heater  benötigt, der alle vorhandenen Feldinhalte anhand der Gruppierung zusammenfügt, hier wurde das Trennzeichen „#“ verwendet, kann aber beliebig geändert werden.
Das Beispiel erzeugt mit Ihrer Beispiel Textdatei 3 Datensätze in der Access Datenbank . Gerne können wir das Beispiel noch weiter anpassen. Hierzu bitte aber etwas besser beschreiben wie die Daten bzw. in welche (evtl. unterschiedliche) Tabellen die Inhalte importiert werden sollen.



Dateianhang:

Dateiname: line-based-import.zip
Dateigröße:20 KB
Kategorie: Access Adapter
14 Okt 2020 04:39
  • Ralf Birk
  • Ralf Birks Avatar
Hallo Robert,

Da ich bei einigen Jobs diverse Auswertungen machen muss werden die Bearbeitungsschritte z.T. recht inflationär eingesetzt, da viel mir Groupby gearbeitet wird von denen ja nur einer je Verarbeitungsschritt möglich ist. Ich wollte mir dadurch wegen der Übersichtlichkeit einen sparen.
Mit dem "Dirty Trick" den File-Heater zu missbrauchen hatte ich den Vorteil, dass ich diesen im ersten Verarbeitungsschritt (der Daten in den Inmemory schreibt) mit einem Parameter-Layer etwas Struktur reinbrachte. Eine Variable über Setparameter lege ich eh immer an, da diese in verschiedenen Verarbeitungsschritten benötigt werden. 
Da du die Erweiterung des File-Headers als nicht stimmig erachtest werde ich nach und nach einige Projekte mit dem zusätzlichen Verarbeitungsschritt versehen und entsprechend anpassen.
Es ist ja nicht so, dass das Ziel nicht erreicht wird. Ich suche ja nur nach dem optimalen Weg dorthin.

Vielen Dank nochmals für deine schnelle Rückmeldung

Gruß Ralf
Kategorie: Anregungen
13 Okt 2020 10:25
  • Ralf Birk
  • Ralf Birks Avatar
Hallo Robert,

deine Lösung habe ich schon bei einigen Dingen im Einsatz.
Da ich bei diesem Job die Summen aus 5 Gruppen brauche wäre die oben Angefragte Lösung eben wesentlich eleganter gewesen.
Jetzt schreibe ich die eh schon im Inmemory Vorhandenen Daten in 5 weitere seperate Inmemory's und Join diese am Ende wieder zu einer Datei.
Ich war in dem Irrglauben, das man sobald diese im Inmemory gelandet sind mit einfachen Datenbanküblichen Befehlen "anzapfen" kann.
Schade ein Versuch wars wert. Ich lebe eben "schlanke" Lösungen mit möglichst wenig unnötigen Bearbeitungsschritten, da sich bit jedem Bearbeitungsschritt auch die Möglichkeit von Fehlern potenziert.

Danke nochmals für deine Bemühungen....


Gruß Ralf
Kategorie: Allgemein
12 Okt 2020 15:31
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Ralf,

Das ist leider nicht so einfach realisierbar. Die von Dir vorgeschlagene Option „GroupBy ungefiltert“ ist hier ebenfalls nicht machbar. Das Problem ist, sobald der Filter Heater zuschlägt fehlt dem Addition Heater der Wert zur Berechnung. Das mit dem berücksichtigen von gefilterten/ungefilterten Datensätzen funktioniert nur im AutoID Heater um Datensätze zu zählen, da hier kein Wert der READ Seite benötigt wird.

Wenn du den GroupBy Heater verwendest landet auf der READ Seite der letzte Datensatz der Gruppierung. Du kannst das ändern, indem du einen weiteren Verarbeitungsschritt hinzufügst und die Datensätze sortierst und dann in umgekehrter Reihenfolge verarbeitest.

Im Anhang findest du ein kleines Beispiel wie es geht. Im Beispiel wird die Textdatei in eine InMemory Adapter Tabelle eingelesen. Hierbei wird über den AutoID Heater  die ursprüngliche Reihenfolge festgehalten. Im zweiten Verarbeitungsschritt wird die InMemory Adapter Tabelle anhand der Reihenfolge (AutoID) absteigend sortiert verarbeitet.

InMemory Adapter Tabelle sortiert ausgeben


Dateianhang:

Dateiname: umgekehrte...olge.zip
Dateigröße:10 KB
Kategorie: Allgemein
12 Okt 2020 06:58
  • Ralf Birk
  • Ralf Birks Avatar
Hallo Robert,

ich habe folgendes Problem mit dem Additions-Heater:
Ich habe einen Groupby auf ein Read-Feld. Mitt dem Additions-Heater zähle ich Werte aus einem Feld mit der Option "Auswirkung auf Grouby". Diesen Gesamtwert der Gruppe brauche ich in meiner Write-Datei, was auch ohne Probleme klappt.
Mein Problem ist, dass ich in der Ausgabedatei immer nur den ersten Datensatz der Gruppe benötige. Diese Datensätze herauszufiltern ist ja kein Problem (ID., IfThen- und Filter-Heater). Leider zählt er dann nur die gefilterten Werte zusammen (In diesem Fall immer den ersten Datensatz).
Wenn ich zum Testen die IFThen-Abfrage negiere bekomme ich auch die korrekten Gesamtwerte der (eigentlich nicht zu exportierenden) Daten.

Gibt es eine Möglichkeit auch bei gefiltzerten Daten die Gesamtsumme der Gruppe in den Write zu schreiben?
Wäre eine Zusätzliche Option im Additions-Heater (Z.B. "Groupby ungefiltert) möglich?

Vielen Dank schon einmal im Voraus

Gruß Ralf
Kategorie: Allgemein
02 Okt 2020 05:20
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Michael,

Das mit “kommen” und “gehen” in einem Datensatz geht natürlich auch wird aber etwas komplexer :-) Ich habe mal im Angang ein Beispiel dazu erstellt. Hier werden folgende Verarbeitungsschritte ausgeführt.
  1. Einlesen der Textdatei in die InMemory Adapter Tabelle „Stempelzeiten“ und markieren des ersten Datensatzes der Gruppierung über die Felder Mandant, Mitarbeiter und Datum.
  2. Die Arbeitsstunden über die Gruppierung berechnen, die Stunden werden zur Gruppierung nach den Feldern Mandant, Mitarbeiter und Datum in einer weiteren InMemory Adapter Tabelle „Summen“ abgelegt.
  3. Hier wird die letzte Stempelzeit markiert.
  4. Ausgabe in die Textdatei. Die Daten werden anhand der Felder Mandant, Mitarbeiter und Datum über den GroupBy Heater  gruppiert, sowie werden nur markierte (Erster/Letzter Datensatz) bei der Verarbeitung im InMemory Adapter berücksichtigt (= WHERE Klausel [FirstLast] = 'ja'). Über die weitere Bedingung wird gesteuert, dass das Feld „KOMMEN“ nur beim ersten Datensatz der Gruppierung gesetzt wird. Die Summen der Arbeitsstunden wird hier über den String Replace Heater  per Datenlookup aus der InMemory Adapter Tabelle „Summen“ realisiert.
Schauen Sie sich das bitte mal an, ich denke das sollte das sein, was Sie benötigen.

Dateianhang:

Dateiname: exportza.zip
Dateigröße:26 KB
Kategorie: TextFile Adapter
1 - 15 von 95 Ergebnissen angezeigt.
Ladezeit der Seite: 0.829 Sekunden

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

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

Follow us on

twitter  facebook

YouTube

 de en