2016-08-08 9 views
0

Ich versuche einen SYNCSORT-Job auszuführen, der doppelte Einträge entfernt, und wenn ich ihn ausführe, erhalte ich immer noch Duplikate. Im Folgenden ist der SYNCSORT Code Ich verwende:Syncsort Summe Felder = Keine entfernt keine Duplikate

INCLUDE COND=(((61,1,CH,EQ,C'P'),OR, 
       (61,1,CH,EQ,C'V')),AND, 
       (8,2,CH,EQ,C'FL'))  
OUTREC FIELDS=(1:12,20,    
       30:36,20,    
       55:61,1)    
SORT FIELDS=(30,20,CH,A,    
      01,20,CH,A)    
SUM FIELDS=NONE      

Der Eingang ist wie folgt:

----+----1----+----2----+----3----+----4----+----5----+----6 
     FL       AMELIA CITY    
32034 FL NASSAU     FERNANDINA BEACH   P 
32034 FL NASSAU     AMELIA CITY    V 
32034 FL NASSAU     AMELIA ISLAND   S 
32034 FL NASSAU     FERNANDINA    S 

Ich erhalte die meisten der erwarteten Ausgabe, mit der Ausnahme, dass ich noch Duplikate immer bin. Die Ausgabe, die ich habe, ist wie folgt:

----+----1----+----2----+----3----+----4----+----5----+ 
MANATEE      BRADENTON    P 
MANATEE      BRADENTON    P 
MANATEE      BRADENTON    P 
MANATEE      BRADENTON    P 
MANATEE      BRADENTON    P 
MANATEE      BRADINGTON    V 
POLK       BRADLEY     P 
HILLSBOROUGH     BRANDON     P 
SUWANNEE      BRANFORD     P 
MIAMI-DADE     BRICKELL     V 

Jede Hilfe würde geschätzt, da ich nicht in der Lage bin meine Fehler zu finden.

+0

Zunächst gilt die Sortierung für die Eingabedatensätze, in denen Sie die Sortierung für die Ausgabedatensätze codiert haben. –

Antwort

3

Dies ist, was Sie Art sind Summieren auf:

< ------------ Sort Field -----------------------> 
----+----1----+----2----+----3----+----4----+----5----+----6 
     FL       AMELIA CITY    
32034 FL NASSAU     FERNANDINA BEACH   P 
32034 FL NASSAU     AMELIA CITY    V 
32034 FL NASSAU     AMELIA ISLAND   S 
32034 FL NASSAU     FERNANDINA    S 

die Doppelte Datensätze werden in den ersten 11 Byte unterscheiden, die Sie nicht sehen können. Versuchen Sie Entfernen Sie die Outrec zu überprüfen.

Mögliche Änderungen -

  • Ändern die outrec zu einem inrec
  • Wieder Code der Art mit Feldern mit dem Ausgang verbunden ist, die folgende sehen: basierend auf

Die folgende Art Sorten die Ausgangsdatensätze:

INCLUDE COND=(((61,1,CH,EQ,C'P'),OR, 
       (61,1,CH,EQ,C'V')),AND, 
       (8,2,CH,EQ,C'FL'))  
OUTREC FIELDS=(1:12,20,    
       30:36,20,    
       55:61,1)    
SORT FIELDS=(42,20,CH,A,    
      12,20,CH,A)    
SUM FIELDS=NONE 
+0

Ich habe am Ende die Outrec zu einem Inrec geändert und dann die Sortierung geändert. –

1

Es spielt keine Rolle, welche Reihenfolge Sie programmieren die verschiedenen Stadien einer "Sortierung" werden in der Reihenfolge ausgeführt, die SORT will.

In Ihrem Fall wird dies sein, dann SORT, dann SUM, dann OUTREC. Sie können überprüfen, dass dies der Fall ist, indem Sie die Steuerkarten vollständig invertieren, Sie erhalten identische Ausgabe.

Wenn Sie etwas vor SORT tun möchten, verwenden Sie INREC, nicht nur versuchen, OUTREC vor der SORT-Anweisung zu finden. Da Sie SORTIEREN, möchten Sie hier nur die Daten angeben, die Sie benötigen. Sie nicht möchten den Abstand für die Formatierung enthalten. Warum sollten Sie Ihre Datei SORT mit zusätzlichen identischen Daten auf jedem Datensatz laden?

Auf INREC und OUTEC bitte nicht FIELDS verwenden. Verwenden Sie auf OUTFIL bitte nicht OUTREC. Es sollte offensichtlich sein, dass FIELDS "überladen" ist (sehen Sie, wie oft Sie FIELDS verwendet haben und wie viele "gleich" sind) und OUTEC ist "überladen". Vor mehr als 10 Jahren wurde BUILD eingeführt, um Dinge viel klarer zu machen - es beschreibt, was es tut, und jedes Mal, wenn Sie BUILD sehen, bedeutet es nur BUILD.

INCLUDE COND=(((61,1,CH,EQ,C'P'), 
       OR, 
       (61,1,CH,EQ,C'V')), 
       AND, 
       (8,2,CH,EQ,C'FL')) 
INREC BUILD=(36,20, 
       12,20, 
       61,1) 
SORT FIELDS=(1,40,CH,A) 
OUTREC BUILD=(21,10, 
       10X, 
       1,20, 
       5X, 
       41,1) 

Die INREC wählen nur die Daten, die Sie mögen, und in einer Reihenfolge, in dem Sie nur eine SORT Schlüssel angeben müssen.

Die OUTREC formatiert dann die Daten wie Sie es wollen. Für jeden Datensatz im SORT wurden 15 Bytes gespeichert (die Leerzeichen).10X ist 10 Leerzeichen, 5X ist fünf Leerzeichen.

Beachten Sie, dass es viel einfacher ist, zu codieren und zu verstehen, und daher wartbarer, wenn Sie "explizite" Leerzeichen anstelle von impliziten mit Spaltennummern einfügen. Abbildung 10 Spalten eines Berichts und der Abstand zwischen den Spalten eins und zwei sind falsch. Möchten Sie alle Spaltenreferenzen ändern, nur um ein zusätzliches Leerzeichen hinzuzufügen, oder möchten Sie lieber 7X zu 8X ändern und der Rest funktioniert selbst? Auch wenn Sie langweilige Änderungen genießen, denken Sie an Ihre Kollegen :-)

Wenn Ihre Daten bereits in der Reihenfolge sind, verwenden Sie nicht SUM FIELDS = NONE. Verwenden Sie die OUTFIL-Berichtsfunktionen REMOVECC, NODETAIL und SECTIONS mit TRAILER3. NIE SORT-Daten nur, um Ihnen zu ermöglichen, Duplikate mit SUM FIELDS=NONE zu entfernen.

Verwandte Themen