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 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
16 Aug 2019 05:18
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Herrmannsfeldt,

Bin mir nicht sicher ob ich das richtig verstanden habe, habe mal ein einfaches Beispiel dazu erstellt, siehe Anlage.

Im Beispiel wird im ersten Verarbeitungsschritt die CSV Datei in eine InMemory Adapter Tabelle eingelesen.

Info: Wenn Sie den SQL Server Export gleich richtig sortieren kann der erste Verarbeitungsschritt sowie der Umweg über die InMemory Adapter Tabelle weggelassen werden!

Im zweiten Verarbeitungsschritt wird dann die interne InMemory Adapter Tabelle sortiert anhand der Felder Artikelnummer und ListenID ausgegeben sowie über den GroupBy Heater wird dann die Verarbeitung anhand des Feldes Artikelnummer gruppiert. Jetzt können Sie die Feldinhalte anhand der Gruppierung über den String Append Heater zusammenfassen, als Trennzeichen verwenden Sie das gleiche Trennzeichen das für die CSV Datei verwendet haben.

Achtung: Für den String Append Heater muss die Gruppierung aktiviert werden, siehe Screenshot.

Auf der WRITE Seite geben Sie dann dieses gruppierte Feld in einem Feld aus. Wenn Sie Feldnamen mit ausgeben möchten, muss hierbei der Feldname für dieses Feld „PreisListe_1;PreisListe_2;PreisListe_3;PreisListe_4;PreisListe_5;… bis zum Maximum das Sie erwarten“ lauten!



Dateianhang:

Dateiname: gruppierun...8-16.zip
Dateigröße:196 KB
Kategorie: Excel Adapter
29 Jul 2019 17:54
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Marko,

in dem Fall kannst du den GroupBy Heater einfach einen Dummy Wert über den X-Value Heater übergeben. Da dieser Wert ja immer der gleiche ist, werden so automatisch alle Zeilen zu einer zusammengefasst und du kannst pro Spalte deine Berechnungen durchführen.

Im Anhang findest du ein kleines Beispiel dazu.

Dateianhang:

Dateiname: gruppieren.zip
Dateigröße:2 KB
Kategorie: Allgemein
28 Jun 2019 15:56
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Marko,

das geht mit dem AutoID Heater und aktivierter Option „Auswirkung auf -> Gleiche Eingangsparameter“, siehe Screenshot.

Damit pro Dezimalwert nur eine Zeile mit der Anzahl ausgegeben wird muss über das Feld gruppiert ( GroupBy Heater ) werden. Das Funktioniert aber nur wenn die Werte sortiert vorliegen. Am einfachsten ist es daher in einem ersten Verarbeitungsschritt die Excel Liste in eine FlowHeater interne InMemory Tabelle einzulesen und im zweiten Verarbeitungsschritt die Tabelle sortiert auszugeben und darüber dann die Gruppierung durchzuführen. Den AutoID Heater brauchen Sie nur dazwischen zuhängen.

Im Anhang finden Sie ein Beispiel dazu.



Dateianhang:

Dateiname: werte-zaehlen.zip
Dateigröße:2 KB
Kategorie: Excel Adapter
17 Jun 2019 17:20
  • K. May
  • K. Mays Avatar
Hallo Herr Stark,
Sie sind die Härte! Ein Wunsch, ein Wunder und schon ist mal als Kunde happy!
Das hat perfekt und auf den ersten Anlauf hin geklappt!
Großartig! Vielen, vielen herzlichen Dank!
Beste Grüße
Klaus
Kategorie: Allgemein
16 Jun 2019 09:59
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr May,

hier fehlt wohl noch eine Option im String Append Heater . In der aktuellen Beta Version wurde im String Append Heater eine weitere Option „Bereits vorhandene Werte ignorieren“ hinzugefügt. Wenn Sie diese in Ihrer Definition aktivieren sollte das Ergebnis so sein wie Sie es erwarten, siehe Screenshot.



Beta Version Download
FlowHeater Beta 32 Bit
FlowHeater Beta 64 Bit
FlowHeater Server Beta
Kategorie: Allgemein
1 - 15 von 90 Ergebnissen angezeigt.

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