Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Построчный расчет с заменой акционерных продаж на медиану последних 10 регулярных продаж
 
Добрый день.
Прошу, помощи с оптимизацией формулы\запроса, как например в статье https://www.sqlbi.com/articles/how-to-compute-index-numbers-at-top-speed/#code4, при помощи функции RANKX, т.к. текущий запрос на 7млн.записей отрабатывает с трудом, а самому оптимизировать не получается(((

Задача заменить все продажи по акциям на медиану предыдущих 10 продаж, в разрезе клиент+товар.(т.е. все промо отгрузки, на регулярные)
Код
№продаж = IF([Дата]>DATE(2017;1;1);COUNTROWS(CALCULATETABLE('Продажи';FILTER('Продажи';[Дата]<=EARLIER([Дата]));FILTER('Продажи';[сцепкаТовКли]=EARLIER([сцепкаТовКли]));FILTER('Продажи';AND([акция]="нет";[возврат]="нет")))))
Код
регулярные продажи,уп = ROUND( IF(AND([акция]="да";[возврат]="нет");min(MEDIANX(ADDCOLUMNS(CALCULATETABLE('Продажи';FILTER('Продажи';[сцепкаТовКли]=EARLIER([сцепкаТовКли]));FILTER('Продажи';[№продаж]<=EARLIER([№продаж]));FILTER('Продажи';[№продаж]>EARLIER([№продаж])-10);FILTER('Продажи';AND([акция]="нет";[возврат]="нет")));"ddd";[Сумма короба]);[ddd]);[Сумма короба]);[Сумма короба]);0)

Суть запроса следующая. Имеем таблицу "Продажи" с продажами в коробах по дням по клиентам и товарам с 2015г.. У каждой строки есть признак с пометкой "да", является она "акцией", "возвратом" или просто продажей.

1.столбец "№продаж" - По сцепке Товар+Клиент выстраиваем все регулярные (без акций и возвратов) продажи с 01.01.17 (т.к. деление на акцию началось только с 01.08.16) по дням с присвоением номера продажи.

2. столбец "регулярные продажи,уп" - Для каждой акционной продажи рассчитываем медиану по 10 предыдущим регулярным продажам и заменяем на неё с последующем округлением до целого короба.

Возможно есть более простой и оптимальный способ расчета данной меры т.к. текущий слишком медленный.

 
lyapa, не пониманию с какой целью используете для данной цели ранжирование? Почему нельзя отобрать первые 10 записей функцией TOPN, и уже к получившемуся массиву применить медиану?
Вот горшок пустой, он предмет простой...
 
Поможет любое решение, которое сможет оптимизировать запрос!

TOPN - подвесил запрос (нехватка памяти)
 
Есть ещё идеи по оптимизации данных запросов?
Страницы: 1
Читают тему (гостей: 1)
Наверх