powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Discoverer и пользовательские агрегатные функции
9 сообщений из 9, страница 1 из 1
Discoverer и пользовательские агрегатные функции
    #33570319
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется Oracle Discoverer из состава BI Tools 10G. Прямой вопрос, который хотелось бы задать, звучит так: можно ли описать в нем или так или иначе корректно использовать пользовательскую агрегатную функцию?

Для чего это нужно. Есть следующий бизнес-процесс: подразделения подают заявки на приобретение, эти заявки суммируются, идет закупка у поставщиков, закупленное раздается по заказчикам. Существенно то, что отсутствует сквозная информация "закуплено у .. для ..". Практически - одно подразделение заказывает пять стульев, другое пять стульев. У одного поставщика покупается восемь стульев, у другого - два стула. На складе стоят десять неразличимых стульев, из которых пять случайно выбранных отправляются в первое подразделение, оставшиеся - во второе. Есть отчет по закупкам с основными разрезами "Поставщик" и "Товар", в котором пользователи хотят видеть также заказчиков этого товара - в виде текстового поля через запятую, "Подразделение1, Подразделение2".

Соответственно, я сделал почти стандартную агрегатную функцию LIST для перечисления строк через запятую и использую ее в materialized view, на котором строится отчет. Для плоских данных, разумеется, все работает, но возникает проблема с иерархией - допустим, есть понятие "группа товаров", и в соответствующей ячейке отчета хотелось бы выводить "заказчиков всех товаров из этой группы". Сейчас работает кривое решение - заказчики вычисляются именно для группы, одно и то же значение записывается для каждого товара этой группы. Но хотелось бы сделать хорошо. Приветствуются любые мысли, подсказки и ссылки.
...
Рейтинг: 0 / 0
Discoverer и пользовательские агрегатные функции
    #33570503
Alex_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerИмеется Oracle Discoverer из состава BI Tools 10G. Прямой вопрос, который хотелось бы задать, звучит так: можно ли описать в нем или так или иначе корректно использовать пользовательскую агрегатную функцию?


Сам не пробовал, но думаю, что можно. Нужно просто зарегистрировать данную функцию в Oracle Discoverer (надеюсь что нет отличия агрегатная она или нет).
...
Рейтинг: 0 / 0
Discoverer и пользовательские агрегатные функции
    #33570952
Alex_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_DСам не пробовал, но думаю, что можно. Нужно просто зарегистрировать данную функцию в Oracle Discoverer (надеюсь что нет отличия агрегатная она или нет).

Погорячился :((. Оказывается отличие есть, между просто функцией и груповой функцией. Груповую функцию он регистрирует без проблемм, но не работает с ней как с груповой функцией (т.е. не понимает что надо добавлять выражение group by ...). А работает, как с обыкновенной функцией. Флажка указывающего, что данная функция групповая я в Администраторе не нашел.
Но думаю можно заставить Дискавери работать с ней как с груповой подправив ручками данные в EUL.
...
Рейтинг: 0 / 0
Discoverer и пользовательские агрегатные функции
    #33571508
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Спасибо, вот до EUL-а не додумался. Попробую в ближайшее время :)
...
Рейтинг: 0 / 0
Discoverer и пользовательские агрегатные функции
    #33571698
Alex_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerХм. Спасибо, вот до EUL-а не додумался. Попробую в ближайшее время :)

Если получится не сочтите за труд опубликовать решение...
Я попробовал поковыряться в EUL, у меня сходу не получилось заставить работать. Будет время на досуге тоже еще поковыряю ...
...
Рейтинг: 0 / 0
Discoverer и пользовательские агрегатные функции
    #33587574
Alex_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_D Alex_DСам не пробовал, но думаю, что можно. Нужно просто зарегистрировать данную функцию в Oracle Discoverer (надеюсь что нет отличия агрегатная она или нет).

Погорячился :((. Оказывается отличие есть, между просто функцией и груповой функцией. Груповую функцию он регистрирует без проблемм, но не работает с ней как с груповой функцией (т.е. не понимает что надо добавлять выражение group by ...). А работает, как с обыкновенной функцией. Флажка указывающего, что данная функция групповая я в Администраторе не нашел.
Но думаю можно заставить Дискавери работать с ней как с груповой подправив ручками данные в EUL.

И все таки она со скрипом, но вертится !!!

Итак по шагам:

Исходные данные: Имеем в базе самописную групповую функцию.
Для примера возьмем функцию STRAGG.

1. Стандартными средствами Oracle Discoverer Administrator регистриуем функцию STRAGG в EUL.

2. Cтандартными средсвами Oracle Discoverer Administrator экспортируем данную функцию STRAGG в текстовый файл.
Код: plaintext
E:\oracle\BIToolsHome\bin>dis51adm /connect eul5/eul5@orcl /export "c:\stragg.eex" /function stragg

3. Cтандартными средсвами Oracle Discoverer Administrator удаляем данную функцию STRAGG из EUL.
Код: plaintext
E:\oracle\BIToolsHome\bin>dis51adm /connect eul5/eul5@orcl /delete /function stragg

4. Открываем файл экспорта (c:\stragg.eex) в любом текстовом редакторе.
Исправляем значение тега FunctionType="User defined" на FunctionType="Aggregate". Сохраняем файл.

5. Cтандартными средсвами Oracle Discoverer Administrator экспотируем полученый файл в EUL.
Код: plaintext
E:\oracle\BIToolsHome\bin>dis51adm /connect eul5/eul5@orcl /import "c:\stragg.eex" /log "c:\stragg.log" /identifier

Все мы зарегистрировали данную групповую функцию в EUL.

Теперь данная функция stragg доступна для использования в Oracle Discoverer Desrtop, с одним ограничением, ее нет в списке выбора функции. Но ее можно использовать, написав ее ручками в поле вычисление. И она будет обрабатываться как групповая.
...
Рейтинг: 0 / 0
Discoverer и пользовательские агрегатные функции
    #33592150
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здорово. В итоге как раз вчера вечером у нас дошли руки до "пора пробовать", так что большое спасибо за готовое решение. Просто конфетка.
...
Рейтинг: 0 / 0
Discoverer и пользовательские агрегатные функции
    #33593765
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Круто!

Я попробовал пооптимизировать этот процесс и вот что получилось.

Alex_D1. Стандартными средствами Oracle Discoverer Administrator регистриуем функцию STRAGG в EUL.

2. Залезаем в схему EUL, находим в таблице EUL5_FUNCTIONS строчку где FUN_NAME='STRAGG'

3. Изменяем для этой функции FUN_FUNCTION_TYPE на 4.

Alex_DВсе мы зарегистрировали данную групповую функцию в EUL.

Теперь данная функция stragg доступна для использования в Oracle Discoverer Desrtop, с одним ограничением, ее нет в списке выбора функции. Но ее можно использовать, написав ее ручками в поле вычисление. И она будет обрабатываться как групповая.

У меня работает на версии 10.1.2.
Конечно, следует помнить, что если возникнут какие то проблемы, связанные с этим функционалом, техподдержка это поддерживать не будет :)

Хотя, конечно, может существует и более легальный способ регистрации функции, но мне пока найти не удалось.
...
Рейтинг: 0 / 0
Discoverer и пользовательские агрегатные функции
    #33595796
Alex_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Birkhoff3. Изменяем для этой функции FUN_FUNCTION_TYPE на 4.
Логично, Спасибо!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Discoverer и пользовательские агрегатные функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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