0

Ich habe eine Quelle flache Datei mit Komma getrennt, Datei hat Header mit Startdatum und Enddatum, die nächste Zeile hat alle archivierten Namen und mit dem fortgesetzt Daten Beispiel Quelldatei:Quelldatei mit Komma seperated und dann verwenden Sie die Java - Transformation zum Aufteilen der Zeilen

"2015-05-09","2015-06-05"                                                                                                                                                                                                                          
"CARRIER ","CONTRACT   ","ELGBL/GRP   ","     ","TOTAL FEES","TOTAL FEES  ","PMPM ACA ","PMPM ACA ","RETAIL  ","RETAIL  ","MEDICAID ","MEDICAID ","STATE ","STATE ","MAIL SERVICE","MAIL SERVICE","RETAIL  ","RETAIL  ","POSTAGE - ","POSTAGE - ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","SYSTEM  ","OTHER  ","OTHER  ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   
"  ","     ","     ","     ","COUNT  ","AMOUNT   ","METAL  ","METAL  ","DIRECTS  ","DIRECTS  ","   ","   ","HEALTH  ","HEALTH  ","CLAIMS  ","CLAIMS  ","PHARMACY ","PHARMACY ","BULK  ","BULK  ","MCRCF  ","MCRCF  ","MCRCP  ","MCRCP  ","MPA   ","MPA   ","MRXC  ","MRXC  ","PPACA  ","PPACA  ","QPC   ","QPC   ","RXSEL  ","RXSEL  ","SPCR  ","SPCR  ","COUNT  ","AMOUNT  ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   
"  ","     ","     ","     ","   ","    ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","COUNT  ","AMOUNT  ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   ","   
"1234 ","ABCD5678   ","ABCOEFITEST1  ","     ","   1","   1.60","  1","   1.60","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  
"1234 ","ABCD5678   ","ABC200074002  ","     ","   6","   3.20","  2","   3.20","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  4","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  
"1234 ","ABCD5678   ","ABC200178002  ","     ","   2","   1.60","  1","   1.60","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  1","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  
"1234 ","ABCD5678   ","ABC200197001  ","     ","   1","   1.60","  1","   1.60","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  
"1234 ","ABCD5678   ","ABC200204002  ","     ","   2","   3.20","  2","   3.20","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  
"1234 ","ABCD5678   ","ABC200204003  ","     ","   2","   3.20","  2","   3.20","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  
"1234 ","ABCD5678   ","ABC200232002  ","     ","   4","   1.60","  1","   1.60","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  3","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  
"1234 ","ABCD5678   ","ABC200300001  ","     ","   7","   1.60","  1","   1.60","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  6","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  
"1234 ","ABCD5678   ","ABC200345002  ","     ","   1","   1.60","  1","   1.60","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  
"1234 ","ABCD5678   ","ABC200414001  ","     ","   9","   3.20","  2","   3.20","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  7","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  
"1234 ","ABCD5678   ","ABC200491003  ","     ","   1","   1.60","  1","   1.60","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00","  0","   0.00"," 

so jetzt ich es als eine lange Kette mit 1000 Präzision lese und dann möchte ich Java-Transformation verwenden, und teilen sie sie mit Spaltennamen, die über mehrere Header verteilt sind, und Associate sie mit den Werten darunter. Eine Eingabezeile landet so viele Zielzeilen.

erste Sache: Datei Zeile für Zeile in einen langen String-Port lesen.

Fügen Sie den Port "CurrentlyProcessedFileName" zur Quelle hinzu, um den Dateinamen zu erfassen.
Anzahl der gelesenen Zeilen zählen

Die Zeile in Kommas aufteilen - wie implementiere ich das? rate expression oder java transformation und der untenstehende ganze Prozess in Java oder kann ich SP verwenden, bu wie spalte ich die Zeile in Kommata?

If Current RowNumber = 1 Then  
     vINVC_BGN_DT := field1 
     vINVC_END_DT := field2 

    If Current RowNumber > 1 
     If field1 != $$CARRIER Then 
    NAME1 := NAME1 || field1 #Initialize NAME variables to an empty string 
    NAME2 := NAME2 || field2 
    NAME3 := NAME3 || field3 #repeat for each comma seperated field 
     If field1 = $$CARRIER Then 
    VALUE1 := field1 
    VALUE2 := field2 
    VALUE3 := field3   #repeat for each comma seperated field 

Für jede Quellenreihe, die Anzahl der ausgeprägten Amount_types, (ohne leere) die Anzahl der Ausgabereihen sollten

For i in NAME4.NAMEx loop 
     if NAMEi is not spaces or null then generate row 
      target.INVC_TYPE = "CLAIM" 
      target.FILE_RECEIPT_SK 
      target.CARRIER := VALUE1 
      target.CNTRCT := VALUE2 
      target.PBM_GROUP := VALUE3 
      target.INVC_BGN_DT := vINVC_BGN_DT #From row1 
      target.INVC_END_DT := vINVC_END_DT #From row1 
      target.INVC_AMOUNT_TYPE := NAMEi 
      target.INVC_AMOUNT := VALUEi 
    end i loop.. 

Antwort

0

gleich Sie einen Normalisierer einer Zeile in mehrere Reihen aufgeteilt verwenden können. In Ihrem Fall müssen Sie die erste Zeile, die nächsten 3 Kopfzeilen und die Datenzeilen separat verarbeiten. Dazu erstellen Sie ein seq no in einem Ausdruck mit einer Variablen.

Sie können das Anfangs- und Enddatum im Ausdruck selbst erhalten: Ex.

begin_date:= iif(seq=1, field1, begin_date) 

Für die Kopfzeilen und Datenzeilen seperating, verwenden Sie einen Rouer mit Bedingungen wie seq>1 && seq<=4 und seq>4

Jetzt können Sie eine Normalisierungseinrichtung verwenden, um die Zeile in mehrere Zeilen aufgeteilt. Erstellen Sie für die Datenzeilen 5 Spalten für Träger, Vertrag, PBM_Gruppe, Anzahl und Betrag und setzen Sie das Vorkommen von Anzahl und Betrag auf die Gesamtanzahl. oder Zähl- oder Betragsspalten.

Sie können einen anderen Normalizer für die Header-Spalten ähnlich verwenden. Schließlich verbinden Sie die beiden Flüsse mithilfe der Joiner-Transformation.

Sie können auch eine Java-Umwandlung verwenden, in der Registerkarte für die Eingabezeile haben Sie eine ähnliche Logik geschrieben. Zum Teilen der Zeile können Sie die Split-Methode verwenden. Ex:

String[] fields=row.split(","); 

nun das Array fields würde alle Felder als Array-Elemente. Sie können den Ausgabeports entsprechende Elemente zuweisen und die Methode generateRow() von Informatica aufrufen, um einen Zieldatensatz zu erstellen.

+0

Danke für Ihre Eingabe smack, ich möchte Java-Transformation verwenden, also hier ist der Code, den ich verwendet, um die Zeilen zu trennen, die Komma getrennt sind. String [] str = Col1.split (","); für (int i = 0; i kiran

+0

Ja, Sie gehen in die richtige Richtung.Da die ersten drei Felder für alle Zeilen gemeinsam sind, müssen Sie sie nicht für eine Schleife einfügen. Sie können einfach str [0], str [1] und str [2] verwenden. Führen Sie die for-Schleife von 3 bis zum Ende mit Schritt 2, um die Beträge zu erhalten. – Samik

+0

Samik, meine Frage ist, nachdem ich die Datei mit den Kommas geteilt habe, zuerst muss ich die Länge der Zeichenfolge finden, wie schreibe ich Code für If Current RowNumber = 1 Dann vINVC_BGN_DT: = field1 vINVC_END_DT: = field2 können Sie mir bitte ein Beispiel in Java zeigen – kiran

Verwandte Themen