2009-03-24 3 views
0

Я работаю над умеренно сложной схемой плоских файлов, и у меня был кривый шар, брошенный на меня. Вот то, что вход выглядит следующим образом:Проблема с отображением Biztalk, идеи

BCT121, C, 7.35,6.5,0.39,7216, "СМИТ, Трэйси", 13456321, CLASS швейном SHOPPE, CLASS швейном SHOPPE, VAN, BC, 20090109,20090112,20090127, V , 0,46, BCT121, C, 14,7,13,01,0,78,7216, «SMITH, TRACEY», 13456321, CLASS DRESSMAKING SHOPPE, CLASS DRESSMAKING SHOPPE, VAN, BC, 20090110,20090112,20090127, V, 0.91, BCT121, C , 60,27,53,34,3,2,5812, «СМИТ, ТРЕЙСИ», 13456321, ПИЛЗА ПИЦЦЫ ME-N-ED, ПИЛЗА ПИЦЦЫ ME-N-ED, VAN, BC, 20090110,20090112,20090127, V, 3,73, BCT121, C, 201,56,179,96,0,5200, «SMITH, TRACEY», 13456321, ДОМАШНИЙ ДЕПОЗ № 7145, ДОМАШНИЙ ДЕПОЗ № 7145, ВАН, БК, 20090110,20090112,20090127, V, 21.6, REF. #^1^

Хорошо, поэтому выход, который хочет клиент, следующее:

1 строка заголовка под названием PRQT для каждого человека/номер карты и строка для каждой из транзакций выше .. поэтому для Tracy у нас будет 1 линия PRQT и 4 строки PRLN, которые являются данными транзакции. ., так что это будет выглядеть как что-то вроде:

PRQT, SMIT6321, 13456321, детали, детали и т.д.

PRLN, SMIT6321,7.35, 6,5 и т.д. и т.п.

PRLN, SMIT6321, 14,7 , 13.01 и т. Д.

PRLN и т. Д. И т. Д.

PRLN и т.д. и т.п.

нормально, так что моя основная проблема заключается в том, чтобы вставить только один prqt запись для заголовка? Я смотрю на логические функционалы, чтобы увидеть, есть ли они, которые могут посмотреть, было ли создано существующее значение для выходной схемы. Моим первичным ключом является SMIT6321 (фамилия + последние четыре цифры номера карты). Так что, в основном, если бы я кодировал это в C#, я бы создал массив ранее вставленных ключей PRQT, и в течение моего цикла я бы посмотрел на это, когда я натолкнулся, чтобы увидеть, если я уже создал запись. Если бы я уже создал, я бы пропустил, поэтому я не создал дубликат записи PRQT. Обратите внимание, что записи создаются в хронологическом порядке в исходном документе, поэтому вышеупомянутые записи, вероятно, будут перемешаны, а не последовательны, как пример выше.

Может ли кто-нибудь указать мне правильное направление? Какие функциоиды следует использовать? Может ли Biztalk Mapper обрабатывать подобные вещи? Я уверен, что это может ... Мне просто нужно понять это.

спасибо,

Эрик

ответ

1

Эрик,

Я хотел бы посмотреть на карту делать в пользовательских XSLT. Картер (хотя и мощный по своему усмотрению) не даст вам 100% того, чего вы хотите, не пройдя через обручи. Используя пользовательский XSLT, вы сможете выполнять полные сортировки по полям и правильно перемещать документ, чтобы получить желаемый результат. Для решения таких проблем в будущем есть новая книга под названием BizTalk 2009 Pro Mapping от APress, которая затрагивает такие проблемы, как ваша.

-Bryan

+0

благодарит за ответ. Я закончил использовать пользовательский XSLT, и, хотя изначально было немного сложно понять, он оказался довольно прямым. Я закончил тем, что использовал фильтр, а затем зацикливал (для каждого) все мои записи, чтобы получить желаемый результат выше. еще раз спасибо. –

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