powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Помогите составить MDX-запрос
9 сообщений из 9, страница 1 из 1
Помогите составить MDX-запрос
    #33547450
Whitebear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени...
Бьюсь уже два дня над одним MDX-запросом, не представляю, как его написать. Может кто-нибудь поможет...
Итак, имеем сеть магазинов. В каждом магазине цена на продукцию своя. Ставится задача вытащить список магазинов с суммами продаж дорогой продукции (с ценой больше, например, 500 рублей). Предположим (чтобы это работало на AS2000), что размерности время у нас нет. Имеем куб - две размерности - продукция и магазин, две измеряемые величины - сумма продаж и розничная цена. Розничная цена является неагрегируемой размерностью. Нужно сделать сложное суммирование - агрегировать суммы продаж только для ячеек, в которых цена превышает заданное значение. MDX-запрос, который позволяет вытащить матрицу магазин/продукция, в ячеках которых хранятся суммы - несложно:

with member [Measures].[Exp] as
IIF([Measures].[Цена] > 500,[Measures].[Продано],Null)
Select
({[Магазины].[Магазин].AllMembers}) on Columns,
non empty {[Продукция].[Наименование].AllMembers} on rows
from [Sales]
where ([Measures].[Exp])


Работает такой запрос крайне долго и результат возвращает бешенных размеров. Мне фактически нужно просуммировать полученную с помощью запроса матрицу по всем строкам. Убираю "non empty {[Продукция].[Наименование].AllMembers} on rows". Тогда происходит смешная реакция системы. В процессе расчета для одного магазина при вычислении значения [Measures].[Exp], поскольку среза по продукции не делается, а информация о неаддитивности цены теряется, происходит простое суммирование цены по всем строкам продукции этого магазина, естественно сумма получается больше 500, и следовательно возвращается сумма по всей продукции магазина (мне нужно только по дорогой). Вот на этой проблеме я заткнулся и не могу её решить уже два дня . Может кто подскажет, как в MDX решается подобная проблема?

Заранее спасибо
...
Рейтинг: 0 / 0
Помогите составить MDX-запрос
    #33547487
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
WITH MEMBER [Measures].[Exp] AS
'SUM(FILTER({[Продукция].[Наименование].AllMembers}, [Measures].[Цена] > 500), [Measures].[Продано])'
SELECT 
{[Measures].[Exp]} ON COLUMNS,
NON EMPTY {[Магазины].[Магазин].AllMembers} ON ROWS
FROM [Sales]
...
Рейтинг: 0 / 0
Помогите составить MDX-запрос
    #33547489
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте, что-то вроде:
Sum(Filter(Descendants(Продукция по продуктам, Цена>500)), Продажи)
...
Рейтинг: 0 / 0
Помогите составить MDX-запрос
    #33547500
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АналитикИспользуйте, что-то вроде:
Sum(Filter(Descendants(Продукция по продуктам, Цена>500)), Продажи)
не путай людей - скобку не туда вставил...
Sum(Filter(Descendants(Продукция по продуктам), Цена>500), Продажи)
...
Рейтинг: 0 / 0
Помогите составить MDX-запрос
    #33547506
Whitebear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо. Все работает. Вот что значит коллективный разум :)) Надо почаще здесь вопросы задавать
...
Рейтинг: 0 / 0
Помогите составить MDX-запрос
    #33547508
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за замечание. Вы совершенно правы.
...
Рейтинг: 0 / 0
Помогите составить MDX-запрос
    #33547605
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WhitebearОгромное спасибо. Все работаети как скорость? удовлетворяет?
...
Рейтинг: 0 / 0
Помогите составить MDX-запрос
    #33547769
Аналитик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий, я так понимаю, что можно оптимизировать формулку? Было бы не плохо если Вы бы посоветовали более оптимальный вариант.
...
Рейтинг: 0 / 0
Помогите составить MDX-запрос
    #33547797
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АналитикДмитрий, я так понимаю, что можно оптимизировать формулку? Было бы не плохо если Вы бы посоветовали более оптимальный вариант.В такой постановке - даже и не знаю...
а вот если бы кол-во цен было число дискретное счётное и в разумных пределах небольшое, то я бы посоветовал создать изверение цен, и использовать функцию PeriodsToDate по измерению цен :-0
просто когда объём данных переходит какой-то предел, то ф-ции MDX начинают портить весь кайф от ОЛАПа
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Помогите составить MDX-запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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