powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / MSAS, MDX - непонятная функция
17 сообщений из 17, страница 1 из 1
MSAS, MDX - непонятная функция
    #33130294
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В BOL (mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\olapdmpr.chm::/prsql_4vxv.htm) в примере где MDX запрос передается прилинкованому MSAS серверу, в самом MDX используется неизвестная мне функция nest(). Кто знает поясните откуда она, вероятно из предыдущей версии? Из примера, я предположил, что она наверное делает обычный crossjoin, проверил (MSAS 2k sp4)- на синтаксис не ругается, действительно работет и результат возвращает как положено.
Но все-таки интересно откуда ноги растут :))
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33130613
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поздравляю! вы нашли секретный уровень!
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33130674
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nest это алиас CrossJoin, как и оператор *
А в Юконе для красоты синтаксиса еще можно использовать запятую.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33131328
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaNest это алиас CrossJoin, как и оператор *
А в Юконе для красоты синтаксиса еще можно использовать запятую.

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

Множество синонимических конструкций иногда ведет к неразберихе и нечитабельности исходного кода (MDX), когда каждый делает, кто как хочет :-(
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33131497
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавно!
Ну, если с запятой и звездочкой более-менее понятно, то зачем этот алиас - непонятно совсем!
2 Mosha
И какие еще алиасы у Вас в наличии, может и для NECJ что типа nenest есть?
А то уж слишком длинно NONEMPTYCROSSJOIN, я иногда по 3 ошибки делаю пока набираю :))
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33131648
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgorЗабавно!
Ну, если с запятой и звездочкой более-менее понятно, то зачем этот алиас - непонятно совсем!
2 Mosha
И какие еще алиасы у Вас в наличии, может и для NECJ что типа nenest есть?
А то уж слишком длинно NONEMPTYCROSSJOIN, я иногда по 3 ошибки делаю пока набираю :))

Я то же за алиас NECJ, всеми своми конечностями.
это было бы класс, и для пишущих и для читающих.

Тогда бы такое выражение
Код: plaintext
1.
2.
3.
4.
iif(Artikel.currentmember.Level is Artikel.Artikel,
Except(NonEmptyCrossJoin({Artikel.currentmember}, {[Measures].[M_MengeAnfang]},  1 ),
NonEmptyCrossJoin({Artikel.currentmember}, {[Measures].[PositionenVerkaufPure]},  1 )).Count,
Except(NonEmptyCrossJoin(Artikel.Artikel.members, {[Measures].[M_MengeAnfang]},  1 ),
NonEmptyCrossJoin(Artikel.Artikel.members, {[Measures].[PositionenVerkaufPure]},  1 )).Count)

было бы гораздо короче и читабельнее

Код: plaintext
1.
2.
3.
4.
iif(Artikel.currentmember.Level is Artikel.Artikel,
Except(NECJ({Artikel.currentmember}, {[Measures].[M_MengeAnfang]},  1 ),
          NECJ({Artikel.currentmember}, {[Measures].[PositionenVerkaufPure]},  1 )).Count,
Except(NECJ(Artikel.Artikel.members, {[Measures].[M_MengeAnfang]},  1 ),
          NECJ(Artikel.Artikel.members, {[Measures].[PositionenVerkaufPure]},  1 )).Count)
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33132179
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята - NonEmptyCrossJoin это вредная функция. Я понимаю что в AS2K она иногда необходима, но в Юконе она занесена в список "deprecated" что означает что через релиз мы ее можем совсем убрать.
Вместо этого в Юконе есть замечательная функция NonEmpty которая сочетает в себе все достоинства NECJ, но исправляет все ее многочисленные недостатки. Ну и конечно функция Exists.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33132216
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaРебята - NonEmptyCrossJoin это вредная функция. Я понимаю что в AS2K она иногда необходима, но в Юконе она занесена в список "deprecated" что означает что через релиз мы ее можем совсем убрать.
Вместо этого в Юконе есть замечательная функция NonEmpty которая сочетает в себе все достоинства NECJ, но исправляет все ее многочисленные недостатки. Ну и конечно функция Exists.

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

Ну мы то сирые живем и кормимся от AS2K, и без NECJ как без адреналина, все как в сонном царстве, хотя в 99,99% его использования мною (если посмотреть на мои посты) это

NECJ(<Set>, {Measure1, Measure2}, 1).

Причем меры используются исключительно для указания физ. куба из состава виртуального. (Иначе NECJ смотрит в сторону текущего направления ветра)

Наверняка новый NonEmpty и Exists поможет мне выключить все имеющиеся NECJ.

Вот только вот одно остается загадкой: уже после Beta2 (гдето в декабре 2004) я жаловался на кривое поведение NECJ (учет WHERE) и вы его лечили в последующих CTP. Спрашивается, зачем, если NECJ сейчас вручается черная метка. Неужели решение, что NECJ - не жилец, появилось совсем не давно?
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33132222
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То что NECJ будет deprecated было решено еще в самом начале Юкона. Но баги в нем в Юконе мы все равно должны чинить - не можем же мы выпустить Юкон с неправильно работающей функцией.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33132251
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaТо что NECJ будет deprecated было решено еще в самом начале Юкона. Но баги в нем в Юконе мы все равно должны чинить - не можем же мы выпустить Юкон с неправильно работающей функцией.

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

А Вы бы не могли бы подробнее описать поведение функции NonEmpty. Если можно, то и применительно к изложенному мною use case для NECJ
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33132401
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я правильно понял этот пример, то в нем считается количество Артикулов которые были в начале, но еще не проданы (или что-то в этом духе). Для начала, использование NECJ для каждого отдельно взятого артикула совершенно неоправдано - уж лучше сделать в этой ветке IIF-а

Код: plaintext
NOT IsEmpty([Measures].[M_MengeAnfang]) AND IsEmpty([Measures].[PositionenVerkaufPure])

(причем это можно сделать и в AS2K - я ожидаю значительное повышение производительности на уровне Артикул после этой замены)

Ну а во второй ветке, предполагая что эти меры пришли из разных measure groups, то можно просто заменить NonEmptyCrossJoin на NonEmpty.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33132671
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(причем это можно сделать и в AS2K - я ожидаю значительное повышение производительности на уровне Артикул после этой замены)

Спасибо за дельный совет, но
на уровне Aртикул сейчас и так летает со свистом :-)
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33132811
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
backfireСпасибо за дельный совет, но
на уровне Aртикул сейчас и так летает со свистом :-)
Я Вам верю, но попробуйте такой запрос

Код: plaintext
1.
2.
SELECT Artikel.Artikel.MEMBERS ON  0 , BigDimension.MEMBERS ON  1 
FROM cube
WHERE CalcMember
Мне кажется что чем больше измерение Артикул, тем сильнее свист будет переходить в скрип в Вашей формуле. Моя формула должна выдержать такой запрос.
Впрочем это все спекуляция - если Вас все устраивает, то лучше ничего не трогать :)

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33132896
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaArtikel.Artikel.MEMBERS ON 0, BigDimension.MEMBERS ON 1


Два больших измерения на различных осях - это IMHO "приплыли" на любой мере, даже самой шустрой.

У меня только в Artikel больше 100к элементов.
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33133112
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда достаточно поставить только Артикул на одну ось. Уверяю Вас что с моей формулой не "приплывем", а с Вашей пожалуй "приплывем".

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33133532
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaТогда достаточно поставить только Артикул на одну ось. Уверяю Вас что с моей формулой не "приплывем", а с Вашей пожалуй "приплывем".

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

Вы как всегда правы - адреналиновый шок.
С вашей формулой ускорение в 30 раз!!! Снимаю шляпу.
...
Рейтинг: 0 / 0
MSAS, MDX - непонятная функция
    #33134421
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот нашел еще одного тормоза - надо найти сумму товарного запаса, тех товаров, которые не продавались в выбранном периоде времени

Sum(
Except(NonEmptyCrossJoin(Artikel.Artikel.members, {[Measures].[M_MengeAnfang]}, 1),
NonEmptyCrossJoin(Artikel.Artikel.members, {[Measures].[PositionenVerkaufPure]}, 1)),
[Measures].[WertBestandEnd]))

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


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