Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Фильтр по проперти с возможностью дрилдаун / 18 сообщений из 18, страница 1 из 1
02.03.2005, 18:06
    #32942139
me
me
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Есть 3-х-уровневый дименшн [TrafObject], у последнего уровня есть проперти "Trobj Type", на котором построен виртуальный дименшн [Traf_Type].
Этот запрос фильтрует по значению проперти и показывает только те члены дименшина, у которого значение проперти ="Пучки" , но при этом и показывается в результирующем сете 3-й уровень.

select {[Measures].[Out Seans],[Measures].[Out Talks] } on columns,
Filter(Descendants( [TrafObject].[AneniiNoi],2,self ) ,[TrafObject].currentmember.Properties("Trobj Type")="Пучки" ) on rows
from Traf
where ([DateTime].[All DateTime].[2005].[February].[28],[Traf_Type].[Пучки])

Вопрос, как сохранить фильтр, но показать не 3-й, а 2-й уровень иерархии с возможностью потом со 2-го, раскрыть 3-й, в котором все красиво отфильтровано по проперти ???

DrillupLevel - не работает почему-то....
...
Рейтинг: 0 / 0
02.03.2005, 22:53
    #32942502
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Что вы вкладываете в понятие "сохранить фильтр"?
...
Рейтинг: 0 / 0
03.03.2005, 09:01
    #32942751
me
me
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Этот запрос используется с пивот-тэйбл контролом, который имеет возможность раскрывать (expand) члены более высокого уровня. И хотелось бы получить для него набор записей начиная со второго уровня иерархии, и при этом, чтоб при раскрытии 2-го уровня на 3-й, на 3-м присутствовали только члены, удовлетворяющие условию фильтра. Фильтр и проперти накладываются на 3-й уровень, а показывать хочется начиная со второго. Возможно ли и как?
...
Рейтинг: 0 / 0
03.03.2005, 11:44
    #32943228
Dmitry Biryukov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
по-моему Filter(...,Properties("Trobj Type")="Пучки") - это совершенно лишнее
достаточно where ([Traf_Type].[Пучки])
попробуйте такой запрос:
Код: plaintext
1.
2.
3.
4.
select {[Measures].[Out Seans],[Measures].[Out Talks] } on columns,
Hierarchize([TrafObject].Members) on rows
from Traf
where ([DateTime].[All DateTime].[ 2005 ].[February].[ 28 ],[Traf_Type].[Пучки])
...
Рейтинг: 0 / 0
03.03.2005, 12:45
    #32943393
me
me
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Не, это все равно что просто слайсинг, здесь даже Hierarchize не нужен, если указать нужный уровень сразу.
Слайсинг приводить к тому что показывает данные только для "Пучков" к примеру, но при этом в rows показываются ВСЕ объекты [TrafObject],
а мне нужны только те, у которых проперти = "Пучки".

Так что фильтр нужен по-любому.
Проблема решается вот таким запросом:

select {[Measures].[Out Seans],[Measures].[Out Talks] } on columns,
Hierarchize({ [TrafObject].[Ats Name].Members, Filter(Descendants( [TrafObject].[AneniiNoi],2,self ) ,[TrafObject].currentmember.Properties("Trobj Type")="Пучки" ) }) on rows
from Traf
where ([DateTime].[All DateTime].[2005].[February].[28])

Тут даже слайсинг по [TrafType] не нужен благодаря фильтру.
Но тут другая тонкость. Фильтр накладывается только на третий уровень, проперти на 3-м. Соответственно применение фильтра возвращает тоже только 3-й уровень и Hierarchize на нем ничего не даст. Приходится добавлять к сету элементы второго уровня [TrafObject].[Ats Name].Members - и тогда Hierarchize отрабатывает красиво.

Но остается проблема, когда останется элемент 2-го уровня, все элементы 3-го для которого отфильтрованы...((

Вот мне и интересно, можно ли сделать как-то красиво, сложить иерархию снизу вверх, а не так как я ?
...
Рейтинг: 0 / 0
03.03.2005, 12:51
    #32943417
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Использование Filter всегда тормознее чем NonEmptyCrossJoin,
а использование MemberProperty всегда тормознее чем VirtualDimension.

Я вы копал в сторону использования NonEmptyCrossJoin

в этом случае ваше выражение выглядело бы сл. образом.

Код: plaintext
1.
2.
3.
select {[Measures].[Out Seans],[Measures].[Out Talks] } on columns,
NonEmptyCrossJoin(Descendants( [TrafObject].[AneniiNoi], 2 ,self ) ,{[Traf_Type].[Пучки]},  1 ) on rows
from Traf
where ([DateTime].[All DateTime].[ 2005 ].[February].[ 28 ],[Traf_Type].[Пучки])
...
Рейтинг: 0 / 0
03.03.2005, 14:26
    #32943769
me
me
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Да, это было бы круто..
Но к сожалению, мне нужно отслеживать и пустые объекты. Задача состоит в том, чтоб отслеживать данные по всем "пучкам" или "направлениям", поэтому пустые показывать принципиально.
Насчет тормознутости пропертиз - в самом деле заметно. Поэтому, прихожу к выводу, что завязывать надо с фильтрами по проперти. Вместо этого, вывести эти "пучки" и "направления" как еще один уровень иерархии в [TrafObject] и избавиться от всем проблем разом.
Правда, иметь виртуальный дименшн [TrafType] и меньше уровней в [TrafObject] было бы удобней, красивей и наверно грамотней, но я пока не вижу приемлимой альтернативы в эффективности и визуализации..(
...
Рейтинг: 0 / 0
03.03.2005, 15:03
    #32943935
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Задача состоит в том, чтоб отслеживать данные по всем "пучкам" или "направлениям", поэтому пустые показывать принципиально.

До боли знакомая ситуация :-)
Вы каким клиентом ходите?

Я 100% такую точно задачу решил для себя с помощью доп куба, в котором собраны воедино зависимые измерения.
Например.
Клиент, Группа Клиентов, Отрасль, Населенный Пункт, Почтовый Индекс.
А затем я натравливаю NECJ (NonEmptyCrossJoin) не на основной куб в котором транзакции а на дополнительный, в котором не движения а реляции между измерениями. (в NECJ можно указать меру, тогда NECJ отправится к тому физическому кубу, чья мера указана в выражении)
...
Рейтинг: 0 / 0
03.03.2005, 15:27
    #32944023
me
me
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Ух ты, круто! А это мысль...Фактически, следующий шаг по пути объединения "Пучков" с [TrafObject], если я правильно ловлю идею.

И раз уж для вас это пройденный этап, можно поподробней, что значит " собраны воедино зависимые измерения" ? Как этот кубик вспомогательный организован, если в нем "не движения а реляции между измерениями", это как???

Я пытаюсь клиентское приложение в 7-й студии состряпать, естественно минимальной кровью, поэтому пытаюсь пока использовать owc11.AxPivotTable, адаптировав под свои нужды. MSAS 8-й, EnterpriseEdition.
...
Рейтинг: 0 / 0
03.03.2005, 23:09
    #32945010
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
meИ раз уж для вас это пройденный этап, можно поподробней, что значит " собраны воедино зависимые измерения" ? Как этот кубик вспомогательный организован, если в нем "не движения а реляции между измерениями", это как???



Подскажу направление движения.

Сделайте кубик в котором таблицей фактов является таблица основного измерения (в моем примере - "клиент"). В этом кубе создайте одну единственную меру с аггрегацией count (можно на любом поле таблицы). введите в этот куб измерение клиент и все зависимые от него виртуальные измерения. Получившийся куб соедините с основным в виртуальном кубе.
...
Рейтинг: 0 / 0
03.03.2005, 23:32
    #32945021
Mosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Решение которое дал backfire - это очень правильное направление. В Yukon зачастую даже не надо создавать вспомогательную measure group, а можно работать напрямую с dimension table при помощи функции Exists. Плюс reference dimensions тоже могут сильно помочь в таких задачах.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
03.03.2005, 23:57
    #32945039
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
MoshaРешение которое дал backfire - это очень правильное направление. В Yukon зачастую даже не надо создавать вспомогательную measure group, а можно работать напрямую с dimension table при помощи функции Exists. Плюс reference dimensions тоже могут сильно помочь в таких задачах.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

Вот именно что "зачастую". Я сейчас точно не скажу, ибо Юкона под рукой нет, но я так и не смог полностью отказаться от дополнительной Measure Group и дополнительных "телодвижений" при построении запроса, для того чтобы в Юконе полность заменить наработанный мной в AS2K функционал для "зависимых" измерений (в Юконе они становятся Attribute hierarchy).
...
Рейтинг: 0 / 0
04.03.2005, 10:19
    #32945484
me
me
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Ок, сенкс..
Попробую, оригинальное решение конечно, мне бы в голову не пришло, наверно...
Интересно, сами дошли или есть литература какая с такими вот типа патернами?
...
Рейтинг: 0 / 0
04.03.2005, 10:59
    #32945596
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
meОк, сенкс..
Попробую, оригинальное решение конечно, мне бы в голову не пришло, наверно...
Интересно, сами дошли или есть литература какая с такими вот типа патернами?

Дошел до этого сам, еще в далеком 2000 году.
...
Рейтинг: 0 / 0
04.03.2005, 12:01
    #32945847
me
me
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Да, все круто! Работает, как надо! Здорово! Сенкс..)
Прикольное решение!

Подытожу. Значит, когда встает вопрос об усложнении иерархии дименшина (выводе всяких пропертиз на уровень иерархии), для повышения эффективности (отказов от фильтров или визуализации, типа показов и пустых значений, как было у меня ). Это усложнение можно обойти, построив вспомогательный куб, нацеленный на этот самый дименш. Включить в него сам дименшн и все зависимые виртуальные и объединить с фактическим кубом в виртуальный. А дальше, NECJ - дает искомый результат. Круто. Я все правильно, излагаю?!
...
Рейтинг: 0 / 0
04.03.2005, 12:11
    #32945888
me
me
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
Кстати, можно было бы организовать что-нибудь вроде сборника таких вот решений или патернов.

Форум это конечно тоже вариант, но вряд ли кому нравится повторяться, да и искать по всем темам тоже не мед.

А такие вот наработки - это ж круто! и было б здорово и намного эффективней иметь определенный набор чего-нибудь типа тематических FAQ-ов что ли.

Ну это так, лирическре отступление.
А вообще, просто огромное человеческое СПАСИБО. Очень понравилось, и вызвало море всяких эмоций. Элегантно, красиво, здорово...)
...
Рейтинг: 0 / 0
04.03.2005, 12:36
    #32945979
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
А дальше, NECJ - дает искомый результат. Круто. Я все правильно, излагаю?!

Угу.
...
Рейтинг: 0 / 0
04.03.2005, 16:25
    #32946889
Беляев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по проперти с возможностью дрилдаун
backfire
Аплодисменты

Обязательно возьму на вооружение Ваш подход

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


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