powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Размножить сет
17 сообщений из 17, страница 1 из 1
Размножить сет
    #32787361
Вжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким способом можно разможить сет до необходимого размера, если известен текущий размер сета, все это делая в МДХ выражении налету. Например, я прогнозирую продажи, для этого мне надо получить сет из объемов продаж за каждый из предыдущих 14 дней от дня прогнозирования. Однако данных не хватает, и получается сет, содержащий объемы продаж за произвольные 5 дней из затребованных 14 предыдущих. Тогда мне надо получить сет размером 14, где оставшиеся 9 элементов будут аналогичны последнему элементу из сета с 5 днями. Подскажите, если есть мысли.
...
Рейтинг: 0 / 0
Размножить сет
    #32787608
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВжикКаким способом можно разможить сет до необходимого размера, если известен текущий размер сета, все это делая в МДХ выражении налету. Например, я прогнозирую продажи, для этого мне надо получить сет из объемов продаж за каждый из предыдущих 14 дней от дня прогнозирования. Однако данных не хватает, и получается сет, содержащий объемы продаж за произвольные 5 дней из затребованных 14 предыдущих. Тогда мне надо получить сет размером 14, где оставшиеся 9 элементов будут аналогичны последнему элементу из сета с 5 днями. Подскажите, если есть мысли.

Программирование граничных условий в задачах мат-физики было всегда за..цей. :-)

А если поделу, то 14 этажный IIF тебе вряд ли по душе будет. А циклы в MDX еще не ввели. Я бы это делал на клиенте при генерации MDX.
...
Рейтинг: 0 / 0
Размножить сет
    #32787742
Вжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, backfire. Может Mosha что либо добавит?
...
Рейтинг: 0 / 0
Размножить сет
    #32787935
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
backfireА циклы в MDX еще не ввели
А чем Generate не цикл ?

Вжик - а можно поподробнее, что значит "Однако данных не хватает, и получается сет, содержащий объемы продаж за произвольные 5 дней из затребованных 14 предыдущих" ?

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Размножить сет
    #32788063
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mosha
А чем Generate не цикл ?

Вжик - а можно поподробнее, что значит "Однако данных не хватает, и получается сет, содержащий объемы продаж за произвольные 5 дней из затребованных 14 предыдущих" ?

Generate достаточно зажат по возможностям.

Вжик наверное хочет иметь glide average по последним двум неделям и имеет проблему в области, где нет "последних двух недель". Типичная проблема граничных условий. И еще надо выянить - стоит ли ее решать в лоб.
...
Рейтинг: 0 / 0
Размножить сет
    #32788108
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот чего я не понима это что значит "нет последних двух недель"

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Размножить сет
    #32788126
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда, только Вжик сможет прояснить.
Я не думаю что у него измерение времени с дырками.
...
Рейтинг: 0 / 0
Размножить сет
    #32788283
Вжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, все несколько не так. Мы установили, что наши продажи по группе товаров ТНП описываются линейной регрессией, т.е. прямой. Для получения функции регрессии нам нужен набор исходных данных, т.е. период за который мы оцениваем продажи, описывающих текущую ситуацию со спросом. Этот период мы решили взять 2 предыдущие недели от точки прогнозирования (т.е. от сегодняшнего дня). Но в течение 2-х недель определенного товара может не быть на остатках в ТМ из-за ошибок в управлении товародвижением. Если товара нет на остатках, значит его и не могли купить, т.е. нет очередной точки из затребованных 14 для построения линейной регрессии. Так может дойти вплоть до 2 точек в произвольных местах периода, например купили 10 дней назад 20 штук, а 5 дне назад 15 штук, в остальные дни товара просто небыло в ТМ. Но нам нужна хорошая линейная регрессия, а данная линейная регрессия скажет нам, что через 10 дней у нас товар перестанут покупать вообще. Поэтому нам надо взять эти 15 штук из последней точки и дополнить данным объемом недостающие точки, тогда у нас получится линейная регрессия, которая скажет, что в общих чертах у нас покупают 15.35 штук на текущий момент, с незначительным убыванием спроса, но что спрос по крайней мере через 10 дней не уйдет в 0, что для нас, с оценкой каждую неделю вполне приемлемо для построения новых функций, описывающих спрос.
...
Рейтинг: 0 / 0
Размножить сет
    #32788450
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как считается регрессия ? У Вас есть UDF ? Тогда логику лучше сделать там. Можно конечно заставить LinReg иметь такую логику, но слишком накручено получится...

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Размножить сет
    #32788457
Вжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока мы как раз и считаем коэф-т а с помощью LinRegSlope(), свободный многочлен b с помощью LinRegIntercept(), на вход которым и надо подавать сет из непустых дней продаж, которые не всегда есть.
...
Рейтинг: 0 / 0
Размножить сет
    #32788541
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК, тогда, передавать сет из 14 дней на который наложить примерно такой calculation:
Код: plaintext
NormalizedSales AS IIF(IsEmpty(Measures.Sales), Time.PrevMember, Measures.Sales)
Этоправда будет считать немножко не так как Вы хотели, но думаю тоже нормально:
Код: plaintext
1.
2.
Sales              1 NULL NULL NULL 10 NULL NULL 5 NULL NULL
NormalizedSales    1   1    1    1  10  10   10  5   5   5 
Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Размножить сет
    #32788563
Вжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое тоже подойдет. Спасибо, только вот куда его наложить пока не догоняю. Для примера как мы считаем коэф-т а:
Код: plaintext
1.
2.
LinRegSlope(Filter(ClosingPeriod([Дата].[ГКМД].[Дата], [Дата].[ГКМД].CurrentMember).Lag([Measures].[Количество дней обучающей выборки (АБСД)]) : ClosingPeriod([Дата].[ГКМД].[Дата],
[Дата].[ГКМД]).PrevMember, [Measures].[Продажи Количество] >  0  or [Measures].[Остаток Количество (нач.пер.)] >  0  or [Measures].[Остаток Количество (кон.пер.)] >  0 ),
[Measures].[Продажи Количество])
...
Рейтинг: 0 / 0
Размножить сет
    #32788636
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaОК, тогда, передавать сет из 14 дней на который наложить примерно такой calculation:
Код: plaintext
NormalizedSales AS IIF(IsEmpty(Measures.Sales), Time.PrevMember, Measures.Sales)
Этоправда будет считать немножко не так как Вы хотели, но думаю тоже нормально:
Код: plaintext
1.
2.
Sales              1 NULL NULL NULL 10 NULL NULL 5 NULL NULL
NormalizedSales    1   1    1    1  10  10   10  5   5   5 
Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

А как же?

MoshaЯ считаю, что если MDX expression содержит IIF, это значит что оно неправильно написано, и его надо переписать. Я понимаю, что это не всегда возможно, но убежден, что это возможно практически всегда.


:-)
...
Рейтинг: 0 / 0
Размножить сет
    #32789448
sasV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MoshaОК, тогда, передавать сет из 14 дней на который наложить примерно такой calculation:
Код: plaintext
NormalizedSales AS IIF(IsEmpty(Measures.Sales), Time.PrevMember, Measures.Sales)
Этоправда будет считать немножко не так как Вы хотели, но думаю тоже нормально:
Код: plaintext
1.
2.
Sales              1 NULL NULL NULL 10 NULL NULL 5 NULL NULL
NormalizedSales    1   1    1    1  10  10   10  5   5   5 
Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

извините что немного не по теме и со своей проблемой,
но проблема в таком же calculation member(отличие в +1)

ниже следующий MDX отказывается работать(выпадает с ошибкой),
если в условии поставить конкретный день.

Я нашёл причину, но незнаю как исправить.
Дело в том, что [Measures].[дн] по одному из элементов [дог_опл] пустое в ноябре и было не пустое много (>100) дней назад. Поэтому PrevMember не расчитывается ;-(
А с несколькими(около 4) месяцами PrevMember расчитывается без ошибок.
В маленьком отладочном FoodMart похожий запрос - тоже без проблем.

WITH
MEMBER
[Measures].[день_нарастающ] AS 'IIF(IsEmpty([Measures].[дн]),[месяц].PrevMember+1, [Measures].[дн] )'

SET [aaa] AS '{[дог_опл].[все дог_опл].[на продажу].Children}'

SELECT
Filter([aaa] , ( [Measures].[день_нарастающ] >10))
ON ROWS,
{[Measures].[дн], [Measures].[день_нарастающ]}
ON COLUMNS
FROM
[долг_дн]
where ([месяц].[весь период].[2004].[4 Квартал 2004].[Ноябрь 2004])


Что посоветуете?
...
Рейтинг: 0 / 0
Размножить сет
    #32789518
Вжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо вам нужно брать сет дат, пропускать его через фильтр с необходимыми условиями, а потом брать хвост в виде 1 элемента. Только вот какого размера брать исходный сет - кончено можно взять все элементы, которые есть, но будет долго, поэтому видимо нужно брать максимально встречающееся в конкретной ситуации значение. Например я так ищу дату последней продажи с ограничем, что продажи старее 90 дней мне не нужны.
Код: plaintext
Tail(NonEmptyCrossjoin(LastPeriods( 90 , ClosingPeriod([Дата].[ГКМД].[Дата], [Дата].[ГКМД].CurrentMember)), {[Measures].[фПродажи Количество]}),  1 ).Item( 0 ).Item( 0 ).Name
...
Рейтинг: 0 / 0
Размножить сет
    #32790227
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
backfireА как же?

Mosha
Я считаю, что если MDX expression содержит IIF, это значит что оно неправильно написано, и его надо переписать. Я понимаю, что это не всегда возможно, но убежден, что это возможно практически всегда.

:-)
Ну да, я схалтурил конечно, ладно IIF, так я еще и рекурсию применил, совсем плохо. Просто всего 14 дней в сете и не было сил написать как надо :)

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Размножить сет
    #32790307
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaНу да, я схалтурил конечно, ладно IIF, так я еще и рекурсию применил, совсем плохо. Просто всего 14 дней в сете и не было сил написать как надо :)


Ну если в час ночи MDX-писательством заниматься еще и не такое из под топора выйдет :-)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Размножить сет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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