Zur Homepage www.HI-Tier.de Filter im HitBatch
Home Nach oben
Öffentlicher Bereich für Entwickler

 

Filter im HitBatch

In jedem [Set] wird im Normalfall ein Batch-Verarbeitungsschritt durchgeführt, d.h. Daten werden aufbereitet oder Abfragen zusammengestellt und per Protokollbefehl(e) an HIT gesendet, anschließend Antworten ausgewertet und schließlich in an gegebene Ausgabedateien weggeschrieben.

Neben diesen lassen sich auf lokale (CSV-)Dateien bestimmte Filter durchführen. Dazu wird der Parameter FilterArt mit einer speziellen numerischen Angabe versehen. Ohne Angabe ist die FilterArt=0.

FilterArt=   Beschreibung
0 NORM normaler HitBatch-Verarbeitungsschritt (Vorgabe)
1 COPY reines Kopieren der Datensätze aus der Inputdatei (InFile) in die Outputdatei (OuFile);

ggf. anwenden von Post-Output-Processing aus optionaler POP-Steuerdatei (PopFile)

2 FILTER klassischer Filter: kopiere nur Daten aus der Inputdatei (InFile) in die Outputdatei (OuFile), wenn die Daten auch in der Filterdatei (FilterFile) vorkommen, also "copy IN to OUT if exist in FILTER"
3 INVERS klassischer Filter (anders herum): kopiere nur Daten aus der Filterdatei (FilterFile) in die Outputdatei (OuFile), wenn die Daten auch in der Inputdatei (InFile) vorkommen, also "copy FILTER to OUT if exist in IN"
4 NEGATIV negativer Filter: kopiere nur Daten aus der Inputdatei (InFile) in die Outputdatei (OuFile), wenn die Daten nicht in der Filterdatei (FilterFile) vorkommen, also "copy IN to OUT if not exist in FILTER"
5 OR
(Oder)
kopiere Daten aus der Inputdatei (InFile) bzw. der Filterdatei (FilterFile) einmal in die Outputdatei (OuFile), wenn die Daten in einer oder beiden Dateien vorkommen

Die Dateien sollten gleich strukturiert sein. Wenn Daten beiden existieren, wird nur der Datensatz aus InFile in OuFile kopiert

6 OR-INV
(Oder, invers)
kopiere Daten aus der Inputdatei (InFile) bzw. der Filterdatei (FilterFile) einmal in die Outputdatei (OuFile), wenn die Daten in einer oder beiden Dateien vorkommen

Die Dateien sollten gleich strukturiert sein. Wenn Daten beiden existieren, wird nur der Datensatz aus FilterFile in OuFile kopiert

7 XOR
(Exklusiv Oder)
kopiere nur Daten aus der Inputdatei (InFile) bzw. der Filterdatei (FilterFile) in die Outputdatei (OuFile), wenn die Daten nur einmal vorkommen (entweder InFile oder FilterFile, nicht aber in beiden)
8 JOIN die beiden Tabellen verschneiden ("joinen"), also jeden Satz des InFile mit jedem Satz des FilterFile kombinieren und in Ausgabe übernehmen, falls Filter-Spalten übereinstimmen
9 JOIN-Left die beiden Tabellen "left outer joinen", also jeden Satz des InFile mit jedem Satz des FilterFile kombinieren und in Ausgabe übernehmen falls Filter-Spalte übereinstimmen oder in FilterFile nicht gefunden
10 JOIN-Right die beiden Tabellen "right outer joinen", also jeden Satz des InFile mit jedem Satz des FilterFile kombinieren und in Ausgabe übernehmen falls Filter-Spalte übereinstimmen oder in InFile nicht gefunden
11 JOIN-Full die beiden Tabellen "right and left outer joinen", also jeden Satz des InFile mit jedem Satz des FilterFile kombinieren und in Ausgabe übernehmen falls Filter-Spalte übereinstimmen oder nur in InFile oder nur in FilterFile gefunden
12 GROUP siehe Gruppierung unten
20 SORT reines Sortieren der Datensätze aus der Inputdatei (InFile) in die Outputdatei (OuFile); die Angaben zur Vergleichsspalte Flt_Col_In, FilterNumeric und FilterDistinct werden berücksichtigt

Bis v52: InFile und OuFile dürfen nicht identisch sein, damit "in place"-Sortierung funktioniert!
Ab v53 dürfen sie identisch sein.

21 - 31   analog den Filtern 1 - 11, aber mit "in place"-Sortierung von InFile und ggf. FilterFile
In v51 und v52 lieferten die Filter einen Fehler und wurden nicht ausgeführt; ist ab v53 wieder möglich.
 
90 SUBST-BNR In der Inputdatei (InFile) werden die in Flt_Col_In angegebenen Spalten ersetzt durch autoinkrementell erzeugte Betriebsnummern ersetzt, dessen Startwert und Form in FilterParms als <start-bnr>;<0|1> angegeben werden (0 steht für alphanumerische Form, 1 für die rein numerische), dann in die Outputdatei (OuFile) geschrieben. Die Übersetzungstabelle mit allen relevanten Metadaten wird in FilterFile gespeichert und bei der nächsten Verwendung auch wieder von dort gelesen. So lassen sich pseudo-anonyme Daten in den gegebenen Spalten erzeugen.
91 SUBST-LOM In der Inputdatei (InFile) werden die in Flt_Col_In angegebenen Spalten ersetzt durch autoinkrementell erzeugte Ohrmarkennummern ersetzt, dessen Startwert und Form in FilterParms als <start-lom>;<0|1> angegeben werden (0 steht für alphanumerische Form, 1 für die rein numerische), dann in die Outputdatei (OuFile) geschrieben. Die Übersetzungstabelle mit allen relevanten Metadaten wird in FilterFile gespeichert und bei der nächsten Verwendung auch wieder von dort gelesen. So lassen sich pseudo-anonyme Daten in den gegebenen Spalten erzeugen.
92    
93 SPLIT die Inputdatei (InFile) wird beim Gruppenwechsel, definiert durch die Vergleichsspalten in Flt_Col_In, in jeweils neue Teildateien gesplittet. Der Name ergibt sich aus dem Namenstemplate im Parameter FilterFile, wobei mittels #[x] der Inhalt der Filterspalte referenziert werden kann, z.B.
FilterFile=outpath\Register #[1] #[3] - #[4].csv
94 SUBST-UUID Ersetze Text durch eine UUID; lese und speichere die Übersetzungstabelle in FILTERFILE; spezielle Parameter in FilterParms=<use ignore case>, Wert: 0=nein (default) oder 1=ja
 

 

Gruppierung

Wenn FilterArt=12 (oder 32 mit Sort), dann muss Gruppenbildung über Flt_Col_IN erfolgen und der Inhalt der bei FilterFile angegebenen Datei aus genau 3 Zeilen bestehen:

  1. Name der neuen Ausgabespalten
  2. Funktion, die auf die Werte innerhalb der Gruppe angewendet werden sollen.
    Folgende sind möglich:
    bulletFIRST: Nimmt den Wert der ersten Gruppenzeile
    bulletLAST; Nimmt den letzen
    bulletMIN: Nimm den kleinsten
    bulletMAX: Nimm den größten
    bulletCOUNT: Zähle Anzahl Zeilen in der Group
    bulletCOUNTR: Zähle Anzahl Werte (not null) in der Group
    bulletCOUNTD: Zähle Anzahl eindeutiger Werte (not null) in der Gruppe
    bulletSUM: Summiere
    bulletAVG: Bilde Durchschnitt
    bulletCONCAT: Hänge Werte Komma getrennt hintereinander
  3. Namen der Spalten im InFile, die in jeweiligen Funktionen der Zeile 2 verwendet werden soll

Beispiel:

HitBatch.INI

[SET-1]
Befehl=*1:RS/F:BTR_T/BNR_15;TYP_BETR;$CODEKURZ(TYP_BETR/Typ):BNR15:IS;09131;ORDER;1;2
OUFILE=Set01.CSV
LOGFILE=Set01.LOG

[SET-2]
; Group ohne Sort
FilterArt=12
INFILE=Set01.CSV
; welche Spalten sind für GROUP
Flt_Col_IN=1
; Filter-Angaben siehe unten
FilterFile=Set02.FLT
OUFILE=Set02.CSV
LOGFILE=Set02.LOG

Set02.FLT

BNR;Anzahl;Alle_Typen
First;Count;Conact
BNR15;TYP_BETR;Typ

Zurück zum Anfang

Stand: 04.10.2017 RP, HZ