Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Pivot в datastage
|
|||
|---|---|---|---|
|
#18+
Приветствую коллеги, понадобилось реализовать такой функционал, есть для некоей сущности набор аттрибутов, ну например для физлица ФИО, паспорт и тп. число атрибутов переменное. Нужно сделать выборку "склеив" все аттрибуты в одно поле, например через пробел. например таблица сущносте 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 и как с ним работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 11:54 |
|
||
|
Pivot в datastage
|
|||
|---|---|---|---|
|
#18+
Если у вас DS >= 8.5, то задание можно сделать так: Database -> Sort stage -> Transformer -> ... 1. В Sort stage выполняете сортировку по ключу (если надо сохранить порядок пришедших строк с одним ключом относительно друг друга - ставите Stable sort) 2. В трансофрмере можно сделать цикл, анализируя вывод LastRowInGroup(), когда будет true - выпускаете сконкатенированную строку, пока не true - накапливаете строк конкатенированием с самой собой. Вам сюда и сюда ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 12:03 |
|
||
|
Pivot в datastage
|
|||
|---|---|---|---|
|
#18+
Вообще, с появлением циклов по входу/выходу в трансформере - применение Pivot stage может быть полезно только в ряде случаев, где туже логику в трансформере реализовать сложнее и трудозатратнее по времени - если бы у вас было фиксированное количество колонок для поворота/разворота - Pivot был бы предпочтительнее, если логика извращется - трансформер сделает всё, что нужно, но придётся приложить голову и руки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 12:06 |
|
||
|
Pivot в datastage
|
|||
|---|---|---|---|
|
#18+
Спасибо, я тут по ходу дела нашел еще одно решение прикрутил к 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 12:55 |
|
||
|
Pivot в datastage
|
|||
|---|---|---|---|
|
#18+
HunterikЕсли у вас DS >= 8.5, то задание можно сделать так: 2. В трансофрмере можно сделать цикл, анализируя вывод LastRowInGroup(), когда будет true - выпускаете сконкатенированную строку, пока не true - накапливаете строк конкатенированием с самой собой. Ага, видел такой вариант, но хотел обойтись без кодирования в DS, чисто визуальными средствами, но теперь пусть Netteza отдувается за себя и за того парня ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 12:59 |
|
||
|
Pivot в datastage
|
|||
|---|---|---|---|
|
#18+
Ну и хорошо. Я на базы не особо надеюсь, сегодня с одной работа, завтра - с другой, а в DataStage решения универсальны. =) А если правильно готовить, то и быстро работают... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 13:05 |
|
||
|
Pivot в datastage
|
|||
|---|---|---|---|
|
#18+
HunterikНу и хорошо. Я на базы не особо надеюсь, сегодня с одной работа, завтра - с другой, а в DataStage решения универсальны. =) А если правильно готовить, то и быстро работают... А я как раз больше пытаюсь на базу работу спихнуть, обычно получается что железные ресурсы базы на порядок превышают ресурсы ETL сервера. В этом проекте так и есть. В информатике есть опция push down optimisation, а как в DS с этим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 13:08 |
|
||
|
Pivot в datastage
|
|||
|---|---|---|---|
|
#18+
Тоже есть... Вроде за отдельные деньги. Balanced Optimization называется. Идея хороша, но давить на это не стоит - покупать DS/INFA для обработки на базе, как мне кажется, нерентабельно. Хотя, видел случаи, где DS вообще как шедулер использовали по запуску хранимок, но это уже хроника... Работает BalOpt не со всеми базами, DB2, Oracle, Teradata и Netezza вроде поддерживаются, MSSQL - не помню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 14:08 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=38370486&tid=1601362]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 167ms |

| 0 / 0 |
