Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Консолидация данных   Найти похожие ветки 

 
}|{yk ©   (2004-11-10 12:38) [0]

Допустим, у нас есть таблица фактов, примероно такой структуры

 cust1 integer
 cust2 integer
 cust3 integer
 unit integer
 currency integer
 month integer
 year integer
 summa float

причем cust1, cust2, cust3 - это иерархические измерения.
Т.е. в упрощенном виде эти таблицы имею структуру

mem_id integer
mem_pid integer
mem_name varchar2(32)

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


 
HSolo ©   (2004-11-10 13:25) [1]

Я веду (триггерами) вспомогательную таблицу вида

id integer
parent_id integer

где перечислены все пары "предок-потомок"; например, если (1) есть предок (2), а (2) есть предок (3), то содержимое этой таблицы:

id    parent_id
1        1
2        2
2        1
3        3
3        2
3        1

Тогда для любого узла все его потомки со всеми их данными выбираются простым join-ом с этой таблицей.



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
3-1100089389
Term
2004-11-10 15:23
2004.12.12
QReport как сделать в отчёте промежуточные итоги


4-1098804856
dms_main
2004-10-26 19:34
2004.12.12
Потоки. Waitfor.


10-1070236005
Мороз Владимир
2003-12-01 02:46
2004.12.12
Multithreading CORBA-сервер на Delphi - это реально?


8-1095414104
Гость
2004-09-17 13:41
2004.12.12
GDI+. Как правильно работать с MeasureCharacterRanges


1-1101743824
NSerge
2004-11-29 18:57
2004.12.12
Сохранение в кодировке DOS(866)