powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / расчет среднего остатка.
42 сообщений из 42, показаны все 2 страниц
расчет среднего остатка.
    #33259906
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Избитая задача. Есть начальный остаток, есть все транзакции. Как рассчитать среднии остаток в течение года,
если остаток на конец каждого дня не хранится (ибо сильно накладно).

Где решать пофиг, хоть в SQL, хоть в OLAP
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33259942
vap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если иметь остаток на каждый день, остаток считается просто
1-й день - 30
2-й день - 20
3-й день - 20
4-й день - 30
-------------
средний остаток за 4 дня равен 100/4 = 25 единиц.

Если есть остатки не на каждый день, появляется погрешность
1-й день - 30
4-й день - 30
-------------
средний остаток за 4 дня равен 60/2 = 30 единиц.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33259964
inga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vapЕсли иметь остаток на каждый день, остаток считается просто
1-й день - 30
2-й день - 20
3-й день - 20
4-й день - 30
-------------
средний остаток за 4 дня равен 100/4 = 25 единиц.

Если есть остатки не на каждый день, появляется погрешность
1-й день - 30
4-й день - 30
-------------
средний остаток за 4 дня равен 60/2 = 30 единиц.

ну вы товарищъ америку открыли просто
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33259982
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vapЕсли иметь остаток на каждый день, остаток считается просто
1-й день - 30
2-й день - 20
3-й день - 20
4-й день - 30
-------------
средний остаток за 4 дня равен 100/4 = 25 единиц.

Если есть остатки не на каждый день, появляется погрешность
1-й день - 30
4-й день - 30
-------------
средний остаток за 4 дня равен 60/2 = 30 единиц.

повторяю, что остаток хранится только на начало года(месяца) но не дня(ибо сильно накладно).
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33260047
zmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надеюсь что не открою Америки...
есть такая идея... сейчас правда 1 a.m. :)

итак остаток на начало s
делаем
select sum(qty) group by date
получаем s1,s2,s3, ... sn - движение товара за день

тогда

S = (s + (s+s1) + (s+s1+s2) + ... (s+s1+s2...+sn)) / n

если это переписать как
S = (s*n + сумма по i от 1 до n ( si * (n-i+1) )) /n

то возможно за один проход cursor можно все посчитать....

а может если в sql написать функцию типа day_number_of_year(date)

то что-то типа
select sum( s * day_number_of_year(date) ) from (select sum(qty) as s, date group by date )
хотя если честно я не уверен что так вообще можно писать :)
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33260394
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СрДневнОстатокКол=Avg(Descendants([Период],[Период].[День]), ([Measures].[НачОстатокКол]+[Measures].[КонОстатокКол])/2) считает средние остатки за период причем по дням, где
НачОстатокКол=([Период].CurrentMember.FirstSibling,[Measures].[Ostatok Kol])+sum([Период].CurrentMember.FirstSibling:[Период].CurrentMember,[Measures].[Prihod Kol]-[Measures].[Prodano Kol]-[Measures].[Vozvrat Kol])-([Measures].[Prihod Kol]-[Measures].[Prodano Kol]-[Measures].[Vozvrat Kol])
и
КонОстатокКол=([Период].CurrentMember.FirstSibling,[Measures].[Ostatok Kol])+sum([Период].CurrentMember.FirstSibling:[Период].CurrentMember,[Measures].[Prihod Kol]-[Measures].[Prodano Kol]-[Measures].[Vozvrat Kol])

пока так считаем
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33260426
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВалекСрДневнОстатокКол=Avg(Descendants([Период],[Период].[День]), ([Measures].[НачОстатокКол]+[Measures].[КонОстатокКол])/2) считает средние остатки за период причем по дням, где
НачОстатокКол=([Период].CurrentMember.FirstSibling,[Measures].[Ostatok Kol])+sum([Период].CurrentMember.FirstSibling:[Период].CurrentMember,[Measures].[Prihod Kol]-[Measures].[Prodano Kol]-[Measures].[Vozvrat Kol])-([Measures].[Prihod Kol]-[Measures].[Prodano Kol]-[Measures].[Vozvrat Kol])
и
КонОстатокКол=([Период].CurrentMember.FirstSibling,[Measures].[Ostatok Kol])+sum([Период].CurrentMember.FirstSibling:[Период].CurrentMember,[Measures].[Prihod Kol]-[Measures].[Prodano Kol]-[Measures].[Vozvrat Kol])

пока так считаем

[Measures].[Ostatok Kol] это физическая мера? Какой тип аггрегации и какова гранулярность по времени?

в ваших расчетах используется двойное суммировние со всеми вытекающими последствиями в производительности.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33260498
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял, что проблема только в производительности, т.к. составить формулу или запрос проблем не вызывает.
есть идея попробовать комбинированный подход и усовершенствовать ф-лу zmikа
но "select sum(qty) as s, date group by date" выполнять к olap linked server
а day_number_of_year(date) = DATEDIFF (d,'01.01.2005',date)+1
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33260527
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry BiryukovЯ так понял, что проблема только в производительности, т.к. составить формулу или запрос проблем не вызывает.

Конечно в ней родимой вся заковырина, ибо если бы она нас не трогала, то считали бы мы в столбик на бумаге в клеточку или на счетах на худой конец.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33260588
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну тогда я бы предложил хранить остатки на каждый день. но вы говорите это накладно... надо всё-таки выбирать между объёмом базы и временем отклика
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33260675
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire ВалекСрДневнОстатокКол=Avg(Descendants([Период],[Период].[День]), ([Measures].[НачОстатокКол]+[Measures].[КонОстатокКол])/2) считает средние остатки за период причем по дням, где
НачОстатокКол=([Период].CurrentMember.FirstSibling,[Measures].[Ostatok Kol])+sum([Период].CurrentMember.FirstSibling:[Период].CurrentMember,[Measures].[Prihod Kol]-[Measures].[Prodano Kol]-[Measures].[Vozvrat Kol])-([Measures].[Prihod Kol]-[Measures].[Prodano Kol]-[Measures].[Vozvrat Kol])
и
КонОстатокКол=([Период].CurrentMember.FirstSibling,[Measures].[Ostatok Kol])+sum([Период].CurrentMember.FirstSibling:[Период].CurrentMember,[Measures].[Prihod Kol]-[Measures].[Prodano Kol]-[Measures].[Vozvrat Kol])

пока так считаем

[Measures].[Ostatok Kol] это физическая мера? Какой тип аггрегации и какова гранулярность по времени?

в ваших расчетах используется двойное суммировние со всеми вытекающими последствиями в производительности.

да физическая, MOLAP, на начало месяца, ну а что делать заказали самую среднюю и на начало дня и на конец дня чтоб учавствовали
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33260723
Пашка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Умного ниче не скажу :), но согласен с Дмитрием.
Если физически не хранить на каждый день, то любое решение будет неудовлетворительным по времени отклика. Очень будет тормозить.
Я правда не знаю, сколько у вас транзакций, но, судя по тому, что хранить накладно - прилично транзакций.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33260847
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПашкаУмного ниче не скажу :), но согласен с Дмитрием.
Если физически не хранить на каждый день, то любое решение будет неудовлетворительным по времени отклика. Очень будет тормозить.
Я правда не знаю, сколько у вас транзакций, но, судя по тому, что хранить накладно - прилично транзакций.

Я бы не был таким таким пессимистичным, ибо на ум приходит следующее


Код: plaintext
1.
2.
[Средний остаток] = 
([Начальный остаток] * (Конец периода - Начало периода) + Sum([Движение]*(Конец периода - Дата движения)) / 
(Конец периода - Начало периода) 
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33260970
vap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формула
автор[Средний остаток] =
([Начальный остаток] * (Конец периода - Начало периода) + Sum([Движение]*(Конец периода - Дата движения)) /
(Конец периода - Начало периода)
даст неправильный результат, тк чем старше движение тем больший весовой коэффициент у него. В формуле нужно оперировать остатками.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33261168
Беляев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, господа
Давайте термины уточним

Средний остаток - это просто, он считается

(Остаток на начало + Остаток на конец)/2

А вот вам похоже нужен среднесуточный остаток
Тогда что считать остатком за сутки остаток на начало, остаток на конец?
Или средний остаток за сутки ?

Среднесуточный остаток будет считаться как сумма остатков за сутки за период/ на число дней в периоде так ?

Имеем формулу:

Остаток на конец=Остаток на начало + Приход - Расход

Тогда суммарный остаток у нас будет

Сумма Остаток на начало

Но Остаток на начало следующего дня = Остаток на конец


То есть формула превращается в формулу zmike

S = (s*n + сумма по i от 1 до n ( si * (n-i+1) )) /n

Где s - остаток на начало
n - число дней в периоде

si приход за i день - расход за i день

Вот только предлагаю это в MDX считать, тогда надо просто довесок
si*(n-i+1) преобразовать так, чтобы использовать аггрегат по приходу, расходу


Владислав Беляев
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33261172
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vapФормула
автор[Средний остаток] =
([Начальный остаток] * (Конец периода - Начало периода) + Sum([Движение]*(Конец периода - Дата движения)) /
(Конец периода - Начало периода)
даст неправильный результат, тк чем старше движение тем больший весовой коэффициент у него. В формуле нужно оперировать остатками. присмотритесь внимательнее. формула верна, и это разжевал zmike.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33261332
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БеляевГоспода, господа
Давайте термины уточним

Средний остаток - это просто, он считается

(Остаток на начало + Остаток на конец)/2

Правильно, давайте уточним.

Есть Функция F(х). Среднее значение функции на интервале [x1;x2] есть
Определенный Интеграл F(х) от x1 до x2 разделить на (x2 - x1), если кто не помнит из курса алгебры и начал мат анализа (10-й класс советской школы).

А то что вы приводите как (Остаток на начало + Остаток на конец)/2 есть приближение 1-го порядка (линейное) или формула трапеций.

А та формула, что я предлагаю дает точный результат вне зависимости от того, что мы рассматриваем, год, неделю или день (если большой поток транзакций и нужно среднее в течении дня). Если к каждому движению есть время его совершения, то мы получам математически точное среднее без каких либо аппроксимаций.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33261810
zmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireЕсть Функция F(х). Среднее значение функции на интервале [x1;x2] есть
Определенный Интеграл F(х) от x1 до x2 разделить на (x2 - x1).

полностью согласен. только слово "функция" появиось только в последнем посте.

но если уж вспоминать о советской школе, а значит и о Большой советский энциклопендии

так если считать остатки набором чисел.... то много разных формул подойдет

а вообще средних бывает много, бывает еще "мода" (наиболее часто встречаемая величина), медиана (середина между max и min значаниями)


надеюсь это слишком сильно смаховало на флейм
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33261913
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zmike[quot backfire]но если уж вспоминать о советской школе, а значит и о Большой советский энциклопендии

так если считать остатки набором чисел.... то много разных формул подойдет

а вообще средних бывает много

...

надеюсь это слишком сильно смаховало на флейм

К флейму это и близко не было. Речь шла о быстром (но не грубом) вычислении среднего функции, в данном случае остатка, представленной не значениями, а производными.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33262016
zmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire zmike[quot backfire]но если уж вспоминать о советской школе, а значит и о Большой советский энциклопендии

так если считать остатки набором чисел.... то много разных формул подойдет

а вообще средних бывает много

...

надеюсь это слишком сильно смаховало на флейм

К флейму это и близко не было. Речь шла о быстром (но не грубом) вычислении среднего функции, в данном случае остатка, представленной не значениями, а производными.

на самом деле я описался и не написал "не"
то есть должно было быть

надеюсь это _не_ слишком сильно смаховало на флейм

и имел я ввиду свой пост.

что касается быстроты то все формулы как мне казалось считали все быстрее чем за 2 прохода. а если написать это в sql, и иметь среднее за год. то вполне можно это запустить ночью.

а что касается точности... то опять же IMHO формул по которым считать огромное кол-во, снаало надо чтоб те кто на них будет смотреть согласились и понимали сильные и слабые стороны осреднения. (не сомневаюсь, что это вы и так сделали (ете))
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33262045
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что касается быстроты то все формулы как мне казалось считали все быстрее чем за 2 прохода

у zmike sql c подзапросом (время выполнения пропорционально квадрату количества двидений)

у Валька MDX тоже с двойным суммированием, что тоже пропорционально квадрату количества движений.

я же вымучил формулу с одинарным суммированием. Правда как ее красиво оформить на MDX еще не додумался. Как на MDX datediff оформить ?
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33262300
vap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, может формула должна выглядеть
автор[Средний остаток] =
([Начальный остаток] * (Конец периода - Начало периода) + Sum([Движение]*( Начало периода - Дата движения)) /
(Конец периода - Начало периода)
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33262308
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vapГоспода, может формула должна выглядеть
автор[Средний остаток] =
([Начальный остаток] * (Конец периода - Начало периода) + Sum([Движение]*( Начало периода - Дата движения)) /
(Конец периода - Начало периода)

А че гадать, возьмите или калькулятор или Excel и проверьте свими руками.

Или еще проще, представьте в уме две ситуации, когда одно единственное движение происходит
- в начале рассматриваемого периода
- в конце рассматриваемого периода
и как это отражается на среднем остатке за период.

И тогда вы поймете, что не
( Начало периода - Дата движения)

а
( Конец периода - Дата движения)
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33262342
vap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
согласен, конец периода :)
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33262354
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireу zmike sql c подзапросом (время выполнения пропорционально квадрату количества двидений)Она с двойным только если всё на скл делать. хотя можно и переписать:
select sum(qty*datediff(...)) as s, date group by date
backfire
я же вымучил формулу с одинарным суммированием. Правда как ее красиво оформить на MDX еще не додумался. Не факт, что суммирование будет одинарным. имхо, ваша формула и змика - одинаковые в плане порядка кол-ва операций
backfireКак на MDX datediff оформить? например завести свойство "номер дня" = datediff(d,'01.01.1900',datefield), а потом Time.Day.[2005.01.01].Properties("номер дня") - Time.Day.[2005.04.11].Properties("номер дня")
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33262479
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все каментарии не читал, но практические мысли на эту тему есть.

Вопрос: подсчитать средний остаток за период.
Допустим что всех товаров.

Лучше это сделать скриптом запросов либо хп.
1 извлекаем суммы движения товаров в разрезе товаров, складов, приводя к одной е.и. в отдельную табличку.

Считаем во 2-ю табличку остатки на утро каждого дня начиная от остатков на начало периода. Расчет производить по собранной таблице движения на каждый день от предыдущего.

делай 3. находим средний остаток.
Кол-во измерений в табличках надеюсь досточно ясно.
Вопрос быстродействия не должен стоят очень остро.
На практике, имея витрину группированного движения расчет, который использует расчет остатков на каждый день длится на табличке в 10 млн. около 20-45 секунд, MySQL 5.0, машинка средняя П2,4 1 Гб мозгов.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33262481
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совет для различного рода писателей товарных движений - ведите регистры текущего состояния, тогда расчеты интересующих состояний будут работать одинаково быстро и через 1 и через 2 года.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33262657
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин КСовет для различного рода писателей товарных движений - ведите регистры текущего состояния, тогда расчеты интересующих состояний будут работать одинаково быстро и через 1 и через 2 года.

А нельзя ли чуть подробнее. Что вы имеете ввиду?
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33262659
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин КВсе каментарии не читал, но практические мысли на эту тему есть.

Вопрос: подсчитать средний остаток за период.
Допустим что всех товаров.

Лучше это сделать скриптом запросов либо хп.
1 извлекаем суммы движения товаров в разрезе товаров, складов, приводя к одной е.и. в отдельную табличку.

Считаем во 2-ю табличку остатки на утро каждого дня начиная от остатков на начало периода. Расчет производить по собранной таблице движения на каждый день от предыдущего.

делай 3. находим средний остаток.
Кол-во измерений в табличках надеюсь досточно ясно.
Вопрос быстродействия не должен стоят очень остро.
На практике, имея витрину группированного движения расчет, который использует расчет остатков на каждый день длится на табличке в 10 млн. около 20-45 секунд, MySQL 5.0, машинка средняя П2,4 1 Гб мозгов.


10 миллионов - это в движений? За какой период времени?
скажите лучше сколько у вас не нулевых (товар, склад) на день?
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33263636
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire Валентин КСовет для различного рода писателей товарных движений - ведите регистры текущего состояния, тогда расчеты интересующих состояний будут работать одинаково быстро и через 1 и через 2 года.
А нельзя ли чуть подробнее. Что вы имеете ввиду?
Регистры текущего состояния - например сколько товара в текущих момент при проведении всех строчек документов. Это остаток на сегодня с учетом сегодня и пр., т.е. если протянуть все движение - то должна быть такая же цифра остатка товара.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33263654
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire Валентин КВсе каментарии не читал, но практические мысли на эту тему есть.
Вопрос: подсчитать средний остаток за период.
Допустим что всех товаров.
Лучше это сделать скриптом запросов либо хп.
1 извлекаем суммы движения товаров в разрезе товаров, складов, приводя к одной е.и. в отдельную табличку.
Считаем во 2-ю табличку остатки на утро каждого дня начиная от остатков на начало периода. Расчет производить по собранной таблице движения на каждый день от предыдущего.
делай 3. находим средний остаток.
Кол-во измерений в табличках надеюсь досточно ясно.
Вопрос быстродействия не должен стоят очень остро.
На практике, имея витрину группированного движения расчет, который использует расчет остатков на каждый день длится на табличке в 10 млн. около 20-45 секунд, MySQL 5.0, машинка средняя П2,4 1 Гб мозгов.
10 миллионов - это в движений? За какой период времени?
скажите лучше сколько у вас не нулевых (товар, склад) на день?
В день около 25 тыс строк движения, т.е. приход, расход, передача, списание и пр. не документов, а позиций товара в первичных документах.
табличка движения где-то 25 млн. записей, группированных около 10 млн. на витрине.
Подобный расчет остатков используется для расчета нулевых дней для каждой позиции товара товара.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33263689
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин К backfire Валентин КСовет для различного рода писателей товарных движений - ведите регистры текущего состояния, тогда расчеты интересующих состояний будут работать одинаково быстро и через 1 и через 2 года.
А нельзя ли чуть подробнее. Что вы имеете ввиду?
Регистры текущего состояния - например сколько товара в текущих момент при проведении всех строчек документов. Это остаток на сегодня с учетом сегодня и пр., т.е. если протянуть все движение - то должна быть такая же цифра остатка товара.

Ну так сразу бы и сослались на терминологию Сергея Нуралиева.

В OLTP без таких таблиц никуда не денешься, но вот в DWH на кой они сдались?
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33263699
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин К backfire10 миллионов - это в движений? За какой период времени?
скажите лучше сколько у вас не нулевых (товар, склад) на день?
В день около 25 тыс строк движения, т.е. приход, расход, передача, списание и пр. не документов, а позиций товара в первичных документах.
табличка движения где-то 25 млн. записей, группированных около 10 млн. на витрине.
Подобный расчет остатков используется для расчета нулевых дней для каждой позиции товара товара.

А на второй вопрос о количестве записей в таблицу отстатков ответите?
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33264053
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire Валентин К backfire10 миллионов - это в движений? За какой период времени?
скажите лучше сколько у вас не нулевых (товар, склад) на день?
В день около 25 тыс строк движения, т.е. приход, расход, передача, списание и пр. не документов, а позиций товара в первичных документах.
табличка движения где-то 25 млн. записей, группированных около 10 млн. на витрине.
Подобный расчет остатков используется для расчета нулевых дней для каждой позиции товара товара.

А на второй вопрос о количестве записей в таблицу отстатков ответите?
В таблице остатков - текущее состояние остатков, а таблицы остатков на день вообще нет, все расчитывается на лету "поворотом" таблиц.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33264169
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин КВ таблице остатков - текущее состояние остатков, а таблицы остатков на день вообще нет, все расчитывается на лету "поворотом" таблиц.


А как же ваше же сообщение.

Валентин КСчитаем во 2-ю табличку остатки на утро каждого дня начиная от остатков на начало периода. Расчет производить по собранной таблице движения на каждый день от предыдущего.

Как это понимать?
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33264547
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire Валентин КВ таблице остатков - текущее состояние остатков, а таблицы остатков на день вообще нет, все расчитывается на лету "поворотом" таблиц.


А как же ваше же сообщение.

Валентин КСчитаем во 2-ю табличку остатки на утро каждого дня начиная от остатков на начало периода. Расчет производить по собранной таблице движения на каждый день от предыдущего.

Как это понимать?
так и понимать, я же написал - считается !!!, эта табличка создается в скрипте как результирующая в темпорари, я не знаю сколько в ней записей, просто перемножается кол-во позиций на кол-во дней, примерно за месяц 3000*30=90000 записей, вот собственно и расчет :)
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33272912
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
короче человек предлагает делать таблицу остатков на каждый день
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33273132
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валеккороче человек предлагает делать таблицу остатков на каждый день

А речь шла, о том, чтобы остатки на каждый день ни в tempdb, ни даже в плане запроса.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33276786
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валеккороче человек предлагает делать таблицу остатков на каждый день
Уважаемые комрады.
Ваш что заклинило? зачем считать остатки на каждый день каждый день и это хранить?
Зачем хранить постоянно табличку остатков на каждый день? ничего я такого не предлагал.
Я показал реальный подход к расчетам, а не призываю к накомлению в базе данных-мусора.
Если нужно сделать отчет, тогда перед извлечением результатов отчета прогоняем скрипт, в котором все считаем во временных табличках и отдаем пользователю в результатах.
Вообще для быстрых расчетов есть отдельные подходы, которые оправдали себя на практике ускорением расчетов на порядок.
Смысл состоит в том, что для того, чтобы рассчитать сложный аналитический отчет нужно его рассчитать, а не парится установкой вских мега-OLAP серверов.
Проектировка DWH вообще проста. Помните комрады про шкалу - дата. Далее все быстро и просто.
К сожалению я не веду курсов по проектированию высокоскоростных структур данных.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33276813
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire Валеккороче человек предлагает делать таблицу остатков на каждый день

А речь шла, о том, чтобы остатки на каждый день ни в tempdb, ни даже в плане запроса.
В плане запроса это тоже есть, только для конкретного запроса, потому что это извлекается ни одним запросом, а сначала рассчитывается.
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33279248
ora_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
backfire
Код: plaintext
1.
2.
[Средний остаток] = 
([Начальный остаток] * (Конец периода - Начало периода) + Sum([Движение]*(Конец периода - Дата движения)) / 
(Конец периода - Начало периода) 


Попробовал реализовать эту формулу...по-моему тут все-таки ошибка,
более менее похожий результат получается при использовании такой формулы:

([Начальный остаток]+ Sum([Движение]*(Конец периода - Дата движения)) /
(Конец периода - Начало периода)
...
Рейтинг: 0 / 0
расчет среднего остатка.
    #33279251
ora_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ora_guest backfire
Код: plaintext
1.
2.
[Средний остаток] = 
([Начальный остаток] * (Конец периода - Начало периода) + Sum([Движение]*(Конец периода - Дата движения)) / 
(Конец периода - Начало периода) 


Попробовал реализовать эту формулу...по-моему тут все-таки ошибка,
более менее похожий результат получается при использовании такой формулы:

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


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