powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / куб остатков
24 сообщений из 24, страница 1 из 1
куб остатков
    #32538785
pyramid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья!
Научите делать куб остатков. С чего начать, где почитать?
Куб движений получился легко, а вот с остатками - не знаю, с какой стороны подступиться.
MS SQL 2000 Analysis Services, Office XP as client.
...
Рейтинг: 0 / 0
куб остатков
    #32538896
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создай Calculated Member

[Measures].[ОстатокНаКонецПериода]

c формулой

Код: plaintext
1.
2.
3.
sum(Ascendants([Time].CurrentMember),
   (sum([Time].FirstSibling :[Time].CurrentMember,
           [Measures].[ПриходРасход])) - [Measures].[ПриходРасход]) + 
  [Measures].[ПриходРасход]
...
Рейтинг: 0 / 0
куб остатков
    #32539245
Пашка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую начать с чтения результатов поиска в этом форуме по слову "остатки" :-)
...
Рейтинг: 0 / 0
куб остатков
    #32539793
pyramid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, друзья!
Сдвинули с мертвой точки.
Еще раз огромное спасибо.
...
Рейтинг: 0 / 0
куб остатков
    #32565213
ale-805
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пирамид, и куда тебя сдвинули? У меня щас такая же задача стоит и не знаю как подступиться...
Код: plaintext
1.
2.
3.
4.
sum(Ascendants([Time].CurrentMember),
   (sum([Time].FirstSibling :[Time].CurrentMember,
           [Measures].[ПриходРасход])) - [Measures].[ПриходРасход]) + 
  [Measures].[ПриходРасход]
Как-то это мудренно... Может скажете где про это почитать или хотя бы на пальцах расскажете что дает эта формула?
...
Рейтинг: 0 / 0
куб остатков
    #32565250
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не мудрено, а просто, то

Код: plaintext
sum(PeriodsToDate([Time].[(All)],[Time].CurrentMember),[Measures].[ПриходРасход])

но это тормозит если до месяца или дня спускаться будете.
...
Рейтинг: 0 / 0
куб остатков
    #32565306
Maxim Tereschenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понимаю последня формула просто суммирует [ПриходРасход] за все предыдущие дни, что есть не оптимально. Правильнее: сумма [ПриходРасход] за предыдущие годы + сумма [ПриходРасход] за предыдущие кварталы теущего года + сумма [ПриходРасход] за предыдущие месяцы текущего квартала + сумма [ПриходРасход] на предыдущие дни текущего месяца. Я не спец в MDX, но по-моему предыдущая формула так и считает.
...
Рейтинг: 0 / 0
куб остатков
    #32565337
Фотография Гликоген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, вы все загнались.
такие формулы расчета остатков загибаются на ХХХ товаров и Х лет, потому что спускаются до уровня транзакций в каждом измерении.
в общем случае по остаткам надо две "звездочки" - ежедневный снэпшот остатка и транзакции.

И хорошо бы, чтобы OLAP или отчетная система имела вид агрегата "На текущий период" и "На последний период", как Cognos ReportNet или PowerPlay. Если не имеет, как MS AS, при помощи MDX пишется простая формула.
...
Рейтинг: 0 / 0
куб остатков
    #32565340
Фотография Гликоген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
складские транзакции
...
Рейтинг: 0 / 0
куб остатков
    #32565372
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim TereschenkoНасколько я понимаю последня формула просто суммирует [ПриходРасход] за все предыдущие дни, что есть не оптимально. Правильнее: сумма [ПриходРасход] за предыдущие годы + сумма [ПриходРасход] за предыдущие кварталы теущего года + сумма [ПриходРасход] за предыдущие месяцы текущего квартала + сумма [ПриходРасход] на предыдущие дни текущего месяца. Я не спец в MDX, но по-моему предыдущая формула так и считает.


Эта формула так и делает.

Код: plaintext
1.
2.
3.
sum(Ascendants([Time].CurrentMember),
   (sum([Time].FirstSibling :[Time].CurrentMember,
           [Measures].[ПриходРасход])) - [Measures].[ПриходРасход]) + 
  [Measures].[ПриходРасход]
...
Рейтинг: 0 / 0
куб остатков
    #32565389
DmitryS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Гликоген
На измерении YQMD , начатом с 1991 года для подсчёта значения по первой формуле backfire, необходимо при полном расчёте агрегатов(понимаю, что допущение, но, если делать usage-based optim. - вероятное, пожалуй) 88 операций сложения/вычитания. Вот и считайте насколько это будет тормозить. На моей практике, всё было нормально.
...
Рейтинг: 0 / 0
куб остатков
    #32565395
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГликогенРебята, вы все загнались.
такие формулы расчета остатков загибаются на ХХХ товаров и Х лет, потому что спускаются до уровня транзакций в каждом измерении.
в общем случае по остаткам надо две "звездочки" - ежедневный снэпшот остатка и транзакции.

И хорошо бы, чтобы OLAP или отчетная система имела вид агрегата "На текущий период" и "На последний период", как Cognos ReportNet или PowerPlay. Если не имеет, как MS AS, при помощи MDX пишется простая формула.

Такие формулы не спускаются до транзакций, т.к. используюь предрасчитанные аггрегаты из MOLAP куба движений по всем уровням измерений времени и др.

А на среднем железе "загиб" DWH начинается гораздо раньше, если пихать туда остатки на каждый день
...
Рейтинг: 0 / 0
куб остатков
    #32565685
Фотография Гликоген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В рознице число транзакций в ПриходРасход будет на пару-тройку ПОРЯДКОВ больше, чем скромный ЕжедневныйОстаток. В результате вам придется лить кубы предагрегированные данные, а если уж делать предагрегацию - почему не пойти путем, описанным в учебнике?
...
Рейтинг: 0 / 0
куб остатков
    #32565723
Пашка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поделюсь своим опытом.
Сначала конечно хотелось строить остатки "на лету", с помощью MDX, этот вариант казался довольно простым и заманчивым. Но потом все равно пришлось вернутсья к варианту, описанному гликогеном. Таблица фактов(транзакций), таблица подневных остатков. Расчет остатков не такое уж тяжелое занятие, если сделать это грамотно, а таблица остатков у меня получается 30-40 млн строк в год, но поскольку таблица предельно простая, ключи все короткие, индексы все на месте, работать с ней легко и приятно!
И кубики по ней строятся не в пример быстрее варианта на МДХ.
Да и возможностей на самом деле намного больше. По крайней мере в моем случае.
...
Рейтинг: 0 / 0
куб остатков
    #32565775
LordOfSilence
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пашка, поделись опытом.
Как из таблицы транзакций получить таблицу подневных остатков я себе представляю. Даже объемы очень близки. Но как обстоит дело у тебя с производительностью? Насколько быстро у тебя формируется такая таблица? Честно говоря, я отказался от подобного подхода, так как побоялся такой большой таблицы остатков. Хм... Возможно и зря. Что скажешь?
...
Рейтинг: 0 / 0
куб остатков
    #32565808
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГликогенВ рознице число транзакций в ПриходРасход будет на пару-тройку ПОРЯДКОВ больше, чем скромный ЕжедневныйОстаток. В результате вам придется лить кубы предагрегированные данные, а если уж делать предагрегацию - почему не пойти путем, описанным в учебнике?


Смотря какая гранулярность таблицы фактов ПриходРасход.
Если гранулярность не единичная продажа по чеку, а:
день,
артикул,
склад
То будет даже меньше, чем у вас с подневными остатками.
...
Рейтинг: 0 / 0
куб остатков
    #32566019
Пашка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LordOfSilence Насколько быстро у тебя формируется такая таблица? Честно говоря, я отказался от подобного подхода, так как побоялся такой большой таблицы остатков. Хм... Возможно и зря. Что скажешь?
У меня таблицы фактов "открываются" каждый год. И остатков, соответственно, тоже. Если целиком пересчитывать таблицу остатков с начала года - то получается час-полтора. (2-х ксеоновый пень с 2 гигами, 3,5 млн строк в факте за ГОД). При этом у меня еще подхватываются цены из таблицы цен, тоже подневных :). Мне остатки надо формировать по 4-5 разным ценам. Но так ведь делать не обязательно, можно просто добавлять следующий период (день), или, если были изменения в прошлом числе, удалять какую-то часть таблицы (например неделю) и формировать эту часть заново. Это недолго. Правда опытные и продвинуте люди, говорят, делают такие вещи на триггерах и ваще забывают что им надо как-то пересчитывать таблицу остатков, но я к ним (пока) не отношусь ;).
Поэтому просто написал скрипт, формирующий таблицу остатков.
...
Рейтинг: 0 / 0
куб остатков
    #32566063
LordOfSilence
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Пашка
Спасибо за ответ.
Я так понимаю, что OLTP-система у тебя все-таки 1С? :-)
Железо у нас практически идентичное, объем данных у меня чуть поменьше, но вполне сопоставим. Мне лично тоже больше нравится вариант с остатками, как с физической мерой, а не calculated member. Хм... Надо будет закрыть глаза на предубеждения и все-таки попробовать вариант с генерацией таблицы остатков.
Единственно, я не понял вот этого:
ПашкаИ кубики по ней строятся не в пример быстрее варианта на МДХ
Уточни, что ты имел в виду? Design/Process кубов или все-таки производительность в "user-time"?
...
Рейтинг: 0 / 0
куб остатков
    #32566116
DmitryS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я, честно говоря, не думаю, что стоит строить снэпшоты в тех случаях, когда бегаем по небольшому измерению. А случай остатков именно таков. Впрочем, всё зависит от конкретной ситуации.
...
Рейтинг: 0 / 0
куб остатков
    #32566763
Пашка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To LordOfSilence:
Нет OLTP-система у меня все-таки не 1С, а Домино (не Lotus!).
А кубики стали быстрее, конечно, для пользователей.
Попробуй, это не страшно, главное - сделать правильные индексы и правильные структуры табличек. Удачи! ;)
...
Рейтинг: 0 / 0
куб остатков
    #32757032
ale-805
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А упрощается ли формирование куба остатков в случае, когда в таблице движений товаров на конец КАЖДОЙ ОПЕРАЦИИ есть остаток товара? То есть есть поля Приход, Расход и ОСТАТОК.
...
Рейтинг: 0 / 0
куб остатков
    #32757241
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ale-805А упрощается ли формирование куба остатков в случае, когда в таблице движений товаров на конец КАЖДОЙ ОПЕРАЦИИ есть остаток товара? То есть есть поля Приход, Расход и ОСТАТОК.

IMHO, таблица фактов будет меньше, а вот получение в кубе остатка на произвольную дату будет немного сложнее. Надо будет хитро написать CustomRollUp.
Боюсь, что даже в Юконе такой подход будет нетривиальным.

Тем не менее увидеть работающее решение на основе вашего подхода было бы интересно.
...
Рейтинг: 0 / 0
куб остатков
    #32757352
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да backfire прав в формировании такого куба проблем нет , но вот в получении остатков приходиться изгаляться.
прикольно смотреть на график остатков на каждый день за последние 3-4 года, а они растут, видимо скоро будет акция по борьбе с остатками
...
Рейтинг: 0 / 0
куб остатков
    #32757975
DmitryS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 backfire:
Может, торможу, но проблемы не вижу. Пишем формулу, что берём на последний день с наличем данных по текущему сечению.
Код: plaintext
(Tail(потомки тек. времени с остатками).Item( 0 ),[Остатки])

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


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