Как изменить разделитель строк в Ab Initio?

На графике Ab Initio у меня есть входной файл, в строках которого есть значения, разделенные трубой. Я использую аналогичный файл DML для его анализа:

record
  decimal("|",0, maximum_length=19, sign_reserved) v1 = NULL("");
  utf8 string("|", maximum_length=10) v2 = "";
  utf8 string("|", maximum_length=10) v3 = "";
  utf8 string("|", maximum_length=40) v4 = "";
  utf8 string("|", maximum_length=255) v5 = "";
  utf8 string("\n", maximum_length=40) v6 = "";
end

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

Я попытался сделать это с помощью простого переформатирования, изменив выходной DML на этот и оставив функцию преобразования пустой:

record
  decimal("|",0, maximum_length=19, sign_reserved) v1 = NULL(""); 
  utf8 string("|", maximum_length=10) v2 = "";
  utf8 string("|", maximum_length=10) v3 = "";
  utf8 string("|", maximum_length=40) v4 = "";
  utf8 string("|", maximum_length=255) v5 = "";
  utf8 string("|", maximum_length=40) v6 = "";
  string(1) newline = "\n";
end

Однако это оставило мусорный символ внутри v6. Позже мне нужно было отфильтровать значение v6, чтобы оно содержало только правильные символы. Это решение не кажется аккуратным.

Чтобы избежать этого хлама, оставшегося внутри v6, я пытался использовать reinterpret_as, string_concat и другие, но ничего не закончилось хорошим решением. Как мне изменить разделитель v6 простым способом?


person Denikin    schedule 01.03.2013    source источник
comment
Я запустил ваше решение, но сработало нормально, в файл o/p не вставлен символ мусора. Пожалуйста, проверьте свой ввод, если у вас уже есть мусорные символы. Если это так, вам необходимо выполнить надлежащую очистку ваших данных в зависимости от вероятности получения этих символов.   -  person chanchal1987    schedule 16.04.2013


Ответы (1)


A == B сравнивает значение A со значением B. Сравнение возвращает один и тот же результат независимо от того, имеют ли A и B одинаковый разделитель или нет. Если вам действительно нужно изменить разделитель поля, предложенный вами метод переформатирования является правильным. Если вы видите мусор в исходящих значениях v6, это означает, что мусор входил в v6.

В более широком смысле Stack Overflow — неподходящее место для обсуждения вещей Ab Initio. Вам лучше задать свой вопрос службе поддержки Ab Initio или на специальном форуме Ab Initio, доступном через GDE. Форум контролируется многочисленными пользователями и сотрудниками Ab Initio, и вы практически гарантированно получите быстрый ответ.

person Chris Arnesen    schedule 20.09.2013