0

У меня есть исходный плоский файл с разделенным запятой, файл имеет заголовок с датой начала и датой окончания, следующая строка содержит все имена, данные пример исходного файла:Исходный файл с запятой saperated, а затем использовать преобразование 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 и разделить их с именами столбцов, которые распределены по нескольким заголовка и ассоциированную их значениями ниже. В одной строке ввода будет указано столько строк-мишеней.

Первое: прочитайте файл по строкам в длинный строковый порт.

Добавить порт «CurrentProcessedFileName» в источник для захвата имени файла.
Подсчитайте количество строк, прочитанных

Разделить строку на запятую - как это реализовать? угадывание выражения или преобразования 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

Вы можете использовать нормализатор, чтобы разделить одну строку на несколько строк. В вашем случае вы должны обрабатывать первую строку, следующие три строки заголовка и строки данных. Для этого создайте seq no в выражении, используя переменную.

Вы можете получить дату начала и окончания в самом выражении: пример.

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

Для разделяющей строки заголовка и строки данных, используйте rouer с условиями, как seq>1 && seq<=4 и seq>4

Теперь вы можете использовать нормализатор разбить строку на несколько строк. Для строк данных создайте 5 столбцов для несущей, контракта, pbm_group, count и суммы и установите количество и количество сумм в общее число. или подсчета или количества столбцов.

Аналогичным образом вы можете использовать другой нормализатор для столбцов заголовка. Наконец, присоедините два потока, используя преобразование столяра.

Вы также можете использовать преобразование java, на вкладке строки ввода, вы пишете аналогичную логику. Для разделения строки вы можете использовать метод split. Пример:

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

Теперь массив fields будет содержать все поля в качестве элементов массива. Вы можете назначить соответствующие элементы для вывода портов и вызвать метод Informatica generateRow() для создания целевой записи.

+0

Спасибо за ваш ввод smack, я хочу использовать преобразование Java, поэтому вот код, который я использовал для разделения строк, разделенных запятой. String [] str = Col1.split (","); для (int i = 0; i kiran

+0

Да, вы идете в правильном направлении.Поскольку первые три поля являются общими для всех строк, вам не нужно вводить их внутри цикла. Вы можете просто использовать str [0], str [1] и str [2]. Запустите цикл for от 3 до конца с шагом 2, чтобы получить суммы. – Samik

+0

Samik, мой вопрос в том, что после того, как я разделил файл запятыми, первое, что мне нужно сделать, это найти длину строки, как написать код для If Current RowNumber = 1 Then vINVC_BGN_DT: = field1 vINVC_END_DT: = field2 Можете ли вы показать мне пример в java, пожалуйста, – kiran

Смежные вопросы