|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
Подскажите пожалуйста, в какую сторону копать и что почитать? Много лет работает система расчета управленческого учета. Начиналось все с простого: "а сделай-ка нам, чтобы считалось вот так: ..." Вкратце работает все так: - есть таблицы фактов (отгрузки продукции), разбитых по годам. В каждой примерно по 10млн записей. - приходит табличка с расходами на клиентов. Например, на клиента Иванова в октябре 2012г было потрачено 100тыс.руб (реклама, подарки, связь и т.п.). А на Петрова в апреле того же года всего 1тыс.руб. Или на продукцию группы "А" Московского региона было истрачено 1млн.руб. В этой таблице примерно 100тыс.записей. - глядя на факты, нужно распределить расходы пропорционально отгрузкам. Сейчас фактически все факты за всю историю сливаются в одну мега-таблицу, в которой потом распределяются расходы пропорционально отгрузкам. Например, в таблице расходов есть строка (грубо): "март, 2012. Продукция группы "А" Московского региона. 1млн.руб." Т.е. мы отбираем в фактах отгрузки за март 2012г продукцию группы "А". И распределяем этот миллион на всех отобранных клиентов. Чем больше у него была отгрузка этой продукции в марте, тем бОльшая сумма на него "вешается". Считается все это от 4 часов до суток и даже больше. Очень сильно кажется, что процесс организован не очень правильно. Где бы почитать, как это все правильно реализуется? Гуголь выдает только общие тексты по типу школьных рефератов: "управленческий учет нужен для.... Он помогает решить....... С помощью него можно......." Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 16:48 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987, читайте про финансовый учет или про бухгалтерский. только не наш, а западный. если вопросы больше технического плана - Adempiere or iDempiere и смотрим как там реализовано. там все достаточно просто и в то же время грамотно. то, что у вас - это не управленческий учет, а ужас, летящий на крыльях ночи стандартная картина для самописок а процесс организован неправильно не из-за 4 часов могу поспорить на ящик кваса, что путем несложных манипуляций некоторая часть сотрудников может "округлить" в свою сторону показатели, и это сейчас никто не отслеживает ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 17:12 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
интересно, какое отношение к обсуждаемому вопросу имеет какая-то " Adempiere or iDempiere ", это что уже стало образцом технической реализации? Тем более "самописка", если уж говорите о стандартной картине ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 17:47 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987, вопрос относится к организации на уровне используемой СУБД, непонятно почему модераторы перенесли его из профильной для таких вопросов ветки. Или используется не MS SQL? Чтобы на такие вопросы были ответы приведите хоть немного информации о структуре приложения и БД: какие основные таблицы, как организован описываемый процесс распределения... и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 17:52 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
iscrafmинтересно, какое отношение к обсуждаемому вопросу имеет какая-то " Adempiere or iDempiere ", это что уже стало образцом технической реализации? Тем более "самописка", если уж говорите о стандартной картине там все сделано достаточно похоже на оебс, а он в свою очередь похож на большинство других систем (в части GL) то есть фактически такое решение (с некоторыми вариациями) является стандартом де-факто для финансового учета и я не знаю других возможностей легко посмотреть пример нормальной реализации учета ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 18:05 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
s_ustinoviscrafmинтересно, какое отношение к обсуждаемому вопросу имеет какая-то " Adempiere or iDempiere ", это что уже стало образцом технической реализации? Тем более "самописка", если уж говорите о стандартной картине там все сделано достаточно похоже на оебс, а он в свою очередь похож на большинство других систем (в части GL) то есть фактически такое решение (с некоторыми вариациями) является стандартом де-факто для финансового учета и я не знаю других возможностей легко посмотреть пример нормальной реализации учета как можно назвать нормальной то, с чем постоянные мучения у пользователей и десятилетние внедрения... У ТС, судя по всему, банальные проблемы с организацией БД и расчета распределения ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 18:19 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
iscrafmкак можно назвать нормальной то, с чем постоянные мучения у пользователей и десятилетние внедрения... У ТС, судя по всему, банальные проблемы с организацией БД и расчета распределения когда "блондинко" рассказывает всем, что у них плохой админ, так как сделал так, что "такие прикольные програмки из интернета больше не ставятся" - вы ей поверите? :)) а банальные проблемы с организацией БД как раз и возникают, когда люди начинают придумывать велосипед в области методологии учета и схемы базы, вместо того, чтобы воспользоваться готовыми проверенными решениями. я говорю не про те случаи, когда человек ПОНИМАЕТ, как работает обычный функционал, и знает, как его можно улучшить (изменить) для его целей. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 19:03 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
s_ustinoviscrafmкак можно назвать нормальной то, с чем постоянные мучения у пользователей и десятилетние внедрения... У ТС, судя по всему, банальные проблемы с организацией БД и расчета распределения когда "блондинко" рассказывает всем, что у них плохой админ, так как сделал так, что "такие прикольные програмки из интернета больше не ставятся" - вы ей поверите? :)) а банальные проблемы с организацией БД как раз и возникают, когда люди начинают придумывать велосипед в области методологии учета и схемы базы, вместо того, чтобы воспользоваться готовыми проверенными решениями. я говорю не про те случаи, когда человек ПОНИМАЕТ, как работает обычный функционал, и знает, как его можно улучшить (изменить) для его целей. я конечно может и "блондинко" по Вашему, но образованная в плане организации учета "блондинко" :) А придумывают различные схемы БД по банальной причине: если нужно решить конкретную задачу, то нужно решать эту конкретную задачу, а не тянуть кладовку со всякой рухлядью на "всякий пожарный". Вспомнил случай, по случаю, когда для того, чтобы типа "правильно" посчитать накладные расходы на закупку организовывалось распределение в зависимости от объема, веса и еще множества параметров. При этом товар, в принципе, однотипный. В результате получилась выгода в 1000руб, но на разработку было потрачено 50 000 руб... Мораль всего этого известна давно: не нужно делать лишних движений, которые в результате принесут копейку. И еще добавят возни с учетом. У ТС явно проблема с БД и организацией расчета. Т.е. от этого и нужно исходить, прежде всего, а не влезать в дебри. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 20:08 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
iscrafmМораль всего этого известна давно: не нужно делать лишних движений, которые в результате принесут копейку. И еще добавят возни с учетом. У ТС явно проблема с БД и организацией расчета. Т.е. от этого и нужно исходить, прежде всего, а не влезать в дебри. Внимание, вопрос - а были бы у ТС проблемы с базой и организацией расчёта, если бы в его организации не изобретали велосипед, а вырезали бы готовый кусок из более менее нормальной ERP? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 20:20 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
s_ustinoviscrafmМораль всего этого известна давно: не нужно делать лишних движений, которые в результате принесут копейку. И еще добавят возни с учетом. У ТС явно проблема с БД и организацией расчета. Т.е. от этого и нужно исходить, прежде всего, а не влезать в дебри. Внимание, вопрос - а были бы у ТС проблемы с базой и организацией расчёта, если бы в его организации не изобретали велосипед, а вырезали бы готовый кусок из более менее нормальной ERP? возможно. Только скорее всего на более раннем этапе, а не тогда, когда накопилось миллионы записей ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 20:46 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
iscrafmЧтобы на такие вопросы были ответы приведите хоть немного информации о структуре приложения и БД: какие основные таблицы, как организован описываемый процесс распределения... и т.п. да, реализовано все на MSSQL 2000 структура таблиц примерно такая: - т.фактов ДатаКлиентКодПродукцияКодКол-воВесСумма - справочник клиентов КодНазваниеМенеджерТипКлиента - справочник продукции КодНазваниеВидПродукцииТипПродукции - список разносок ГодМесяцВидПродукцииТипПродукцииМенеджерТипКлиентаКодКлиентаСуммаРасходов В списке разносок ГодМесяц - обязательное поле. Это за какой период начислены расходы (поле СуммаРасходов. Оно тоже обязательное). ВидПродукции, ТипПродукции, Менеджер и др. - необязательные поля. Т.е. какие-то могут быть заполнены, какие-то нет. Например, если заполнен ТипКлиента и ВидПродукции (остальные пустые), то отбираем все отгрузки (все факты) в период ГодМесяц по всем клиентам, имеющим заданный ТипКлиента, и по всей продукции нужного ВидаПродукции. Эти факты копируются в отдельную таблицу примерно такого вида (похожа на т.фактов, плюс поле расходов): ДатаКлиентКодПродукцияКодКол-воВесСуммаСуммаРасходов Допустим, мы отобрали отгрузки за 2012.03.01-2012.03.31 на клиента Иванова, Петрова и Сидорова. И задали расходов на них на 50тыс.руб. Иванов отгрузился на 100тыс.руб Петров на 200тыс.руб а Сидоров на 300тыс.руб Тогда нашу сумму расходов мы распределяем пропорционально их отгрузкам. На Иванова повесим 1/6 часть (8333руб). На Петрова 2/6 (16667руб). И на Сидорова 3/6 (25тыс.руб). для зануд: я знаю, что 2/6 = 1/3, а 3/6 = 1/2 И вот таким образом считаем все 100 тыс. разносок. Почему-то мне кажется, что это не совсем верный подход и можно сделать как-то проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 20:56 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
как считаете понятно (все просто), а физически как это организовано? Хранимая процедура? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 21:07 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
iscrafmХранимая процедура? да ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 21:20 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987iscrafmХранимая процедура? да там в ней случайно перебором в курсоре не выполнятся распределение? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 22:21 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
Почему-то мне кажется, что это не совсем верный подход и можно сделать как-то проще. Мне кажется проще не получится. Если Вы торгуете песком с карьера то распределение затрат пропорционально отгрузкам правильный метод. Но если у Вас разновидность ассортимент превышает скажем больше 20 (скажем 20 брендов) то распределение уже не прямо пропорциональное а должно быть весовое. Но как определить вес бренда. Выход один, указание затрат(расходов) привязанных точно к покупателю. Тогда и распределять ни чего не надо. Если такой возможности нет то выводить эти затраты отдельной статьёй и не смешивать со всем остальным. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 22:33 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
iscrafmтам в ней случайно перебором в курсоре не выполнятся распределение? нет, не курсором. Там куча сложных запросов, которые вщм-то можно доработать и ускорить. Но проблема не в этом. Суть пересчета разносок - это перезаливание 90% фактов из рабочих т.фактов в одну большую таблицу. Потом там происходят распределения сумм. Вот мне кажется, что перезаливание данные из одних таблиц в одну другую - это как-то не очень правильно. Но что именно там неправильно и как сделать правильно, в голову не приходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 22:56 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987, Если у вас нет толкового постановщика - наймите консультанта. Подобные вопросы по фотографии не решаются, т.к. 100% есть масса тонкостей о которых вы или не знаете, или умалчиваете. В общем вам повезет если человек сможет хотя б за месяц грамотно составить ТЗ. Но лично я в этом очень сомневаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 23:10 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987Суть пересчета разносок - это перезаливание 90% фактов из рабочих т.фактов в одну большую таблицу. Потом там происходят распределения сумм. Вот мне кажется, что перезаливание данные из одних таблиц в одну другую - это как-то не очень правильно. Но что именно там неправильно и как сделать правильно, в голову не приходит. попробуйте разделить эту большую таблицу на секции. Правда MSSQL2000 устарел уже прилично, но такое делали. Поищите в инете по ключу "partitions MS SQL 2000", на этом форуме тоже была информация по этому поводу, как имитировать секции. Т.е. не ворошите всю таблицу при каждом обновлении фактов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2013, 23:49 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
iscrafmпопробуйте разделить эту большую таблицу на секции. не-не, я не о том. Вот, например, не правильней ли было бы в рабочие т.фактов добавить поле СуммаРасходов. И вместо Код: sql 1. 2. 3.
выполнять Код: sql 1. 2.
нормально ли копировать 90% фактов из кучи таблиц в другую таблицу, где потом их пересчитывать? Как вообще обычно такие задачи решаются? Я понимаю, что все индивидуально. Но, может, есть какие-то обобщения, что "чаще делают вот так"? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 10:18 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987нормально ли копировать 90% фактов из кучи таблиц в другую таблицу, где потом их пересчитывать? Как вообще обычно такие задачи решаются? Я понимаю, что все индивидуально. Но, может, есть какие-то обобщения, что "чаще делают вот так"? нормально. Это ваше "хранилище", таблицы фактов - "первичные документы". Документы "проводите" (выполняете из них выборку значимых данных и трансформируете в требуемый формат) и в хранилище обрабатываете. На основании данных хранилища строите все отчеты. Так "обычно такие задачи решаются", в целом. Т.е. смотрите что не так в структуре и организации процесса. Такие долгие расчеты по данным за месяц конечно указывают то, что в этом пробой. Говоря о секционировании данных я имел ввиду именно это... Может там индексируется при вставке и т.п. Что из себя представляют факты, их происхождение? Загружаются откуда-то тоже? p.s. вообще вопрос чисто из раздела MS SQL. Нужно просто сразу сказать какая СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 11:26 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987, все зависит от того, что именно вы дальше с данными делаете. Если не нужна детализация до документа, то надо сначала "сжать" (агрегировать) таблицу продаж, потом "сжать" таблицу расходов, а потом совместить их. Скорее всего результирующая таблица будет не 10 миллионов, а несколько десятков тысяч. И искать надо по ключевым словам "OLAP" и "ETL" - это не учет, а анализ. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 11:28 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
iscrafmТакие долгие расчеты по данным за месяц конечно указывают то, что в этом пробой. Говоря о секционировании данных я имел ввиду именно это... Может там индексируется при вставке и т.п. Что из себя представляют факты, их происхождение? Загружаются откуда-то тоже? p.s. вообще вопрос чисто из раздела MS SQL. Нужно просто сразу сказать какая СУБД. СУБД указал - MSSQL 2000 :) долгие расчеты не за месяц, а за несколько лет. Индексы строятся после вставки всех фактов. s_ustinovнуб987, все зависит от того, что именно вы дальше с данными делаете. Если не нужна детализация до документа, то надо сначала "сжать" (агрегировать) таблицу продаж, потом "сжать" таблицу расходов, а потом совместить их. Скорее всего результирующая таблица будет не 10 миллионов, а несколько десятков тысяч. детализация нужна именно до документа и даже больше - до единицы продукции в накладной. s_ustinovИ искать надо по ключевым словам "OLAP" и "ETL" - это не учет, а анализ. либо я вас не понял, либо еще что-то. Но ведь моя задача - это и не учет, и не анализ. Это расчеты. Но раз такие задачи примерно так и решаются, тогда ладно. Просто казалось не очень правильным лопатить тонны данных. Это примерно как перетащить вручную вагон кирпичей к "вон тому дереву", чтобы потом среди них найти десяток бракованных. А затем всю кучу тащить к другому дереву и там уже строить дом. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 12:10 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987s_ustinovнуб987, все зависит от того, что именно вы дальше с данными делаете. Если не нужна детализация до документа, то надо сначала "сжать" (агрегировать) таблицу продаж, потом "сжать" таблицу расходов, а потом совместить их. Скорее всего результирующая таблица будет не 10 миллионов, а несколько десятков тысяч. детализация нужна именно до документа и даже больше - до единицы продукции в накладной. если до строки продаж - то делаем еще одну таблицу "ID" "Sales Line ID" "Amount" - то есть привязывать сумму расходов к строке продаж. и в таблице будет столько же строк, как и в таблице продаж. если же надо сохранять информацию и о документе расходов, то тогда надо добавить поле "Document Expenses ID" - и в табличке будет в несколько раз больше строк - то есть сотни миллионов записей нуб987s_ustinovИ искать надо по ключевым словам "OLAP" и "ETL" - это не учет, а анализ. либо я вас не понял, либо еще что-то. Но ведь моя задача - это и не учет, и не анализ. Это расчеты. Но раз такие задачи примерно так и решаются, тогда ладно. Просто казалось не очень правильным лопатить тонны данных. Это примерно как перетащить вручную вагон кирпичей к "вон тому дереву", чтобы потом среди них найти десяток бракованных. А затем всю кучу тащить к другому дереву и там уже строить дом. такие расчеты не должны занимать столько времени. все же 10 миллионов - это не миллиарды. у вас проблемы с алгоритмами. подобные вопросы подробно рассматриваются при обсуждении хранилищ данных и BI olap и тп почитайте про ETL and OLAP - там как раз обсуждаются вещи, которые вы делаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 12:30 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
что такое факты? Это собранные, по сути, отчеты о продажах с "точек"? Много ли в них информации, которая не нужна для долгосрочного хранения? 10%, остающейся в этих таблицах, это она? Каким образом материализуется информация в таблицах фактов? и т.д. и т.п. Если вся база и есть это самое "хранилище", а первичная информация генерируется "где-то" и прямого доступа нет, то возможно перенос данных внутри и лишний. Т.е. вариантов на самом деле много, в зависимости от ответов на озвученные вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 12:37 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
s_ustinovесли же надо сохранять информацию и о документе расходов, то тогда надо добавить поле "Document Expenses ID" - и в табличке будет в несколько раз больше строк - то есть сотни миллионов записей так.... Т.е. не копировать кучу фактов из 10-ка т.фактов в одну большую, а сделать "справочник привязки": в каждой т.фактов есть поле id на каждую запись, в таблице разносок так же есть поле id. И вместо Код: sql 1. 2. 3.
будет Код: sql 1. 2. 3.
т.е. каждую разноску "разбрасываем" по фактам. Получается, на одном факте может "висеть" несколько разносок. Например, разноска "Расход 50тыр. Менеджер Петров" должна быть раскидана на отгрузки всех клиентов, у которых менеджер Петров. При этом разноска "Расход 100тыр. Продукция Гвозди" так же может распределиться на какие-то отгрузки менеджера Петрова, т.к. части его клиентов могли отгружаться гвозди. Таким образом на одних и тех же фактах будут висеть расходы по менеджеру Петрову и по продукции "Гвозди". И вот когда построили справочник привязки, можно довольно простым update'ом раскидать сумму расходов пропорционально отгрузкам по каждому факту: чем бОльшая сумма отгрузки на факте, тем бОльшая часть привязанных к нему расходов вешается на него. так? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 13:46 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987s_ustinovесли же надо сохранять информацию и о документе расходов, то тогда надо добавить поле "Document Expenses ID" - и в табличке будет в несколько раз больше строк - то есть сотни миллионов записей так.... Т.е. не копировать кучу фактов из 10-ка т.фактов в одну большую, а сделать "справочник привязки": в каждой т.фактов есть поле id на каждую запись, в таблице разносок так же есть поле id. И вместо Код: sql 1. 2. 3.
будет Код: sql 1. 2. 3.
т.е. каждую разноску "разбрасываем" по фактам. Получается, на одном факте может "висеть" несколько разносок. Например, разноска "Расход 50тыр. Менеджер Петров" должна быть раскидана на отгрузки всех клиентов, у которых менеджер Петров. При этом разноска "Расход 100тыр. Продукция Гвозди" так же может распределиться на какие-то отгрузки менеджера Петрова, т.к. части его клиентов могли отгружаться гвозди. Таким образом на одних и тех же фактах будут висеть расходы по менеджеру Петрову и по продукции "Гвозди". И вот когда построили справочник привязки, можно довольно простым update'ом раскидать сумму расходов пропорционально отгрузкам по каждому факту: чем бОльшая сумма отгрузки на факте, тем бОльшая часть привязанных к нему расходов вешается на него. так? буквально в прошлом месяце делал выгрузку цен и остатков для клиентов, которые желают получать это по почте. Цены зависят от нескольких условий. В итоге вместо генерации одной таблички на 100 миллионов строк посчитал, что быстрее создавать две таблички по 450 и 170 тысяч строк (одна для товаров, другая для клиентов и их всевозможных спецусловий), а результирующая табличка, откуда и идет выгрузка, в системе не хранится, а является представлением. разница в скорости между этими двумя вариантами - в десятки раз. так что однозначного ответа нет - надо сидеть, смотреть и считать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 14:40 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
Автору настоятельно рекомендую ознакомиться с SSAS. Писать аналитику на колене - жуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 15:07 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987, Проблема только в том, что очень долго считается? Я бы предложил ввести Базы распределения. Строго говоря, для распределения вам не нужны 10кк строк факта, а только их агрегаты по месяцам/клиентам/продуктам. Собственно реализация баз распределения в данном случае может быть таблица/вьюха, содержащая годмесяц/клиента/продукт/относительную долю. Сам я всегда делаю отдельную таблицу, т.к. разные затраты могут распределяться по разным принципам и в несколько заходов. Что касается самого распределения затрат. Результирующая таблица получается хотя и многомиллионная, но узкая, и если делать на интах - весьма лёгкая. Опять таки, обычно распределяется "небольшой" кусок данных. В идеале - месяц, но, по разным причинам, чаще всего, - год. То есть смысл в том, что бы распределять только актуальные данные, и не дай бог не перераспределять то, что и так уже распределено ранее. Ну и я не уверен насчёт SQL Server 2000. Я бы посоветовал что-нибудь поновее - возможности оптимизации шире и глубже будут. Опять таки, ваша БД единственная на сервере, соседи ей не мешают? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 15:10 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
МСУАвтору настоятельно рекомендую ознакомиться с SSAS. нуб987реализовано все на MSSQL 2000 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 15:16 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
ElenHimОпять таки, обычно распределяется "небольшой" кусок данных. В идеале - месяц, но, по разным причинам, чаще всего, - год. То есть смысл в том, что бы распределять только актуальные данные, и не дай бог не перераспределять то, что и так уже распределено ранее. в этом вся загвоздка. ТС как-то загадочно все время отвечает на такой вопрос, я так и не понял: все данные от "начала времен" пересчитываются что-ли при каждом месячном распределении. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 15:19 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
МСУАвтору настоятельно рекомендую ознакомиться с SSAS. Писать аналитику на колене - жуть. если вы про кубики, то они есть. Все эти расчеты ведутся для их заполнения. Далее этот кубик по управленческому учету смотрят наши аналитики. ElenHimнуб987, Проблема только в том, что очень долго считается? нет, проблема в том, что мне кажется , что подход не совсем верен. Ну и пересчитывается обычно все сразу (постоянно есть какие-то корректировки в данных по расходам), т.е. да, время тратится не мало на все это. Я вижу, чего можно поменять в коде для некоторого ускорения процесса. Но для начала стоит разобраться, не нужно ли переписать все вообще по-другому. ElenHimОпять таки, ваша БД единственная на сервере, соседи ей не мешают? база не единственная, но соседи не мешают ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 15:20 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987мне кажется, что подход не совсем верен В таком случае трудно что-либо посоветовать. Если система свою задачу решает и решает правильно - то какой смысл её переосмысливать? Вот если появилась необходимость её каим-то образом модифицировать, а текущая модель этого не приемлет - тогда да. нуб987постоянно есть какие-то корректировки в данных по расходам Но не с начала же времён? Управленческий учёт всё-таки не с потолка берётся, а так или иначе коррелирует с бухучётом. А в бухучёте с отчётными периодами должно быть строго. На крайний случай - что-то в прошлом периоде(году) могут изменить, но позапрошлый и далее - все уже и помнить забыли. Получается, на данный момент, можно говорить только об ускорении расчётов, но, если каждый раз всё пересчитывать заново, - существенного прироста не добиться ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 15:57 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
ElenHimЕсли система свою задачу решает и решает правильно - то какой смысл её переосмысливать? например, на производстве нет компьютеров, все пишут на листочках и считают на счетах. Все вроде бы работает и приносит прибыль, но как-то неправильно. Если кругом расставить компьютеры, заменить 1000 человек на 10-рых, производительность станет выше. Подключить интернет и найти больше клиентов - прибыль станет больше. Как-то так... ElenHimНо не с начала же времён? Управленческий учёт всё-таки не с потолка берётся, а так или иначе коррелирует с бухучётом. нет, пересчитывается год. На это уходит иногда до суток ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:10 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987ElenHimЕсли система свою задачу решает и решает правильно - то какой смысл её переосмысливать? например, на производстве нет компьютеров, все пишут на листочках и считают на счетах. Все вроде бы работает и приносит прибыль, но как-то неправильно. Если кругом расставить компьютеры, заменить 1000 человек на 10-рых, производительность станет выше. Подключить интернет и найти больше клиентов - прибыль станет больше. Как-то так... А если не абсурдный "например", а что-то из реальной жизни? Ведь здесь речь идет не о замене клерков на компьютере, а об изменении алгоритма работы системы, которая уже функционирует. Будет ли игра стоить свеч? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:19 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987, не нужно вырывать фразы из контекста, изначально было так: ElenHimЕсли система свою задачу решает и решает правильно - то какой смысл её переосмысливать? Вот если появилась необходимость её каим-то образом модифицировать, а текущая модель этого не приемлет - тогда да. И сюда укладываются все примеры, которые вы привели. Другое дело, что для своего случая, вы никакой подобной цели не ставите, а руководствуетесь вашим "кажется" ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:25 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987нет, пересчитывается год. На это уходит иногда до суток первое - поменять субд в новых версиях много вкусностей второе - проанализировать - какие данные нужны аналитикам. очень вероятно, что им нужны почти всегда агрегированные данные (по группам товаров и группам клиентов), а детальные - по конкретному документу (товару, клиенту) смотрятся очень редко. в таком случае заполнять табличку агрегированными данными, а детальные не трогать и считать селектами только под конкретный запрос. вообще эти все вопросы относятся к области BI / DW / OLAP - почитайте соответствующие форумы на этом сайте ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 16:25 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
s_ustinovнуб987нет, пересчитывается год. На это уходит иногда до суток первое - поменять субд в новых версиях много вкусностей здесь все же решаются технологические и общаются разработчики вопросы. Впаривание - в других. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 17:36 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
s_ustinovэти все вопросы относятся к области BI / DW / OLAP - почитайте соответствующие форумы на этом сайте с самого начала ясно, что никакого отношения к перечисленному тема не имеет. К тому же в озвученной ветке обсуждаются конкретные продукты, а не BI/DWH/OLAP как таковые. У ТС вопрос в том, что хранить и как выполнять расчеты, а не на чем ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 17:39 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987Подскажите пожалуйста, в какую сторону копать и что почитать ? iscrafm К тому же в озвученной ветке обсуждаются конкретные продукты, а не BI/DWH/OLAP как таковые. У ТС вопрос в том, что хранить и как выполнять расчеты, а не на чем Да ну? а у ТС немного другое мнение, какие именно вопросы он хотел бы обсудить... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 17:53 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
s_ustinovнуб987Подскажите пожалуйста, в какую сторону копать и что почитать ? iscrafm К тому же в озвученной ветке обсуждаются конкретные продукты, а не BI/DWH/OLAP как таковые. У ТС вопрос в том, что хранить и как выполнять расчеты, а не на чем Да ну? а у ТС немного другое мнение, какие именно вопросы он хотел бы обсудить... прочитайте топик с начала. Я понимаю что вы консультант, а не разработчик, но вопросы все подняты на поверхность, нет ничего не понятного, имхо. Более менее близкий к разработке приложений человек должен понять о чем речь идет. А для обсуждения конкретных продуктов действительно есть соответствующие ветки. Если ТС скажет, что хочет воспользоваться чем-то готовым, то можно направить его в них. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 18:19 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
iscrafmпрочитайте топик с начала. Я понимаю что вы консультант, а не разработчик, но вопросы все подняты на поверхность, нет ничего не понятного, имхо. Более менее близкий к разработке приложений человек должен понять о чем речь идет. А для обсуждения конкретных продуктов действительно есть соответствующие ветки. Если ТС скажет, что хочет воспользоваться чем-то готовым, то можно направить его в них. я читал. человеку интересно почитать про подходы, которые применяются для решения определенных задач (с какими он столкнулся) вообще-то термин Data Warehouse относится к классу технологий и как раз в том числе включает в себя описание используемых подходов к решению определенного класса задач. кстати, многие хранилища создаются на самых обычных субд, но с немного другой структурой базы, чем для OLTP задач ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 19:09 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987, рекомендую посмотреть http://fd.ru/articles/2593 http://www.classs.ru/stati/uchet/praktika_postanovki.html http://devbiz.narod.ru/home/kozloff/TACIS/ManagerialAccounting.pdf http://www.deloitte.com/assets/Dcom-Russia/Local Assets/Documents/CFO_services/Upravlencheskij_uchet_otchetnost_ru.pdf http://devbusiness.ru/development/finance_man_acc.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 19:11 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
s_ustinoviscrafmпрочитайте топик с начала. Я понимаю что вы консультант, а не разработчик, но вопросы все подняты на поверхность, нет ничего не понятного, имхо. Более менее близкий к разработке приложений человек должен понять о чем речь идет. А для обсуждения конкретных продуктов действительно есть соответствующие ветки. Если ТС скажет, что хочет воспользоваться чем-то готовым, то можно направить его в них. я читал. человеку интересно почитать про подходы, которые применяются для решения определенных задач (с какими он столкнулся) вообще-то термин Data Warehouse относится к классу технологий и как раз в том числе включает в себя описание используемых подходов к решению определенного класса задач. кстати, многие хранилища создаются на самых обычных субд, но с немного другой структурой базы, чем для OLTP задач вы мне так рассказываете, как будто студенту на лекциях. Можно упустить всю беллетристику :) У ТС конкретная проблема, даже не проблема а вопрос: правильно ли он поступает перегоняя данные из операционных таблиц фактов в общую таблицу хранилища и выполняя в ней расчеты. Ответ, поверхностный - да правильно, это общепринятая и опробованная практика. Почему поверхностный? Потому что детали не известны, по какой-то причине он все постоянно пересчитывает и этот процесс занимает иногда сутки. Вот в общем-то и вся суть темы. Конечно можно сподвигнуть ТС на то, чтобы он повернул в сторону новых версий и т.п., но это будет хорошим советом только в безвыходной ситуации. Для начала можно попытаться помочь разобраться в существующей проблеме. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 19:50 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
iscrafmМСУАвтору настоятельно рекомендую ознакомиться с SSAS. нуб987реализовано все на MSSQL 2000 http://technet.microsoft.com/en-us/library/cc917607.aspx P.S. А вообще не вижу проблем обновиться до адекватной версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 22:07 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987МСУАвтору настоятельно рекомендую ознакомиться с SSAS. Писать аналитику на колене - жуть. если вы про кубики, то они есть. Все эти расчеты ведутся для их заполнения. Далее этот кубик по управленческому учету смотрят наши аналитики. Кубы есть на чем, на SSAS? Так тормозит процессинг куба или ETL? Если кубы самописные и их процессинг тормозит - сразу это на свалку. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2013, 22:10 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
нуб987нет, пересчитывается год. На это уходит иногда до суток год-то зачем??? Используй инкрементальный процессинг!! Т.е. алгоритм такой: 1. всегда храни что у тебя изменилось в твой таблице разносок с момента последнего пересчета. (доп. поле в этой же таблице с датой последнего апдейта/инсерта можно) 2. при необходимости пересчета из таблицы разносок формируй список месяцов+товаров+клиентов которые надо пересчитать. 3. пересчитаывй ТОЛЬКО их. --------------------------------- в принципе таким макаром можно хоть ежедневно считать ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2013, 23:05 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
у нас примерно схожая система. регистрация факта в САП. оттуда на прямую из табличек идут фактуры по продажам. справочники товаров и клиентов kna1 lfa1, затраты по бух счетам и МВЗ MSEG и тд. Так вот у нас для управленческого учета используется схлопывание данных до ключа. клиент, период, артикул. канал продажи, регион а поля уже агрегированные затраты предварительно распределенные по ключам как указывал ТС, например затраты региональной команды на конкретный регион, затраты рекламы определенного бренда только на продукцию этого бренда. Делается во много промежуточных этапов (временные и не очень таблицы), агрегирую до ключа и затем результат переливается в таблицу Т.е. нужно понять какая детализация информации нужна. На концах ключа у нас агрегированыне факты разбитые по основным видам, например ключ- транспорт, склады, маркетинг, амортизация оборудования, продажники, листинги,стадии производства. Есть контрольные точки учета агрегирующие группы затрат, DB1-4 на которые ставятся цели разным отделам. У нас все довольно серьезно,- с начислением акруалов и утверждением результатов месяца. потмоу предыдущие периоды мы почти не пересчитываем. Для конкретных затрат на клиента или бренд используются внутренние заказы. Есть еще один куб в котором уже информация по этим самым затратам. ну например видно что по бух счету такому то в разрезе МВЗ зарплатные затраты. К сожалению информации о количественном распределении со счета на конкретного клиента канала бренда месяц у нас не сохраняется из за вот таких вот проблем с производительностью. Затраты у нас начисляются на продажи. с этого все начинается и возникают коллизии когда клиент только открывается и ничего ен продал а затраты уже имеет. мы их распределяем на остальных клиентов региона. Много нюансов. Основной посыл как отметил авторЯ бы предложил ввести Базы распределения. Строго говоря, для распределения вам не нужны 10кк строк факта, а только их агрегаты по месяцам/клиентам/продуктам. Собственно реализация баз распределения в данном случае может быть таблица/вьюха, содержащая годмесяц/клиента/продукт/относительную долю. Сам я всегда делаю отдельную таблицу, т.к. разные затраты могут распределяться по разным принципам и в несколько заходов. агрегация по ключам фактов на которые распределения будут делаться. + у нас очень широкие табличы около 30 полей на каждый ключ( в этом не уверен) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2013, 13:44 |
|
реализация управленческого учета
|
|||
---|---|---|---|
#18+
В общем, переписал всю систему, работает уже больше месяца, вроде все хорошо и все довольны :) Теперь вместо нескольких суток самый-самый большой упр.учет считается примерно час, плюс процессинг куба еще где-то полчаса-час. К тому же система стала легко масштабируемой: любые дополнения и изменения прозрачны и вносятся легко и быстро. Попробую описать понятней, что было и что сейчас. Было: - десяток т.фактов, объединенных union all - на каждую разноску был написан большой-большой запрос вида (здесь и скрывалось зло): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
таких запросов было порядка 20-30. Плюс, если не было нужных отгрузок (например, клиенту Петрову не отгружалась продукция группы "А" в феврале, а затраты были), мы смотрели отгрузки в прошлом ( до февраля) и вешали затраты на те прошлые отгрузки. Т.е. те же самые 20-30 запросов переписывались снова, но в конце вместо Код: sql 1.
было Код: sql 1.
а если отгрузок не было и в прошлом, то смотрели "в будущее" до текущего момента. Т.е. одни и те же запросы повторялись по 3 раза с небольшими изменениями. И чтобы что-то добавить/скорректировать, приходилось долго все искать и перепроверять. А сейчас в переписанном варианте подход совсем другой. Сначала идет много подготовительных шагов с простыми запросами, потом собственно сам расчет (тоже оч.простой запрос). Все разноски мы разбиваем на группы по клиентам и продукции. Для этого ввели справочник таких групп для клиентов и справочник для продукции примерно такого вида: GroupIdClientId GroupIdProdId Для разноски вида "Расход 50тыр. Менеджер Петров, продукция группы А" мы заполняем группы по клиентам: выбираем всех клиентов, у которых менеджер Петров - это будет группа 1. У клиентов с менеджером Иванов будет группа 2 и т.д., пока не переберем все возможные группы в разносках (по менеджерам, по регионам, по сетям...). То же по продукции: заполняем справочник групп на каждую группу продукции в разносках, перечисляя коды этой продукции. Ну и в запись разноски добавляем два поля с кодами этих групп. Вставка фактов занимает, как оказалось, совсем немного времени, когда запрос простой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
т.е. этот запрос выше так же повторяется 3 раза, но это не 60 тяжеленных запросов (как раньше), а всего 3. Точнее даже 1, но динамический. Плюс я все-таки использую курсоры, чтобы не вставлять весь миллиард записей сразу, а вставляю их по месяцам. В общем, дополнительные подготовительные шаги рулят :) Лучше потратить "лишнее" время на подготовку данных и раскладывание по полочкам, чтобы потом использовать простые запросы с минимумом условий. Чем ковыряться в сырых данных с помощью тяжеленных запросов с кучей условий. ПС. И этот час занимает полный пересчет самого тяжелого упр.учета. Если пересчитывать только какие-то изменения, то время будет уходить еще меньше. Но для перестраховки пока пересчитываем все заново. Новая система с достаточным кол-вом подготовительных шагов позволяет легко внести изменения в алгоритм. Так что если возникнет необходимость, ее можно будет легко дополнить и сделать пересчет только того, что изменилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2013, 10:23 |
|
|
start [/forum/topic.php?all=1&fid=33&tid=1547653]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
others: | 322ms |
total: | 489ms |
0 / 0 |