|
реализация управленческого учета
|
|||
---|---|---|---|
#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?fid=33&gotonew=1&tid=1547653]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
7ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 166ms |
0 / 0 |