powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Нужна помощь в MDX
13 сообщений из 13, страница 1 из 1
Нужна помощь в MDX
    #33340420
Parkhomets Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть следующий запрос :
WITH MEMBER [Счета].[XL_QZX] AS 'Aggregate ( { [Счета].[БАЛАНС].[6 ТЕКУЩИЕ ОБЯЗАТЕЛЬСТВА].[68 Расчеты по прочим операциям] , [Счета].[БАЛАНС].[6 ТЕКУЩИЕ ОБЯЗАТЕЛЬСТВА].[63 Расчеты с поставщиками] } )'
SELECT {[Measures].[Оборот]
, [Measures].[Сальдо ДТ]
, [Measures].[Сальдо]
} DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS ,
NON EMPTY HIERARCHIZE(AddCalculatedMembers({DrillDownLevel({[Контрагенты].[Все контрагенты]})})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS
FROM [Финансы ]
WHERE ([Время Год Кв М Д].[Все время], [Счета].[XL_QZX])
--EXCEL:1836 24.10.2005
--------------
/* где [Measures].[Сальдо] расчитывается как :
________________________________________
Iif([Время Год Кв М Д].CurrentMember.Level is [Время Год Кв М Д].[(All)],[Measures].[Оборот],
Iif([Время Год Кв М Д].CurrentMember.Level is [Время Год Кв М Д].[Год],sum(PeriodsToDate(), [Measures].[Оборот]),
iif(
[Время Год Кв М Д].CurrentMember.Level is [Время Год Кв М Д].[Квартал] or
[Время Год Кв М Д].CurrentMember.Level is [Время Год Кв М Д].[Месяц] or
[Время Год Кв М Д].CurrentMember.Level is [Время Год Кв М Д].[День],
[Время Год Кв М Д].CurrentMember.Parent.PrevMember + sum(PeriodsToDate([Время Год Кв М Д].CurrentMember.Parent.Level,[Время Год Кв М Д].CurrentMember),
[Measures].[Оборот]),
-- All otehers:
sum([Время Год Кв М Д].FirstChild.FirstChild.FirstChild.FirstChild:[Время Год Кв М Д].CurrentMember,[Measures].[Оборот])
) ))
________________________________
----------
--[Measures].[Сальдо ДТ] расчитывается на основании :
________________________________
IIF(IsEmpty(Measures.[Сальдо]),
null,
iif([Счета].currentmember.Properties("AP")="1" or ([Счета].currentmember.Properties("AP")="0" and(Measures.[Сальдо]>0)),
Measures.[Сальдо],
0)
)
________________________
Проблема в том, что отображать "[Measures].[Сальдо ДТ]" не хочет, показует "#ERR". Когда в " [Счета].[XL_QZX]" оставить один элемент , данный запрос отображается корректно.

Подскажите как решить эту задачу.

--
p.s.
SQL 2000+sp3, запрос сгенерировал Excell 2003
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33340721
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мс ас не может сагрегировать несколько счетов, т.к. вы используете [Счета].currentmember, который в этом случае равен XL_QZX и у него никаких свойств нет.
опять упёрлись в проблему как получить множество агрегированых членов. имхо, никак
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33340801
Parkhomets Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukovмс ас не может сагрегировать несколько счетов, т.к. вы используете [Счета].currentmember, который в этом случае равен XL_QZX и у него никаких свойств нет.
опять упёрлись в проблему как получить множество агрегированых членов. имхо, никак

гм, а ведь это :
WITH MEMBER [Время Год Кв М Д].[XL_QZX] AS 'Aggregate ( { [Время Год Кв М Д].[Все время].[2005].[3 кв.''05].[Сентябрь ''2005]
, [Время Год Кв М Д].[Все время].[2005].[3 кв.''05].[Август ''2005] } )'
SELECT {[Measures].[Оборот]
, [Measures].[Оборот ДТ]
, [Measures].[Сальдо]
, [Measures].[Сальдо ДТ]
, [Measures].[Сальдо КТ]} DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS ,
NON EMPTY HIERARCHIZE(AddCalculatedMembers({DrillDownLevel({[Контрагенты].[Все контрагенты]})})) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS
FROM [Финансы ]
WHERE ([ЦО счёта].[Компания "МММ"],
[Счета].[БАЛАНС].[6 ТЕКУЩИЕ ОБЯЗАТЕЛЬСТВА].[63 Расчеты с поставщиками] ,
[Время Год Кв М Д].[XL_QZX])


имеет агрегат , правда во времени и "вышеописанной ситуации" не наблюдается?
Или я Вас недопонял.
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33340961
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте мысленно продебагить первый запрос и второй.
в первом мы выходим на обращение в к свойству AP элемента XL_QZX, которое, естественно, не находится. во втором случае ничего похожего нет.
теперь яснее?
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33340989
Parkhomets Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukovпопробуйте мысленно продебагить первый запрос и второй.
в первом мы выходим на обращение в к свойству AP элемента XL_QZX, которое, естественно, не находится. во втором случае ничего похожего нет.
теперь яснее?
Я Вас понял, пытаюсь искать обходные пути ...
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33341600
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если Вы пользуетесь Юконом (AS2005), то можно попробовать следующее:

1. Сделать "AP" настоящим атрибутом (а не просто member property)
2. Поменять выражение calculated member на

Код: plaintext
1.
2.
3.
4.
5.
IIF(IsEmpty(Measures.[Сальдо]),
NULL,
IIF((Existing {[Счета].AP.AP.[ 0 ],[Счета].AP.AP.[ 1 ]}).Count >  0  AND Measures.[Сальдо]> 0 ,
Measures.[Сальдо],
 0 )
)

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

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33341640
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя наверное еще более правильно и оптимальнее было бы написать так внутри MDX Script:

Код: plaintext
1.
CREATE [Сальдо ДТ] = [Сальдо];
([Сальдо ДТ],Except([Счета].[AP].[AP].MEMBERS, {[Счета].AP.AP.[ 0 ],[Счета].AP.AP.[ 1 ]}) =  0 ;

Это позволяет избавиться от IIF, даст хорошую производительность и не будет иметь проблем с мультиселектом.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33342203
Parkhomets Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaХотя наверное еще более правильно и оптимальнее было бы написать так внутри MDX Script:

Код: plaintext
1.
CREATE [Сальдо ДТ] = [Сальдо];
([Сальдо ДТ],Except([Счета].[AP].[AP].MEMBERS, {[Счета].AP.AP.[ 0 ],[Счета].AP.AP.[ 1 ]}) =  0 ;

Это позволяет избавиться от IIF, даст хорошую производительность и не будет иметь проблем с мультиселектом.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
Как я понял, это можно сделать только в Юконе ?
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33343695
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да только в Юконе. Ждать осталось всего две недели :)

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33344262
Parkhomets Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaДа только в Юконе. Ждать осталось всего две недели :)

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

Думаю, что скачаю раньше :
<Удалено модератором>
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33351866
Моша, поясните, пожалуйста, что за команда CREATE?
В Books On-Line в MDX Scripting Statements перечислены только CALCULATE, CASE, EXISTING, FREEZE, IIF и SCOPE.
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33351883
dizzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего удивительного. Вы этот топик - http://www.sql.ru/forum/actualthread.aspx?tid=228652 - видели?
Как вы думаете, будет после этого у них желание писать качественную документацию в составе продукта?
...
Рейтинг: 0 / 0
Нужна помощь в MDX
    #33352168
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Моша, поясните, пожалуйста, что за команда CREATE?

Команда CREATE я думаю что в BOL есть. Правда там она выглядит в более классическом исполнении
Код: plaintext
CREATE MEMBER Measures.[Сальдо ДТ] AS '[Сальдо]'
а не в сокращенном виде как я привел
Код: plaintext
CREATE [Сальдо ДТ] = [Сальдо]

В Books On-Line в MDX Scripting Statements перечислены только CALCULATE, CASE, EXISTING, FREEZE, IIF и SCOPE.
Позволю себе также уточнить, что ни CASE ни EXISTING и ни IIF не являются MDX Statements. CASE и EXISTING - это операторы MDX, а IIF это функция.

dizzzyКак вы думаете, будет после этого у них желание писать качественную документацию в составе продукта?
Уважаемый dizzzy - если я правильно понял Вашу мысль, то Вы хотите сказать, что Microsoft специально делает плохую документацию, чтобы заработать деньги на книгах ? Если Вы так действительно думаете, то Вы глубоко ошибаетесь. Я не отрицаю, что качество BOL оставляет желать лучшего много в чем, но предполагать что это сделано умышленно - несколько наивно.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Нужна помощь в MDX
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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