powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Динамически отключить dimension в MDX запросе ?
23 сообщений из 23, страница 1 из 1
Динамически отключить dimension в MDX запросе ?
    #32813051
McLuad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Очень серьезный вопрос.
Представим, что есть fact_table и она связанна с тремя дименшионами.
Два из которых важные, третье может учавствовать в запросе или не учавствоать.
Главные: Projects and Regions.
Второстепенное фильтр: Profile_DW

Скажем так, я хочу получить значение measurement для Region для определенного Project
select
non empty { [Regions_DW].[All Regions_DW].children } on 0
from
Region_CUBE
where ( [Projects_DW].[All Projects_DW].[5999], [Measures].[Eav] )

Идеально хочу получить : Russia = 2
Но в реальности получаю : Russia = 6
Почему идеально 2 – потому что в fact_article есть ттолько одна запись касающеяся проекта 5999 и она содержит 2.
Но, эта запись одновременно принадлежит еще трем Profiles. Profiles _ это как дополнительный фильтр, если он выставлен, то я пишу:
select
non empty { [Regions_DW].[All Regions_DW].children } on 0
from
Region_CUBE
where ( [Projects_DW].[All Projects_DW].[5999], [Measures].[Eav] , [Focus_DW].[All Focus_DW].[50] )
Но когда он не выставлен, мне вообще он не нужен, не нужна связь Profiles c fact_article, потому что в этом случа он все портит. – данный умножаются на количество вхождений в дименшион Profiles.
Как можно “отключить” дименшион Profiles когда он не нужен ?
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32813861
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
McLuadВсем привет.
Очень серьезный вопрос.
Представим, что есть fact_table и она связанна с тремя дименшионами.
Два из которых важные, третье может учавствовать в запросе или не учавствоать.
Главные: Projects and Regions.
Второстепенное фильтр: Profile_DW

Скажем так, я хочу получить значение measurement для Region для определенного Project
select
non empty { [Regions_DW].[All Regions_DW].children } on 0
from
Region_CUBE
where ( [Projects_DW].[All Projects_DW].[5999], [Measures].[Eav] )

Идеально хочу получить : Russia = 2
Но в реальности получаю : Russia = 6
Почему идеально 2 – потому что в fact_article есть ттолько одна запись касающеяся проекта 5999 и она содержит 2.
Но, эта запись одновременно принадлежит еще трем Profiles. Profiles _ это как дополнительный фильтр, если он выставлен, то я пишу:
select
non empty { [Regions_DW].[All Regions_DW].children } on 0
from
Region_CUBE
where ( [Projects_DW].[All Projects_DW].[5999], [Measures].[Eav] , [Focus_DW].[All Focus_DW].[50] )
Но когда он не выставлен, мне вообще он не нужен, не нужна связь Profiles c fact_article, потому что в этом случа он все портит. – данный умножаются на количество вхождений в дименшион Profiles.
Как можно “отключить” дименшион Profiles когда он не нужен ?


Было бы гораздо проще помочь вам если бы вы ваши таблички назывались так же как измерения, а таблице фактов показывались, только относящиеся к обсуждению поля. А то как то неловко додумывать, какая таблица скрывается за Focus_DW.

У вас связи по полям являющимся ключами листового уровня измерений?
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32813862
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
указать Default Member для Focus_DW.
либо делать два куба: с Focus_DW и без.
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32813879
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukovлибо делать два куба: с Focus_DW и без.

А как переключаться посоветуете?
А если таблица фактов N-Гигов?
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32813892
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire Dmitry Biryukovлибо делать два куба: с Focus_DW и без.

А как переключаться посоветуете?
А если таблица фактов N-Гигов?

я так понял запрос формируется динамически...
так и писать
strMDX = strMDX + " FROM " + strProperCubeName
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32818174
McLuad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Biryukovуказать Default Member для Focus_DW.
либо делать два куба: с Focus_DW и без.

Привет всем.
Короче ситуация горела, надо было срочно проект здавать. В первый день увидел что никто не ответил, так больше и не смотрел, только сегодня снова зашел на форум, увидел что есть ответы, спасибо всем.
Сделал так как описывал Дмитрий, два куба, один содержит Focus другой нет. На большее фантазии на хватило, но может и другово решения не было.
Всем спасибо за ответы
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32822188
Беляев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется, что просто в измерении Profile_DW не должно быть общего итога (т.е. члена All Profile_DW), тогда и суммирования происходить не будет
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32822384
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БеляевМне кажется, что просто в измерении Profile_DW не должно быть общего итога (т.е. члена All Profile_DW), тогда и суммирования происходить не будет
Это предвычесленного агрегатного значения не будет, а клиенту (например Excel) ничего не помешает написать такой MDX, который просуммирует значения.
Если же в MDX не указывать Profile_DW, то результат будет расчитываться исходя из default member.
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32822424
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukov
а клиенту (например Excel) ничего не помешает написать такой MDX, который просуммирует значения.


Это как? Что то мне это трудно представить, что в измерении без AllLevel какой то клиент сгенерит MDX для его получения
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32822590
Беляев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суммирование - это проблема клиента (в Excel можно отключить итог по строкам, столбцам), а default member - ну уж сделайте тогда какой-то допустим: Profile_DW - "неизвестно" или "не установлено" и сгрузите в него всю копию исходных данных

PS

Хотя проблема у Вас конечно же в дизайне, надо предметную область тщательнее проанализировать: определить есть ли зависимость между измерениями
отношения "многие ко многим" надо устранять (тем более они не поддерживаются в текущей версии AS), алгоритм устранения - известен (новое измерение)
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32822802
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire Dmitry Biryukov
а клиенту (например Excel) ничего не помешает написать такой MDX, который просуммирует значения.


Это как? Что то мне это трудно представить, что в измерении без AllLevel какой то клиент сгенерит MDX для его получения

Элементарно:
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32822875
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема аггрегирования элементов у которых нет All - мне очень близка, я прямо сейчас меняю код функции Aggregate в Юконе, и мы тут спорим - разрешать ли вообще Aggregate по non-aggregatable аттрибутам (т.е. по уровню над которым нет All). Пример который привел Дмитрий - просто классический - какой смысл аггрегировать Actual, Budget и Forecast :) С другой стороны, может ошибку поднимать в этом случае как-то слишком жестоко. Ну во всяком случае, следующей версии Excel мы советуем, чтобы они даже в UI такого не разрешали, чтобы пользователей не путать...

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32823042
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однозначно разрешать!
а то потом в форуме получите кучу вопросов типа "как сложить мемберов у которых нет AllLevel?".
как вариант сделать это опцией, выключенной по умолчанию.
имхо, наличие уровня All - это одно, а суммирование мемберов этого измерения - совсем другое.
представим такой надуманный пример. Товары:
уровень1
- те, которые измеряются в штуках
- те, которые измеряются в литрах
- те, которые измеряются в метрах
уровень2 - собственно сам товар.
Сумма на уровне ALL смысла не имеет.
Но, тем не менее, я хочу суммировать мемберов нижнего уровня.
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32823067
олапист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как все запущено ... неужели в MS вопросы проектирования решаются на этапе кодирования 3-ей беты
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32823075
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaПример который привел Дмитрий - просто классический - какой смысл аггрегировать Actual, Budget и Forecast :)
Пример взят из Фудмарта :-) там в измерении Category есть уровень ALL, и в кубе Budget суммируется Forecat и Actual
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32823270
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaТема аггрегирования элементов у которых нет All - мне очень близка, я прямо сейчас меняю код функции Aggregate в Юконе, и мы тут спорим - разрешать ли вообще Aggregate по non-aggregatable аттрибутам (т.е. по уровню над которым нет All). Пример который привел Дмитрий - просто классический - какой смысл аггрегировать Actual, Budget и Forecast :) С другой стороны, может ошибку поднимать в этом случае как-то слишком жестоко. Ну во всяком случае, следующей версии Excel мы советуем, чтобы они даже в UI такого не разрешали, чтобы пользователей не путать...

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


Решать от смысле аггрегации, на уровне MDX, уровня, над которым нет ALL может только автор куба, все остальное - спекуляции.

Если это запретить в Excel - лично мне по барабану. (хотя "детям спички не игрушка" :-))

Если это запретить в MDX - это пожалуйста не надо.
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32823712
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ребята послушаеш Вас плакать хочеться, а как же один ко многим???
Вот от сюда все и проблемы что когда кубик делаем непонимаем что строиться затпрос на inner join table. Вот твои поля Profiles_ ее умножают на три вот тебе и 6. А когда говориш ему конткретно какой профиль он тебе даст 2.
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32824302
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
backfireРешать от смысле аггрегации, на уровне MDX, уровня, над которым нет ALL может только автор куба, все остальное - спекуляции.
Ну и я говорю что автор куба - если не сделал All level - значит не хочет чтобы аггрегировали.

Dmitry BiryukovСумма на уровне ALL смысла не имеет.
Но, тем не менее, я хочу суммировать мемберов нижнего уровня
Вопрос стоял только об аггрегировании элементов верхнего уровня, для которых аггрегирование не имеет смысла - элементы нижних уровней конечно можно будет аггрегировать.

backfireЕсли это запретить в MDX - это пожалуйста не надо.
olapistкак все запущено ... неужели в MS вопросы проектирования решаются на этапе кодирования 3-ей беты
Собственно можно и не менять и не заниматься проектированием в конце Бета 3, просто мы сейчас работает над производительностью, и есть возможность сильно улучшить производительность Aggregate (и всех кто на нее опирается, т.е. VisualTotals и т.д.), но за счет некоторых изменений функциональности. Но пока кроме меня никто не захотел менять, так что наверное придется как нибудь изворачиваться чтобы и производительность поднять и функциональность не сломать :) Еще один вопрос - а кто-нибудь делал когда нибудь Aggregate по measures ? И если да, то зачем ?

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32824697
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mosha Еще один вопрос - а кто-нибудь делал когда нибудь Aggregate по measures ? И если да, то зачем ?


Моша, я бы на Вашем месте не спрашивал, я бы запретил Aggregate по measures (ну кому надо складывать метры с баксами), если бы это давало шанс выжать пару-тройку лишних лошадок из движка.
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32826051
McLuad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OLAPMASTERДа ребята послушаеш Вас плакать хочеться, а как же один ко многим???
Вот от сюда все и проблемы что когда кубик делаем непонимаем что строиться затпрос на inner join table. Вот твои поля Profiles_ ее умножают на три вот тебе и 6. А когда говориш ему конткретно какой профиль он тебе даст 2.

В принципе это понимаем.
Другое дело что это не совсем нравится. Было бы идеально, если бы наряду с (All) или (All_Profiles) был бы некий виртуальный мембер типа (None) или (None_Profile) который бы интерпретировался следующим образом:
при его использовании во фразе Where например, соответсвующий dimension вообще бы отрубался и не использовался при расчетах. По аналогии с inner join равнозначно исключению соответсвующей таблицы из главного запроса.
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32826415
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сказали же: этот "виртуальный" мембер называется Default Member.
В данном случае его можно сделать любым кроме ALL
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32826608
McLuad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry BiryukovСказали же: этот "виртуальный" мембер называется Default Member.
В данном случае его можно сделать любым кроме ALL

Мне не нужно делать его любым. Любым - значит каким-то. Скажем я удалил default member и поставил All Level - No. Типа значит никакой default member. Но запрос теперь вообще ничего не возращает. То есть видимо он по прежнему делает join на dimension Profile, но так как нет связи вообще никакой, результирующий запрос ничего не возращает. Мне же нужно что-бы join вообще не делался.
...
Рейтинг: 0 / 0
Динамически отключить dimension в MDX запросе ?
    #32832111
Fpmip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Позволю себе вернуться к началу обсуждения и усомниться в том, что:

McLuadИдеально хочу получить : Russia = 2
Но в реальности получаю : Russia = 6
Почему идеально 2 – потому что в fact_article есть ттолько одна запись касающеяся проекта 5999 и она содержит 2.
Но, эта запись одновременно принадлежит еще трем Profiles.
...
Как можно "отключить" дименшион Profiles когда он не нужен ?У вас в таблице фактов, очевидно, 3 записи по региону Russia и проекту 5999 (" эта запись одновременно принадлежит еще трем Profiles ")
Так что никакое "отключение" этого измерения Profiles , равно как и создание куба без него (по оригинальной таблице фактов), не поможет.

McLuadСкажем я удалил default member и поставил All Level - No. Типа значит никакой default member.У измерения не может не существать default member (как иначе будет отрабатывать запрос?) -- по умолчанию это либо элемент All , либо (если уровень All отсутствует) первый по порядку элемент.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Динамически отключить dimension в MDX запросе ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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