powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Фильтр в MDX
13 сообщений из 13, страница 1 из 1
Фильтр в MDX
    #33598939
Laptiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть куб с двумя измерениями [Дата] и [Дата состояния], при запросе получаю результат, в котором для каждого члена измерения [Дата] присутствует несколько членов измерения [Дата состояния], хочу ограничить множество только данными с максимальной "Датой состояния" для каждой даты.
Пример:

select
{
[Measures].[Задолж на конец],
[Measures].[Просроч на конец]
}
on 0,
non empty (
[Дата документа].[Год - Месяц - День].[Год].&[2006].&[2].children
, [Дата состояния].[Дата сост].children)
on 1
from
[Сводный]

Получаю:
Задолж на конец Просроч на конец
01.02.2006 2006-02-26 00:00:00 158103847,09 73018138
01.02.2006 2006-03-03 00:00:00 158101550,58 73015841
01.02.2006 2006-03-14 00:00:00 158101550,58 73015841
19.02.2006 2006-02-20 00:00:00 9149483 39226797
20.02.2006 2006-02-21 00:00:00 9907350 39156475
20.02.2006 2006-02-22 00:00:00 836303 0
20.02.2006 2006-02-26 00:00:00 836303 0
21.02.2006 2006-02-22 00:00:00 10153984 39698789
25.02.2006 2006-02-26 00:00:00 6987442 36896083
25.02.2006 2006-02-27 00:00:00 836303 0
26.02.2006 2006-02-27 00:00:00 10393962 39557761
27.02.2006 2006-02-28 00:00:00 11338678 41069744
28.02.2006 2006-03-13 00:00:00 12998524 38136687

Хочу получить
01.02.2006 2006-03-14 00:00:00 158101550,58 73015841
19.02.2006 2006-02-20 00:00:00 9149483 39226797
20.02.2006 2006-02-26 00:00:00 836303 0
21.02.2006 2006-02-22 00:00:00 10153984 39698789
25.02.2006 2006-02-27 00:00:00 836303 0
26.02.2006 2006-02-27 00:00:00 10393962 39557761
27.02.2006 2006-02-28 00:00:00 11338678 41069744
28.02.2006 2006-03-13 00:00:00 12998524 38136687
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33600037
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
напишите СМ типа Head(Order(...,...),1)
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33601130
Laptiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Biryukovнапишите СМ типа Head(Order(...,...),1)

В этом случае берется последний член 2-го измерения не зависимо от 1-го измерения, на самом деле для каждой даты из 1-го измерения свой набор - и соответственно дата из 2-го измерения должна быть своя.
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33602000
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Laptiev Dmitry Biryukovнапишите СМ типа Head(Order(...,...),1)

В этом случае берется последний член 2-го измерения не зависимо от 1-го измерения, на самом деле для каждой даты из 1-го измерения свой набор - и соответственно дата из 2-го измерения должна быть своя.неправильно вы пишете СМ. используйте nonemptycrossjoin. можете привести текст запроса?

а если можно эти два измерения объединить в одно попробуйте custom rollup
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33602099
Laptiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К примеру
with
member cd
as
tail(nonemptycrossjoin([Дата документа].[Год - Месяц - День].currentmember,
[Дата состояния].[Дата сост].children),1).item(0).item(1).name
,non_empty_behavior={[Measures].[Задолж на начало],[Measures].[Движение задолж]}
select
{[Measures].[Задолж на начало],[Measures].[Движение задолж],
cd} on 0,

non empty ([Дата документа].[Год - Месяц - День].[Год].&[2006].&[2].children)
on 1
from
[Сводный]


Получаю:

Задолж на начало Движение задолж cd
01.02.2006 67965614758,3698 (null) 2006-03-15 00:00:00
19.02.2006 (null) 345736942 2006-03-15 00:00:00
20.02.2006 (null) 984137005 2006-03-15 00:00:00
21.02.2006 (null) 716622540 2006-03-15 00:00:00
25.02.2006 (null) 1110919578 2006-03-15 00:00:00
26.02.2006 (null) 1092538732 2006-03-15 00:00:00
27.02.2006 (null) 2640388434 2006-03-15 00:00:00
28.02.2006 (null) 5633464581 2006-03-15 00:00:00
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33602184
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а Сводный - это случайно не виртуальный куб?
попробуйте в nonemptycrossjoin добавить физическую меру (Движение задолж ?)
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33602314
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Laptiev Dmitry Biryukovнапишите СМ типа Head(Order(...,...),1)

В этом случае берется последний член 2-го измерения не зависимо от 1-го измерения, на самом деле для каждой даты из 1-го измерения свой набор - и соответственно дата из 2-го измерения должна быть своя.



Если куб не виртуальный, то попробуйте использовать запрос типа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 

{
[Measures].[Задолж на конец],
[Measures].[Просроч на конец]
}
on  0 ,


generate([Дата документа].[Год - Месяц - День].[Год].&[ 2006 ].&[ 2 ].children, TAIL(NonEmptyCorssJoin({[Дата документа].currentmember}, {[Дата состояния].[Дата сост].children})),  1 ))

on  1 
from 
[Сводный]


писал в лоб, так что со скобками мог и намудрить.
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33602329
Laptiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MSAS 2005 - куб из нескольких measures group - я так понимаю, что это и есть аналог виртуального куба.

Запрос
with
member cd
as
tail(nonemptycrossjoin([Дата документа].[Год - Месяц - День].currentmember,
[Дата состояния].[Дата сост].children,
{[Measures].[Движение задолж],[Measures].[Задолж на начало]},3 ),1).item(0).item(1).name
,non_empty_behavior={[Measures].[Задолж на начало],[Measures].[Движение задолж]}
select
{[Measures].[Задолж на начало],[Measures].[Движение задолж],
cd} on 0,

non empty ([Дата документа].[Год - Месяц - День].[Год].&[2006].&[2].children
)
on 1
from
[Сводный]


Получил
Задолж на начало Движение задолж cd
01.02.2006 67965614758,3698 (null) 2006-03-15 00:00:00
19.02.2006 (null) 345736942 2006-02-20 00:00:00
20.02.2006 (null) 984137005 2006-02-26 00:00:00
21.02.2006 (null) 716622540 2006-02-22 00:00:00
25.02.2006 (null) 1110919578 2006-02-27 00:00:00
26.02.2006 (null) 1092538732 2006-02-27 00:00:00
27.02.2006 (null) 2640388434 2006-03-15 00:00:00
28.02.2006 (null) 5633464581 2006-03-15 00:00:00

Что вобщем то и хотел, огромное спасибо за помощь.
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33602450
Laptiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
backfire
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 

{
[Measures].[Задолж на конец],
[Measures].[Просроч на конец]
}
on  0 ,


generate([Дата документа].[Год - Месяц - День].[Год].&[ 2006 ].&[ 2 ].children, TAIL(NonEmptyCorssJoin({[Дата документа].currentmember}, {[Дата состояния].[Дата сост].children})),  1 ))

on  1 
from 
[Сводный]


Видимо проблема в его "виртуальности"? Такой запрос выдал аналогичный результат, но когда вставил в NonEmptyCrossJoin measures - все получилось правильно, однако пришлось вытащить их с 0-й оси, что не очень красиво выглядит в результате, остановился на варианте с CM, как советовал уважаемый Dmitry Biryukov.
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33602532
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кого интересует эта красота,
вопрос в производительности,
интересу ради, поделитесь, что у вас, быстрее работает, с CM или без него?
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33602640
Laptiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
c Generate быстрее отработало, однако красота увы нужна, потому что я скармливаю результаты запроса в скрипт который умеет работать с четко определенной структурой с 1-м уровнем в столбцах и 1-м уровнем в строках.
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33603162
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Laptievc Generate быстрее отработало, однако красота увы нужна, потому что я скармливаю результаты запроса в скрипт который умеет работать с четко определенной структурой с 1-м уровнем в столбцах и 1-м уровнем в строках.

за результат - большое спасибо.

а на счет генерации текста запроса - вы хозяин - вам виднее.
...
Рейтинг: 0 / 0
Фильтр в MDX
    #33603905
Laptiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле сомневаюсь в чистоте эксперемента, первый раз запустил с CM - отработало за 4 сек, generate - 1 сек. Второй раз результат был по 1 сек. Так что результат не показателен, скорее всего работало с кешем.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Фильтр в MDX
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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