Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите составить MDX-запрос
|
|||
|---|---|---|---|
|
#18+
Доброго времени... Бьюсь уже два дня над одним 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 решается подобная проблема? Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 18:57 |
|
||
|
Помогите составить MDX-запрос
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 19:18 |
|
||
|
Помогите составить MDX-запрос
|
|||
|---|---|---|---|
|
#18+
Используйте, что-то вроде: Sum(Filter(Descendants(Продукция по продуктам, Цена>500)), Продажи) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 19:19 |
|
||
|
Помогите составить MDX-запрос
|
|||
|---|---|---|---|
|
#18+
АналитикИспользуйте, что-то вроде: Sum(Filter(Descendants(Продукция по продуктам, Цена>500)), Продажи) не путай людей - скобку не туда вставил... Sum(Filter(Descendants(Продукция по продуктам), Цена>500), Продажи) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 19:26 |
|
||
|
Помогите составить MDX-запрос
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо. Все работает. Вот что значит коллективный разум :)) Надо почаще здесь вопросы задавать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 19:28 |
|
||
|
Помогите составить MDX-запрос
|
|||
|---|---|---|---|
|
#18+
Спасибо за замечание. Вы совершенно правы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 19:29 |
|
||
|
Помогите составить MDX-запрос
|
|||
|---|---|---|---|
|
#18+
WhitebearОгромное спасибо. Все работаети как скорость? удовлетворяет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 20:42 |
|
||
|
Помогите составить MDX-запрос
|
|||
|---|---|---|---|
|
#18+
Дмитрий, я так понимаю, что можно оптимизировать формулку? Было бы не плохо если Вы бы посоветовали более оптимальный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 23:51 |
|
||
|
Помогите составить MDX-запрос
|
|||
|---|---|---|---|
|
#18+
АналитикДмитрий, я так понимаю, что можно оптимизировать формулку? Было бы не плохо если Вы бы посоветовали более оптимальный вариант.В такой постановке - даже и не знаю... а вот если бы кол-во цен было число дискретное счётное и в разумных пределах небольшое, то я бы посоветовал создать изверение цен, и использовать функцию PeriodsToDate по измерению цен :-0 просто когда объём данных переходит какой-то предел, то ф-ции MDX начинают портить весь кайф от ОЛАПа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 00:41 |
|
||
|
|

start [/forum/topic.php?fid=49&fpage=339&tid=1870553]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 262ms |
| total: | 436ms |

| 0 / 0 |
