powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Pivot в datastage
8 сообщений из 8, страница 1 из 1
Pivot в datastage
    #38370462
Sintetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую коллеги, понадобилось реализовать такой функционал,
есть для некоей сущности набор аттрибутов, ну например для физлица ФИО, паспорт и тп.
число атрибутов переменное. Нужно сделать выборку "склеив" все аттрибуты в одно поле, например через пробел.

например таблица сущносте
10 Физлицо 1
20 Юрлицо 1


И таблица атрибутов
10 иванов
10 иван
10 иванович
20 ооо рога копыта
20 юрадрес тратата
20 инн 567656856
20 окпо 878978
20 налоговая такаято

нужно получить
10 "иванов иван иванович"
20 "ооо рога копыта юрадрес тратата инн 567656856 окпо 878978 налоговая такаято"

Был бы источник Oracle я бы использовал WM_CONCAT на загрузке http://habrahabr.ru/sandbox/36023/
он делает то что нужно, но источник NETEZZA

Делаю через datastage 9.1 Pivot Enterprise stage в нем разворачиваю строки в поля, потом в transformer конкатенирую с пробелами, compactwhitespace+trim
что не нравится - в Pivot Enterprise нужно задать число строк которые разворачиваются в поля, можно и 100 и 1000 указать но оно останется фиксированным. Можно ли как-то сделать с нефиксированным числом строк?
Вроде combine records делает что-то похожее, но я не очень вкурил что такое vectors of subrecords и как с ним работать.
...
Рейтинг: 0 / 0
Pivot в datastage
    #38370475
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у вас DS >= 8.5, то задание можно сделать так:

Database -> Sort stage -> Transformer -> ...

1. В Sort stage выполняете сортировку по ключу (если надо сохранить порядок пришедших строк с одним ключом относительно друг друга - ставите Stable sort)
2. В трансофрмере можно сделать цикл, анализируя вывод LastRowInGroup(), когда будет true - выпускаете сконкатенированную строку, пока не true - накапливаете строк конкатенированием с самой собой.

Вам сюда и сюда !
...
Рейтинг: 0 / 0
Pivot в datastage
    #38370486
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, с появлением циклов по входу/выходу в трансформере - применение Pivot stage может быть полезно только в ряде случаев, где туже логику в трансформере реализовать сложнее и трудозатратнее по времени - если бы у вас было фиксированное количество колонок для поворота/разворота - Pivot был бы предпочтительнее, если логика извращется - трансформер сделает всё, что нужно, но придётся приложить голову и руки.
...
Рейтинг: 0 / 0
Pivot в datastage
    #38370589
Sintetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, я тут по ходу дела нашел еще одно решение
прикрутил к Netezza user define aggregate - GroupConcat
https://www-304.ibm.com/connections/wikis/home?lang=en-us#!/wiki/W361a40e2ccf0_43c7_b802_e51fcadaec6b/page/C__ UDX Examples
...
Рейтинг: 0 / 0
Pivot в datastage
    #38370598
Sintetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HunterikЕсли у вас DS >= 8.5, то задание можно сделать так:
2. В трансофрмере можно сделать цикл, анализируя вывод LastRowInGroup(), когда будет true - выпускаете сконкатенированную строку, пока не true - накапливаете строк конкатенированием с самой собой.

Ага, видел такой вариант, но хотел обойтись без кодирования в DS, чисто визуальными средствами, но теперь пусть Netteza отдувается за себя и за того парня )))
...
Рейтинг: 0 / 0
Pivot в datastage
    #38370600
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и хорошо. Я на базы не особо надеюсь, сегодня с одной работа, завтра - с другой, а в DataStage решения универсальны. =)
А если правильно готовить, то и быстро работают...
...
Рейтинг: 0 / 0
Pivot в datastage
    #38370604
Sintetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HunterikНу и хорошо. Я на базы не особо надеюсь, сегодня с одной работа, завтра - с другой, а в DataStage решения универсальны. =)
А если правильно готовить, то и быстро работают...

А я как раз больше пытаюсь на базу работу спихнуть, обычно получается что железные ресурсы базы на порядок превышают ресурсы ETL сервера. В этом проекте так и есть. В информатике есть опция push down optimisation, а как в DS с этим?
...
Рейтинг: 0 / 0
Pivot в datastage
    #38370700
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже есть... Вроде за отдельные деньги. Balanced Optimization называется. Идея хороша, но давить на это не стоит - покупать DS/INFA для обработки на базе, как мне кажется, нерентабельно.
Хотя, видел случаи, где DS вообще как шедулер использовали по запуску хранимок, но это уже хроника...
Работает BalOpt не со всеми базами, DB2, Oracle, Teradata и Netezza вроде поддерживаются, MSSQL - не помню.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Pivot в datastage
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]