Главная страница
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.021 c
8-1093948946
Сашок
2004-08-31 14:42
2004.12.12
Отступ от точек


1-1101856765
newage
2004-12-01 02:19
2004.12.12
производный класс свои проперти


3-1100265294
Newbie_In_DB
2004-11-12 16:14
2004.12.12
Загрузка значений в DBCombobox


1-1101666699
xxxxx
2004-11-28 21:31
2004.12.12
Как скомпилить такой код?


14-1101088981
Александр1
2004-11-22 05:03
2004.12.12
Винт 200ГБ