Как получить ПРОМЕЖУТОЧНЫЕ данные из ФАЙЛА

#informatica #informatica-powercenter

#informatica #informatica-powercenter

Вопрос:

У меня есть 10 записей в файле, и мне не нужны первая и последняя строки, мне нужны данные только от 2 до 9 строк.

Кто-нибудь может предоставить мне решение по этому вопросу?

Пример исходного файла:

 SIDE,MTYPE,PAGENO,CONTIND,SUBACC,SIGN,DEAL QUANTITY,SECURITY,SOURCE SYSTEM,TODATE,SETTLEMENT DATE,REFERENCE 4,REFERENCE 2,TRADE DATE,ACCRUED INTEREST,ACCRUED INTEREST CURRENCY,XAMT1,XAMT2,XAMT3,XAMT4,XAMT5
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,00107020052_CSA,107020052,6/12/2013,0,USD,,0,250000,0,200000
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,00115020036_CSA,115020036,6/12/2013,0,USD,,0,250000,0,220000
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,00301410097_CSA,301410097,6/12/2013,0,USD,,0,226725,0,226725
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,00030020088_CSA,30020088,6/12/2013,0,USD,,0,250000,0,250000
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,00106410075_CSA,106410075,6/12/2013,0,USD,,0,250000,0,260000
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,00116510010_CSA,116510010,6/12/2013,300000,USD,,0,250000,0,260000
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,00177020015_CSA,177020015,6/12/2013,0,USD,,0,250000,0,270000
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,00189110093_CSA,189110093,6/12/2013,0,USD,,0,250000,0,280000
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,00272220015_CSA,272220015,6/12/2013,0,USD,,0,250000,0,10000
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,SLAVE1,189110093,6/12/2013,0,USD,,0,250000,0,250000
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,SLAVE2,272220015,6/12/2013,0,USD,,0,250000,0,1000
L,536,1,M,L_CAMS_COLATAGREEMENT,C,0,AGREEMENTS,CAMS_AGREEMENT,6/12/2013,6/12/2013,SLAVE3,301410097,6/12/2013,0,USD,,0,250000,0,200
  

Комментарии:

1. Требования отсутствуют. чтобы удалить заголовок, я просто хотел взять все данные, кроме последней строки, пожалуйста, предложите.

2. проблема в том, что я не смог передать значение из agg. для joiner при подключении из exp. к joiner и agg ссылки не видны. для joiner, однако, у меня есть свойство setup как сортированный вывод, но все еще проблема. то же самое, пожалуйста, предложите.

3. Опять же, можете ли вы обработать исходный файл с помощью простого скрипта Bash (вызываемого из рабочего процесса), чтобы избавиться от последней строки?

Ответ №1:

Не специалист в области информатики, но я нашел следующий ответ в Интернете, надеюсь, он будет вам полезен.

Шаг 1. Вы должны присвоить номера строк каждой записи. Сгенерируйте номера строк, используя преобразование выражения. Создайте ФИКТИВНЫЙ выходной порт в том же преобразовании выражения и назначьте 1 этому порту. Таким образом, ФИКТИВНЫЙ выходной порт всегда возвращает 1 для каждой строки.

Шаг 2: Передайте выходные данные преобразования выражения в агрегатор и не указывайте никаких условий группирования по. Создайте выходной порт Ototalrecords в агрегаторе и назначьте ему порт Ocount. Агрегатор по умолчанию вернет последнюю строку. Выходные данные aggregator содержат ФИКТИВНЫЙ порт, который имеет значение 1, и порт Ototal_records, который имеет значение общего количества записей в источнике.

Шаг 3: Передайте выходные данные преобразования выражения, преобразования агрегатора в преобразование joiner и join на ФИКТИВНОМ порту. В объединительном преобразовании проверьте входные данные, отсортированные по свойству, тогда только вы можете подключить как выражение, так и агрегатор к объединительному преобразованию.

Шаг 4: На последнем шаге используйте преобразование маршрутизатора. В преобразовании маршрутизатора создайте две выходные группы. В первой группе условие должно быть Ocount = 1 и подключать соответствующую выходную группу к таблице A. Во второй группе условие должно быть Ocount = Ototalrecords и подключать соответствующую выходную группу к таблице B. Выходные данные группы по умолчанию должны быть подключены к таблице C, которая будет содержать все записи, кроме первой и последней.

Источник: http://www.queryhome.com/47922/informatica-how-to-get-middle-data-from-a-file

Ответ №2:

С точки зрения informatica, существует несколько способов сделать это. если данные в плоском файле, sqloverride не будет работать. вы можете создать две конвейерные линии, первую строку, прочитанную из источника, и использовать aggregator, чтобы получить количество и присвоить переменной сопоставления, такой как v_total. во второй строке канала вы используете другую переменную v_count, инициализируете 0 , вызываете функцию подсчета. создайте преобразование фильтра, отфильтруйте v_count=1 и (v_total-v_count)= 1, остальные будут загружены в цель.

Ответ №3:

Кажется, что много кода тратится впустую, что делает отображение излишне сложным, когда простая команда unix, такая как head -9 (currentfilename) (newinputfilename)

Выполнит эту работу. Затем все, что вам нужно сделать, это использовать новый файл для вашего сопоставления (если он вам еще нужен)

Для эквивалента Windows server см. https://serverfault.com/questions/490841/how-to-display-the-first-n-lines-of-a-command-output-in-windows-the-equivalent