Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Установлен Oracle Express Server 6.3.4 и клиентское приложение Express Analyzer. Допустим, у нас есть несколько измерений: пол, возраст, специальность, регион и текстовый показатель, в котором содержатся несколько ФИО, перечисленных последовательно через запятую. Несколько вопросов. 1. Хочу построить иерархии по возрастам и регионам, надо получить данные показателя на верхних уровнях иерархии (другими словами, сделать rollup) , то есть, допустим, Иванов Степан - 25 лет, Сергеев Андрей -26 лет, Михайлов Александр -28 лет, они находятся хаждый в своей ячейке. Когда же мы выбираем возраст 25-30, то они должны быть в одной ячейке, то есть что-то типа Иванов Степан, Сергеев Андрей, Михайлов Александр. Как это лучше сделать? 2. Знаю, что можно заранее задать иерархии, допустим, возраст меньше 20, 20-29, 30-39, 40-49 и 50 и больше. Но можно ли динамически формировать диапазон во время исполнения клиентского приложения, то есть выбрать, допустим, возраст 27-34, причем не с помощью selector'а, а так, чтобы все данные по людям слились и оказались в одной ячейке? Заранее спасибо. aak@mcc.elektra.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 15:33 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Кто-то работал не с числовыми данными в качестве variable, а текстовыми? Нужен совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 12:05 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Попробуйте покопать в сторону агрегации по Relations. Но без программирования тут не обойтись по-моему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 12:13 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Да, наверное Вы правы. Вообще мне не надо хранить данные по высшим уровням иерархии, так как тогда придется хранить очень много данных ( в отличие от цифровых данных, которые просто суммируются, здесь приходится объединять строчки, то есть при добавлении всего одного уровня иерархии общее кол-во данных может увеличится в два раза). С помощью какого объекта Express данные высчитываются динамически? Вообще, видимо, мне надо поступить так: если переменная (или показатель, как там его) основывается на нескольких измерениях, причем некоторые из них еще с иерархиями, то надо агрегировать по одному измерению, потом по другому и в таком духе. Получится что-то вроде рекурсивного спуска по иерархиям измерений? То есть агрегируем по одному измерению, а тут приходится агрегировать еще по одному и тд.. в таком духе? Извините, если сумбурно выражаю свое понимание ) Артур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 17:38 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Судя по задаче, она не похожа на OLAP или я нет так понял. С помощью функции PL/SQL любой такой запрос можно элементарно отработать. А вот что даст OLAP движок для таких запросов, где нужно объединять строки - непонятно. Хотя запрограммировать то можно конечно. А что значит с помощью какого объекта данные высчитываюся динамически? С помощью языка Express Language я так думаю, ну и на Express Objects тоже можно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 18:24 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Ну вот смотрите. Допустим, у нас есть одно измерение - возраст и одна переменная - фамилия человека. Пусть у нас есть исходные данные, которые уже введены в базу: age name 30 Иванов 31 Петров 32 Сидоров 33 Иванова 34 Петрова 35 Сидорова Я хочу сделать две группы возрастов, 30-32 и 33-35, а потом еще и самую большую, полную группу - 30-35. В итоге можно было бы предложить и достаточно просто реализовать такой вариант: age name 30 Иванов 31 Петров 32 Сидоров 33 Иванова 34 Петрова 35 Сидорова 30-32 Иванов, Петров, Сидоров 33-35 Иванова, Петрова, Сидорова 30-35 Иванов, Петров, Сидоров, Иванова, Петрова, Сидорова Таким образом, на этом примере продемонстрировано, что при добавлении каждого уровня иерархии ( первый уровень - это нижний, потом { 30-32, 33-35}, самый верхний - {30-35} ) общее количество данных увеличивается в два раза (если все данные хранить в базе). Теперь посмотрите, если у нас есть измерения "возраст", "регион", "специальность" , и по каждому 2-3 уровня иерархии, то в итоге кол-во данных увеличивается в 8-64 раза. Я хочу сделать вот что: хранятся только данные нижнего уровня иерархии, а другие лишь высчитываются. Можно ли это сделать? Ну вот как, например, в данном модельном случае поступить? Артур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 11:12 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Уважаемый Арти, уточните - в чём цель вашей работы. То есть - какого рода "OLAP-отчёты" и в каком виде должен видеть конечный пользователь, каковы функциональные требования (помимо классических дрилл... и разворотов). Если "в лоб" отображать переменную с ФИО в таблице, да ещё с иерархиями по осям, то как это будет выглядеть? Мне кажется, что довольно неинформативно и нечитабельно (вроде того: в одной клетке - два ФИО, в соседней - двадцать). Возможно, уточнение конечных требований позволит создать более удобные структуры для хранения, обработки и отображения данных. Например : создаём dimension Человек и увязываем его при помощи relation к Полу, Специальности и Региону, а в variable Возраст храним собственно возраст (хотя возраст - штука непостоянная :), лучше хранить Дату_Рождения ). Если же архитектура "обсуждению не подлежит", то для удобства обработки (подготовки агрегатов) я бы создал дополнительно : 1) dimension Человек (в него просто помещаем всех людей, записывая ФИО в shortlabel) 2) valueset Люди, индексированный так же как и основной показатель (этот valueset заполняем сами понимаете чем ... ) Ну а такие штуки как "текстовый rollup", подготовка иерархий (и показателей) по запросу/параметрам пользователя "на лету" - всё это можно легко сделать. Но, всё же, определитесь сначала с конечной целью и с инструментом (может вам не Express нужен?). С уважением, Георгий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 12:09 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Да уж, интересная дискуссия... Мне с такими задачами сталкиваться не приходилось. Могу как вариант для размышления предложить следующее: Использовать OLAP-клиента для Express - Cognos PowerPlay или может и кубы делать в PowerPlay. Сделать измерение ВОЗРАСТ с категориями от 1 до 99 (или другой диапалон - то есть кому 25 лет - попадают в категорию 25, кому 63 - в 63. Далее создать диалоговое окошко, куда пользователь введет произвольный диапазон, и макрос в фоновом режиме произведет канкатенацию всех людей, попадающих в этот диапазон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 13:00 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Эту конкатенацию можно сделать и в Express - не проблема, вопрос зачем, чем обусловлен выбор экспресса для такой совершенно реляционной задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 13:24 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Георгий, предложение хорошее! Кстати, наверное, не обязательно возраст делать variable, можно сделать его и измерением. А variable сделать просто TRUE или FALSE. Но не будет ли проблемы с представлением данных? Тут в центре внимания будут не фамилии, а какие-то другие данные, тот же возраст. А фамилии сотрудников будут сбоку. И еще, как нам удалить те значения измерения ФИО из списка, когда при некоторой выборке других измерений, например, РЕГИОНа и ПОЛа, значения variable ВОЗРАСТ не определено, то есть нет таких людей? Другими словами, не выводить значение некоторого измерения, если, с учетом ограничений на значения других измерений, значение показателя не определено. Бирхофф, я просто не знаю, какой инструмент надо использовать, чтобы пользователи могли получать такого рода информацию на клиентских местах. Начальством был выбран Oracle Express. Возможно, есть есть какие-то продукты Oracle типа Discoverer, но я просто не ориентируюсь , не подскажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 16:43 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
К Express есть ситема разработки интерфейсов - Oracle Express Objects. Это визуальное средство разработки и языком похожим на Visual Basic. Приложения, написанные, на Objects запускаются с помощью Analyzer. Так что для конечного пользователя нет разницы, запускает он приложение, созданное в Analyzer или в Objects. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 16:51 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Бирхофф, если честно, я пока не приступал к изучению Express Objects )) Но вообще стоило бы. Спасибо большое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 16:56 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Артур, ситуация, как мне показалось, ещё больше запуталась. Немного повторюсь : какую информацию и в каком виде вы предполагаете показывать пользователю? Чётко прояснив для себя этот вопрос, вы сможете придумать удачное сочетание измерений, переменных и т.д. Хотя бы - как первый черновой вариант. Вот тогда можно смело поспрашивать народ, типа - как удалить из "выборки" "нечто" (при этом предварительно обрисовать структуры данных, чтобы было ясно - о чём речь). Попутно и вопрос о Возрасте решится "как надо" (вы же не собираетесь перегружать всю базу после каждого дня рождения каждого человека?). Немного не в тему : Может вам просто привлечь специалиста? Он вам быстро сделает рабочую версию системы, а заодно и Express-у подучит. Желающих наверняка легко найдёте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 17:38 |
|
||
|
как делать rollup для текстового показателя (variable)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Георгий. Если мое начальство сочтет нужным, оно привлечет специалиста. А так передо мной поставлена задача разобраться в этом и написать то, что требуется. Но все равно, большое спасибо за консультацию! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 18:39 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32237460&tid=1873198]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 357ms |

| 0 / 0 |
