powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / как делать rollup для текстового показателя (variable)
14 сообщений из 14, страница 1 из 1
как делать rollup для текстового показателя (variable)
    #32235519
Arti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Установлен 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
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32237460
Arti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-то работал не с числовыми данными в качестве variable, а текстовыми?
Нужен совет.
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32237468
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте покопать в сторону агрегации по Relations.
Но без программирования тут не обойтись по-моему.
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32239417
Arti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, наверное Вы правы. Вообще мне не надо хранить данные по высшим уровням иерархии, так как тогда придется хранить очень много данных ( в отличие от цифровых данных, которые просто суммируются, здесь приходится объединять строчки, то есть при добавлении всего одного уровня иерархии общее кол-во данных может увеличится в два раза).
С помощью какого объекта Express данные высчитываются динамически?

Вообще, видимо, мне надо поступить так: если переменная (или показатель, как там его) основывается на нескольких измерениях, причем некоторые из них еще с иерархиями, то надо агрегировать по одному измерению, потом по другому и в таком духе. Получится что-то вроде рекурсивного спуска по иерархиям измерений? То есть агрегируем по одному измерению, а тут приходится агрегировать еще по одному и тд.. в таком духе?
Извините, если сумбурно выражаю свое понимание )
Артур.
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32239504
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по задаче, она не похожа на OLAP или я нет так понял.
С помощью функции PL/SQL любой такой запрос можно элементарно отработать. А вот что даст OLAP движок для таких запросов, где нужно объединять строки - непонятно. Хотя запрограммировать то можно конечно.
А что значит с помощью какого объекта данные высчитываюся динамически?
С помощью языка Express Language я так думаю, ну и на Express Objects тоже можно :)
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32239944
Arti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот смотрите. Допустим, у нас есть одно измерение - возраст и одна переменная - фамилия человека. Пусть у нас есть исходные данные, которые уже введены в базу:

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 раза.

Я хочу сделать вот что: хранятся только данные нижнего уровня иерархии, а другие лишь высчитываются. Можно ли это сделать? Ну вот как, например, в данном модельном случае поступить?
Артур.
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32240046
Георгий Т.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Арти, уточните - в чём цель вашей работы. То есть - какого рода "OLAP-отчёты" и в каком виде должен видеть конечный пользователь, каковы функциональные требования (помимо классических дрилл... и разворотов). Если "в лоб" отображать переменную с ФИО в таблице, да ещё с иерархиями по осям, то как это будет выглядеть? Мне кажется, что довольно неинформативно и нечитабельно (вроде того: в одной клетке - два ФИО, в соседней - двадцать).

Возможно, уточнение конечных требований позволит создать более удобные структуры для хранения, обработки и отображения данных. Например : создаём dimension Человек и увязываем его при помощи relation к Полу, Специальности и Региону, а в variable Возраст храним собственно возраст (хотя возраст - штука непостоянная :), лучше хранить Дату_Рождения ).

Если же архитектура "обсуждению не подлежит", то для удобства обработки (подготовки агрегатов) я бы создал дополнительно :
1) dimension Человек (в него просто помещаем всех людей, записывая ФИО в shortlabel)
2) valueset Люди, индексированный так же как и основной показатель (этот valueset заполняем сами понимаете чем ... )

Ну а такие штуки как "текстовый rollup", подготовка иерархий (и показателей) по запросу/параметрам пользователя "на лету" - всё это можно легко сделать. Но, всё же, определитесь сначала с конечной целью и с инструментом (может вам не Express нужен?).

С уважением,
Георгий.
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32240145
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж, интересная дискуссия...
Мне с такими задачами сталкиваться не приходилось.
Могу как вариант для размышления предложить следующее:
Использовать OLAP-клиента для Express - Cognos PowerPlay или может и кубы делать в PowerPlay. Сделать измерение ВОЗРАСТ с категориями от 1 до 99 (или другой диапалон - то есть кому 25 лет - попадают в категорию 25, кому 63 - в 63. Далее создать диалоговое окошко, куда пользователь введет произвольный диапазон, и макрос в фоновом режиме произведет канкатенацию всех людей, попадающих в этот диапазон.
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32240201
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эту конкатенацию можно сделать и в Express - не проблема,
вопрос зачем, чем обусловлен выбор экспресса для такой совершенно реляционной задачи?
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32240642
Arti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Георгий, предложение хорошее! Кстати, наверное, не обязательно возраст делать variable, можно сделать его и измерением. А variable сделать просто TRUE или FALSE. Но не будет ли проблемы с представлением данных? Тут в центре внимания будут не фамилии, а какие-то другие данные, тот же возраст. А фамилии сотрудников будут сбоку. И еще, как нам удалить те значения измерения ФИО из списка, когда при некоторой выборке других измерений, например, РЕГИОНа и ПОЛа, значения variable ВОЗРАСТ не определено, то есть нет таких людей? Другими словами, не выводить значение некоторого измерения, если, с учетом ограничений на значения других измерений, значение показателя не определено.

Бирхофф, я просто не знаю, какой инструмент надо использовать, чтобы пользователи могли получать такого рода информацию на клиентских местах. Начальством был выбран Oracle Express. Возможно, есть есть какие-то продукты Oracle типа Discoverer, но я просто не ориентируюсь , не подскажете?
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32240651
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К Express есть ситема разработки интерфейсов - Oracle Express Objects.
Это визуальное средство разработки и языком похожим на Visual Basic.
Приложения, написанные, на Objects запускаются с помощью Analyzer.
Так что для конечного пользователя нет разницы, запускает он приложение, созданное в Analyzer или в Objects.
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32240657
Arti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бирхофф, если честно, я пока не приступал к изучению Express Objects ))
Но вообще стоило бы.
Спасибо большое
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32240733
Георгий Т.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Артур, ситуация, как мне показалось, ещё больше запуталась.

Немного повторюсь : какую информацию и в каком виде вы предполагаете показывать пользователю? Чётко прояснив для себя этот вопрос, вы сможете придумать удачное сочетание измерений, переменных и т.д. Хотя бы - как первый черновой вариант. Вот тогда можно смело поспрашивать народ, типа - как удалить из "выборки" "нечто" (при этом предварительно обрисовать структуры данных, чтобы было ясно - о чём речь). Попутно и вопрос о Возрасте решится "как надо" (вы же не собираетесь перегружать всю базу после каждого дня рождения каждого человека?).

Немного не в тему :
Может вам просто привлечь специалиста? Он вам быстро сделает рабочую версию системы, а заодно и Express-у подучит. Желающих наверняка легко найдёте.
...
Рейтинг: 0 / 0
как делать rollup для текстового показателя (variable)
    #32240823
Arti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, Георгий.
Если мое начальство сочтет нужным, оно привлечет специалиста.
А так передо мной поставлена задача разобраться в этом и написать то, что требуется.
Но все равно, большое спасибо за консультацию!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / как делать rollup для текстового показателя (variable)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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