Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Discoverer и пользовательские агрегатные функции
|
|||
|---|---|---|---|
|
#18+
Имеется Oracle Discoverer из состава BI Tools 10G. Прямой вопрос, который хотелось бы задать, звучит так: можно ли описать в нем или так или иначе корректно использовать пользовательскую агрегатную функцию? Для чего это нужно. Есть следующий бизнес-процесс: подразделения подают заявки на приобретение, эти заявки суммируются, идет закупка у поставщиков, закупленное раздается по заказчикам. Существенно то, что отсутствует сквозная информация "закуплено у .. для ..". Практически - одно подразделение заказывает пять стульев, другое пять стульев. У одного поставщика покупается восемь стульев, у другого - два стула. На складе стоят десять неразличимых стульев, из которых пять случайно выбранных отправляются в первое подразделение, оставшиеся - во второе. Есть отчет по закупкам с основными разрезами "Поставщик" и "Товар", в котором пользователи хотят видеть также заказчиков этого товара - в виде текстового поля через запятую, "Подразделение1, Подразделение2". Соответственно, я сделал почти стандартную агрегатную функцию LIST для перечисления строк через запятую и использую ее в materialized view, на котором строится отчет. Для плоских данных, разумеется, все работает, но возникает проблема с иерархией - допустим, есть понятие "группа товаров", и в соответствующей ячейке отчета хотелось бы выводить "заказчиков всех товаров из этой группы". Сейчас работает кривое решение - заказчики вычисляются именно для группы, одно и то же значение записывается для каждого товара этой группы. Но хотелось бы сделать хорошо. Приветствуются любые мысли, подсказки и ссылки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 12:20 |
|
||
|
Discoverer и пользовательские агрегатные функции
|
|||
|---|---|---|---|
|
#18+
softwarerИмеется Oracle Discoverer из состава BI Tools 10G. Прямой вопрос, который хотелось бы задать, звучит так: можно ли описать в нем или так или иначе корректно использовать пользовательскую агрегатную функцию? Сам не пробовал, но думаю, что можно. Нужно просто зарегистрировать данную функцию в Oracle Discoverer (надеюсь что нет отличия агрегатная она или нет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 13:01 |
|
||
|
Discoverer и пользовательские агрегатные функции
|
|||
|---|---|---|---|
|
#18+
Alex_DСам не пробовал, но думаю, что можно. Нужно просто зарегистрировать данную функцию в Oracle Discoverer (надеюсь что нет отличия агрегатная она или нет). Погорячился :((. Оказывается отличие есть, между просто функцией и груповой функцией. Груповую функцию он регистрирует без проблемм, но не работает с ней как с груповой функцией (т.е. не понимает что надо добавлять выражение group by ...). А работает, как с обыкновенной функцией. Флажка указывающего, что данная функция групповая я в Администраторе не нашел. Но думаю можно заставить Дискавери работать с ней как с груповой подправив ручками данные в EUL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 14:42 |
|
||
|
Discoverer и пользовательские агрегатные функции
|
|||
|---|---|---|---|
|
#18+
Хм. Спасибо, вот до EUL-а не додумался. Попробую в ближайшее время :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 16:55 |
|
||
|
Discoverer и пользовательские агрегатные функции
|
|||
|---|---|---|---|
|
#18+
softwarerХм. Спасибо, вот до EUL-а не додумался. Попробую в ближайшее время :) Если получится не сочтите за труд опубликовать решение... Я попробовал поковыряться в EUL, у меня сходу не получилось заставить работать. Будет время на досуге тоже еще поковыряю ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 17:44 |
|
||
|
Discoverer и пользовательские агрегатные функции
|
|||
|---|---|---|---|
|
#18+
Alex_D Alex_DСам не пробовал, но думаю, что можно. Нужно просто зарегистрировать данную функцию в Oracle Discoverer (надеюсь что нет отличия агрегатная она или нет). Погорячился :((. Оказывается отличие есть, между просто функцией и груповой функцией. Груповую функцию он регистрирует без проблемм, но не работает с ней как с груповой функцией (т.е. не понимает что надо добавлять выражение group by ...). А работает, как с обыкновенной функцией. Флажка указывающего, что данная функция групповая я в Администраторе не нашел. Но думаю можно заставить Дискавери работать с ней как с груповой подправив ручками данные в EUL. И все таки она со скрипом, но вертится !!! Итак по шагам: Исходные данные: Имеем в базе самописную групповую функцию. Для примера возьмем функцию STRAGG. 1. Стандартными средствами Oracle Discoverer Administrator регистриуем функцию STRAGG в EUL. 2. Cтандартными средсвами Oracle Discoverer Administrator экспортируем данную функцию STRAGG в текстовый файл. Код: plaintext 3. Cтандартными средсвами Oracle Discoverer Administrator удаляем данную функцию STRAGG из EUL. Код: plaintext 4. Открываем файл экспорта (c:\stragg.eex) в любом текстовом редакторе. Исправляем значение тега FunctionType="User defined" на FunctionType="Aggregate". Сохраняем файл. 5. Cтандартными средсвами Oracle Discoverer Administrator экспотируем полученый файл в EUL. Код: plaintext Все мы зарегистрировали данную групповую функцию в EUL. Теперь данная функция stragg доступна для использования в Oracle Discoverer Desrtop, с одним ограничением, ее нет в списке выбора функции. Но ее можно использовать, написав ее ручками в поле вычисление. И она будет обрабатываться как групповая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2006, 18:40 |
|
||
|
Discoverer и пользовательские агрегатные функции
|
|||
|---|---|---|---|
|
#18+
Здорово. В итоге как раз вчера вечером у нас дошли руки до "пора пробовать", так что большое спасибо за готовое решение. Просто конфетка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 11:48 |
|
||
|
Discoverer и пользовательские агрегатные функции
|
|||
|---|---|---|---|
|
#18+
Круто! Я попробовал пооптимизировать этот процесс и вот что получилось. 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. Конечно, следует помнить, что если возникнут какие то проблемы, связанные с этим функционалом, техподдержка это поддерживать не будет :) Хотя, конечно, может существует и более легальный способ регистрации функции, но мне пока найти не удалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 18:51 |
|
||
|
|

start [/forum/topic.php?fid=49&gotonew=1&tid=1870464]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 371ms |

| 0 / 0 |
