0

我有一个逗号分隔的源平面文件,文件具有开始日期和结束日期的标题,下一行包含所有提交的名称并继续源文件的数据 例如:以逗号分隔的源文件,然后使用java转换来分割行

"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"," 

所以现在我与1000精密阅读它作为一个长字符串,然后我想用Java转换,并将它们与在多个标题蔓延列名,和准分裂他们与下面的值。一个输入行将着陆许多目标行。

第一件事:逐行读取文件到一个长串端口。

将“CurrentlyProcessedFileName”端口添加到源以捕获文件名。
计算读取的行数

在逗号分隔行 - 我该如何实现?猜测表达式或Java转换和下面的整个过程在Java中或我可以使用SP,BU如何分割行上的逗号?

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 

对于每个源行,输出行的数量应等于不同Amount_types的计数,(不包括空的)

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.. 

回答

0

可以使用归一化到一个行分成多行。你的情况,你必须分开处理第一行,接下来的3个标题行和数据行。为此,在使用变量的表达式中创建seq否。

您可以在表达式本身中获取开始日期和结束日期:例如,

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

对于分离该标题行和数据行,请使用条件柔儿像seq>1 && seq<=4seq>4

现在你可以使用一个归一化于行拆分为多个行。对于数据行,为载体,合约,pbm_group,计数和金额创建5列,并将计数和金额的发生设置为总数。或计数或金额栏。

您可以对标题列同样使用另一个标准化程序。最后使用joiner转换连接两个流。

您也可以使用java转换,在输入行选项卡上,您已写入类似的逻辑。为了分割行,你可以使用split方法。例如:

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

现在阵列fields将包含所有字段的数组元素。您可以将适当的元素分配给输出端口,并调用Informatica的generateRow()方法来创建目标记录。

+0

感谢您输入smack,我想使用java转换,所以这里是我用来分割逗号分隔的行的代码。String [] str = Col1.split(“,”); (int i = 0; i kiran

+0

是的,你正朝着正确的方向前进。由于前三个字段对于所有行都是通用的,因此您不必将其放入for循环中。你可以使用str [0],str [1]和str [2]。从3运行for循环以第2步结束以获取金额。 – Samik

+0

Samik,我的问题是我用逗号分割文件后,我需要做的第一件事是找到字符串的长度如何编写代码当前RowNumber = 1然后 vINVC_BGN_DT:= field1 vINVC_END_DT:= field2 你能告诉我一个例子在Java请 – kiran