Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Компоненты для OLAP+Delphi
|
|||
|---|---|---|---|
|
#18+
DecisionCube - это конечно круто, но может есть что-то более крутое? Кто чего пользует? Я пока не привязан к базе, это важно (название базы для OLAP)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 14:42 |
|
||
|
Компоненты для OLAP+Delphi
|
|||
|---|---|---|---|
|
#18+
hiercube v4.02 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:37 |
|
||
|
Компоненты для OLAP+Delphi
|
|||
|---|---|---|---|
|
#18+
ссылка на hiercube v4.02 www.rbwsoft.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:39 |
|
||
|
Компоненты для OLAP+Delphi
|
|||
|---|---|---|---|
|
#18+
У меня есть самописный компонент заточенный под ORACLE. Cube + Grid + Navigator. Грид по внешнему виду и функционалу напоминает ORACLE EXPRESS'овский. Работает одновременно с несколькими столбцами. Отдельная закачка справочников (значений измерений). Поддерживает экспорт в EXCEL. Предназначен для малых и средних кубов. Работает быстро (на несколько порядков быстрее чем DecisionCube), много памяти не ест (на сколько это возможно). Требует постоянной связи с сервером, т.к. при смене порядка измерений выполняется новые запросы. Нормально работает в 2-х проектах. Хотела сделать еще под MSSQL заточку, но пока руки не дошли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2004, 11:53 |
|
||
|
Компоненты для OLAP+Delphi
|
|||
|---|---|---|---|
|
#18+
2Анастасия М. Ваш куб использует Оракловый OLAP? Или просто генерит многомерный куб на клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2004, 22:11 |
|
||
|
Компоненты для OLAP+Delphi
|
|||
|---|---|---|---|
|
#18+
Simply Guest2Анастасия М. Ваш куб использует Оракловый OLAP? Или просто генерит многомерный куб на клиенте? Данный куб может работать в нескольких режимах: 1. Генерация неполного куба на сервере (два пересекающихся дерева измерений и наполнение плоской матрицы значений по всем точкам пересечений значений измерений). Конкретно: для 9i: 1.1SELECT sum(c1) c1, max(c2) c2, a1, a2, a3, a4 FROM source GROUP BY ROLLUP(a1, a2), ROLLUP(a3, a4)для 8i (двойной ROLLUP в одном запросе не поддерживается): 1.2SELECT sum(c1) c1, max(c2) c2, a1, a2, a3, a4 FROM ( SELECT sum(c1) c1, max(c2) c2, a1, a2, a3, a4 FROM source GROUP BY ROLLUP(a3, a4), a1, a2 ) GROUP BY ROLLUP(a1, a2), a3, a4 Результаты запросов 1.1 и 1.2 получаются абсолютно аналогичными, за исключением порядка записей В запросе 1.2 сложно делать аналитические агрегации. Так например чтобы сделать COUNT(c3) с3 в 1.2, придется во внутреннем запросе делать COUNT(c3) c3, а во внешнем Sum(c3) c3, иначе получим неверные значения. 2.Для избежания сложностей аналитических запросов под 8i пришлось реализовать формирование полного куба на сервере. А для сокращения памяти клиента и сетевого трафика - генерацию соответствующего HAVING, который отбирает только то, что возвращают запросы 1.1 и 1.2. 2.1SELECT sum(c1), max(c2), count(1) c3 FROM Base_source GROUP BY CUBE(a1, a2, a3, a4) HAVING (не помню по памяти, но все логично вычисляется) Но тогда придется все равно считать куб каждый раз. Для избежания этого компонент может работать с таблицей(витриной), содержащей полный куб аля CREATE TABLE source AS SELECT sum(c1), max(c2), count(1) c3 FROM Base_source GROUP BY CUBE(a1, a2, a3, a4); только таблицу лучше делать index based И отбирать из нее записи необходимы для отображения: 2.2SELECT c1, c2, c3 FROM source WHERE (аналогично HAVING'у из 2.1) Как показывает практика наиболее жизнеспособный вариант это 1.1. Далее компонент разбирает ДатаСет (довольно шустро - алгоритмы проработаны оч. хорошо), строит по нему два массива (дереда) индексов (вертикальный и горизонтальный) и выводит в специальный грид аля ORACLE EXPRESS (по виду и функционалу). В гриде можно сворачивать и разворачивать деревья (вертикальное и горизонтальное) измерений. Реализован поиск по значениям измерений. Ну и всякий другой вункционал, в т.ч. генерация SQL для отображения всех записей из source на конкретную агригацию (по значениям измерений). Еще есть Navigator (как в DecisionCube? только более навернутый и редакотором фильтров). ЗЫ. Весь SQL генерится автоматом надо только в дизайнтайме настроить измерения и агрегации. Можно и в рантайме, считывая из метаданных. Вот такие пироги. А с оракловыми кубами компонент не работает Все начиналось еще под 8i, в котором кубов не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 11:32 |
|
||
|
Компоненты для OLAP+Delphi
|
|||
|---|---|---|---|
|
#18+
Забыла написать: в приведенных примерах c1, c2, c3 - агрегации; a1, a2 - измерения отображающиеся по горизонтали; а3, а4 - измерения отображающиеся по вертикали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 11:35 |
|
||
|
Компоненты для OLAP+Delphi
|
|||
|---|---|---|---|
|
#18+
Анастасия М. 2.2SELECT c1, c2, c3 FROM source WHERE (аналогично HAVING'у из 2.1) Читать как 2.2SELECT c1, c2, c3, a1, a2, a3, a4 FROM source WHERE (аналогично HAVING'у из 2.1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 11:38 |
|
||
|
Компоненты для OLAP+Delphi
|
|||
|---|---|---|---|
|
#18+
2Анастасия М. Ясно, спасибо :)) Я задал вопрос из любопытства - в свое время делал классы (в компоненты не оборачивал) для MS AS, интересовала реализуемость того же для Оракловых кубов. Думаю, это вполне реализуемо, но браться за это не хочется, пока нет необходимости. Еще раз, спасибо :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 17:06 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32635516&tid=1872380]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
133ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 272ms |
| total: | 493ms |

| 0 / 0 |
