Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Oracle Olap иерархии, ограничения / 7 сообщений из 7, страница 1 из 1
15.11.2005, 13:37
    #33378994
Goster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Olap иерархии, ограничения
Допустим, есть иерархия:
а
/ | \
b1 b2 b3
/ | \ / | \ / | \
c1 c2 c3 c4 c5 c6 c7 c8 c9

И, скажем, необхоодимо выбрать только объекты "с", дочекние от "b2". Как поставить ограничение? Никак не могу понять!
...
Рейтинг: 0 / 0
15.11.2005, 14:24
    #33379197
Birkhoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Olap иерархии, ограничения
А с помощью чего это ограничение ставится?
...
Рейтинг: 0 / 0
15.11.2005, 16:10
    #33379571
Goster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Olap иерархии, ограничения
Я думаю, что с помощью limit. Но не могу понять как выделить конкретную ступень в иерархии и смотреть потом только дочерние значения.
...
Рейтинг: 0 / 0
15.11.2005, 16:20
    #33379603
Birkhoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Olap иерархии, ограничения
Если с помощью команды типа LIMIT, то например если взять схему GLOBAL и взять измерение customer, то команда будет
LIMIT CUSTOMER TO HIERARCHY DEPTH 2 SKIP 1 CUSTOMER_PARENTREL 'TOTAL_CUSTOMER_1'
LIMIT CUSTOMER REMOVE 'TOTAL_CUSTOMER_1'

CUSTOMER_PARENTREL - это имя отношения в котором хранится иерархия parent-child
...
Рейтинг: 0 / 0
15.11.2005, 16:32
    #33379642
Parkhomets Andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Olap иерархии, ограничения
GosterЯ думаю, что с помощью limit. Но не могу понять как выделить конкретную ступень в иерархии и смотреть потом только дочерние значения.
http://download-uk.oracle.com/docs/cd/B19306_01/olap.102/b14346/dml_x_likenl002.htm#sthref3441
LIMIT command (using parent relation)
...
Рейтинг: 0 / 0
25.11.2005, 19:04
    #33401014
Goster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Olap иерархии, ограничения
Спасибо, с этим разовбрался.
Но вот появилась еще одно проблема, которую никак не могу решить.
Скажем надо ограничить какое-то измерение, но только после сортировки.
Например. Измерение - 10 43 23 12 1 87 34
Я хочу выбрать значения от 12 до 34, те 12, 23 и 34.
Но т.к. мое измерение не отсортировано, я не могу этого сделать командой
LIMIT DIMENSION_NAME TO '12' TO '34'
После сортировки коммандой SORT, REPORT DIMENSION_NAME выводит (как ни удивительно :)) отсортированные значения. Но при попытке ограничения все равно выводит 12, 1, 87, 34.
Как можно это побороть?
...
Рейтинг: 0 / 0
26.11.2005, 03:52
    #33401356
Георгий Т.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle Olap иерархии, ограничения
Не совсем понятно - какова же реальная цель. Ваша задача носит скорее не практический, а академический, исследовательский характер. Нечто из серии "А что, если...". Как раз для настоящего MOLAP-инструмента :-)


А что, если моё измерение
Код: plaintext
1.
-> dsc dim1
DEFINE DIM1 DIMENSION TEXT

имеет некое неупорядоченное содержимое

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
-> lmt dim1 to all
-> rpr nohead dim1
 10 
 43 
 23 
 12 
 1 
 87 
 34 

а я при этому хочу выбрать элементы с '12' по '34', имея ввиду, что хочется получить элементы

Код: plaintext
1.
2.
 12 
 23 
 34 
....
что делать?



Решение.
Упорядочим статус измерения и применим команду limit.



Шаг 1. Сортировка полного статуса измерения
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
-> lmt dim1 to all
-> srt dim1 a dim1
-> rpr nohead dim1
 1 
 10 
 12 
 23 
 34 
 43 
 87 


Шаг 2. Вариант 1. Приводим в порядок измерение
Код: plaintext
-> mnt dim1 move values(dim1) first

Наше измерение теперь чувствует себя существенно лучше. Пора получать выборку:

Код: plaintext
1.
2.
3.
4.
-> lmt dim1 to '12' to '34'
-> rpr nohead dim1
 12 
 23 
 34 





Однако, вы можете не захотеть перетасовывать измерение на физическом уровне, тогда подойдёт -
Шаг 2. Вариант 2. Получаем выборку какой-либо сложной limit-командой, например такой:

Код: plaintext
1.
2.
3.
4.
-> lmt dim1 to lmt(lmt(dim1 keep first statrank(dim1 '34')) keep last statrank(dim1 '12'))
-> rpr nohead dim1
 12 
 23 
 34 

Наверняка (если подумать) можно сконструировать и другое, более эффективное выражение. Тут привёл первое, что придумалось.
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Oracle Olap иерархии, ограничения / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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