Обзор алгоритмов MOLAP


Точечные запросы


$ Point = (*,*,\ldots,v_1,*,\ldots,*,v_2,*,\ldots,v_k,*,\ldots,*)$

, где если

$ v_i\ne *\Rightarrow v_i \in D_i$
, — точечный запрос. Требуется вернуть значение меры в точке, определенной
$ Point$

.

Алгоритм.

  1. $ Current_{node}$

    = корень;

    $ Current_{val}$

    =

    $ v_1$

  2. На любом узле
    $ Current_{node}$

    искать дугу с меткой

    $ Current_{val}$

    ,

    если существует:

    $ curr_{node}$

    = потомок по найденной дуге;

    $ Current_{val} = v_i + 1$

    иначе: проверить последнее измерение j, по которому у

    $ Current_{node}$

    есть потомок.

    Если

    $ j\ge L_i$

    , тогда

    $ c$

    в кубе не появится.

    Иначе:

    $ Current_{node}$

    = потомок по измерению j, снова повторяем 2.

Примеры

  1. (R2,*,осень)
    $ \rightarrow$

    начинаем с корня, находим вершину 7, в вершине 7 ищем ''осень'', берем потомка по измерению, продукты, попадаем в 9 — есть ответ.

  2. (R2,*,весна)
    $ \rightarrow$

    все тоже самое, но в 9 мы будем пытаться найти ''весна''

    $ \rightarrow$

    такой ячейки нет

    $ \rightarrow$

    (*,еда,*)

    $ \rightarrow$

    в 5, но там нет значения, ''проваливаемся'' в 6 — ответ




Начало  Назад  Вперед