powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Фильтр по проперти с возможностью дрилдаун
18 сообщений из 18, страница 1 из 1
Фильтр по проперти с возможностью дрилдаун
    #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
Фильтр по проперти с возможностью дрилдаун
    #32942502
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что вы вкладываете в понятие "сохранить фильтр"?
...
Рейтинг: 0 / 0
Фильтр по проперти с возможностью дрилдаун
    #32942751
me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
me
Гость
Этот запрос используется с пивот-тэйбл контролом, который имеет возможность раскрывать (expand) члены более высокого уровня. И хотелось бы получить для него набор записей начиная со второго уровня иерархии, и при этом, чтоб при раскрытии 2-го уровня на 3-й, на 3-м присутствовали только члены, удовлетворяющие условию фильтра. Фильтр и проперти накладываются на 3-й уровень, а показывать хочется начиная со второго. Возможно ли и как?
...
Рейтинг: 0 / 0
Фильтр по проперти с возможностью дрилдаун
    #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
Фильтр по проперти с возможностью дрилдаун
    #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
Фильтр по проперти с возможностью дрилдаун
    #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
Фильтр по проперти с возможностью дрилдаун
    #32943769
me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
me
Гость
Да, это было бы круто..
Но к сожалению, мне нужно отслеживать и пустые объекты. Задача состоит в том, чтоб отслеживать данные по всем "пучкам" или "направлениям", поэтому пустые показывать принципиально.
Насчет тормознутости пропертиз - в самом деле заметно. Поэтому, прихожу к выводу, что завязывать надо с фильтрами по проперти. Вместо этого, вывести эти "пучки" и "направления" как еще один уровень иерархии в [TrafObject] и избавиться от всем проблем разом.
Правда, иметь виртуальный дименшн [TrafType] и меньше уровней в [TrafObject] было бы удобней, красивей и наверно грамотней, но я пока не вижу приемлимой альтернативы в эффективности и визуализации..(
...
Рейтинг: 0 / 0
Фильтр по проперти с возможностью дрилдаун
    #32943935
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача состоит в том, чтоб отслеживать данные по всем "пучкам" или "направлениям", поэтому пустые показывать принципиально.

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

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

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

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



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

Сделайте кубик в котором таблицей фактов является таблица основного измерения (в моем примере - "клиент"). В этом кубе создайте одну единственную меру с аггрегацией count (можно на любом поле таблицы). введите в этот куб измерение клиент и все зависимые от него виртуальные измерения. Получившийся куб соедините с основным в виртуальном кубе.
...
Рейтинг: 0 / 0
Фильтр по проперти с возможностью дрилдаун
    #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
Фильтр по проперти с возможностью дрилдаун
    #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
Фильтр по проперти с возможностью дрилдаун
    #32945484
me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
me
Гость
Ок, сенкс..
Попробую, оригинальное решение конечно, мне бы в голову не пришло, наверно...
Интересно, сами дошли или есть литература какая с такими вот типа патернами?
...
Рейтинг: 0 / 0
Фильтр по проперти с возможностью дрилдаун
    #32945596
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
meОк, сенкс..
Попробую, оригинальное решение конечно, мне бы в голову не пришло, наверно...
Интересно, сами дошли или есть литература какая с такими вот типа патернами?

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

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

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

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

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

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

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

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


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