Агрегация данных

Все вопросы/проблемы по установке и использовании.
КонстантинН
Сообщения: 118
Зарегистрирован: 06 авг 2019, 17:19
Имя: Константин
Откуда: РФ

Агрегация данных

Сообщение КонстантинН »

Добрый день!

Друзья, подскажите, может кто-то делал подобное:
Нужно агрегировать данные по времени, вычисляя и сохраняя минимальное значение, максимальное значение, среднее значение, сумму значений, количество записей отдельной записью в этой или другой сущности. Агрегация идет за определенный период.
Пример: есть сущность "продажи менеджеров", в которой сохраняем суммы договоров по каждому менеджеру. Эти значения нужно хранить 1 месяц, затем посчитать сумму договоров за каждый день и сохранить 30-31 запись "Продажи за день" (можно каждый день считать и сохранять по 1 записи за 1 день). Такие данные храним 3 месяца (квартал) и агрегируем в "Продажи за месяц". Естественно такой подсчет ведется для каждого менеджера отдельно. Все "устаревшие" данные нужно удалять.

Очень похоже на функции + повторяющиеся задачи. Но как это настроить не соображу никак. И как записи удалять не знаю.

У кого какие мысли?
Аватара пользователя
Oleg
Сообщения: 471
Зарегистрирован: 26 окт 2018, 08:23
Имя: Олег Родионов
Откуда: Россия,Санкт-Петербург

Re: Агрегация данных

Сообщение Oleg »

Мы писали отдельный обработчик, но нам нужно было считать время каждый день, т.к. пользователей просто так нельзя использовать
учет времени.png
Установка и настройка IP ATC Asterisk
remchik
Сообщения: 267
Зарегистрирован: 19 сен 2019, 11:32
Имя: Remchik
Откуда: Москва

Re: Агрегация данных

Сообщение remchik »

Тут писали про хранимки, я думаю надо туда копать
***
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
remchik
Сообщения: 267
Зарегистрирован: 19 сен 2019, 11:32
Имя: Remchik
Откуда: Москва

Re: Агрегация данных

Сообщение remchik »

Все оказалось проще :))
Создаете сущность.
Создаете поля :)
-
Далее делаете вьюху, с тем же именем, предварительно переименовав.
и выводите нужные поля, подставляя имена полей.
Используя PIVOT
***
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
КонстантинН
Сообщения: 118
Зарегистрирован: 06 авг 2019, 17:19
Имя: Константин
Откуда: РФ

Re: Агрегация данных

Сообщение КонстантинН »

remchik писал(а): 24 сен 2019, 11:07 Далее делаете вьюху, с тем же именем, предварительно переименовав.
и выводите нужные поля, подставляя имена полей.
Используя PIVOT
С этого момента поподробнее, пожалйста... :shock:

Кто такой Вьюха?
Кто такой PIVOT?
Как это работает?
remchik
Сообщения: 267
Зарегистрирован: 19 сен 2019, 11:32
Имя: Remchik
Откуда: Москва

Re: Агрегация данных

Сообщение remchik »

Вьюха - https://habr.com/ru/post/47031/
PIVOT - оператор (Не факт что Вам это нужно)

Предположим есть сущность - Заказы (В приложении ID сущности 25)
Значит в БД это выглядит как app_entity_25
Далее, помимо стандартных полей (id,создал итд), есть поля Например ФИО, Номер заказа, Сумма
ID у них соответственно 180,181,182
А в БД это столбцы field_181,field_182,field_183

Теперь добавляем нашу сводную сущность (думаю что права только на просмотр надо)
Сводная создастся как app_entity_26 в БД
и 2 поля фио, и сумма
field_184,field_185

Идем в БД, и таблицу app_entity_26 переименовываем
Создаем View и называем app_entity_26
В Ней пишем
Select
field_181 as field_184
,SUM(field_183) as field_185
From app_entity_25
Group BY field_181
Получаете агрегированную функцию, можете добавить дату итд, вычисления.
Но знания по SQL нужны.
Я вот php не знаю, мне сложно, но sql знаю хорошо, поэтому и путь такой.
***
т.е. Сущность у Вас всегда будет динамическая, без всяких "пересохранений" и "переливок"
PIVOT Вам нужен, что бы развернуть дату в столбцы (День месяца)
Но в сущности Вам надо создать все столбцы, что бы они gопали в app_fields, ну или туда внести напрямую :)
Последний раз редактировалось remchik 24 сен 2019, 13:14, всего редактировалось 1 раз.
***
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
КонстантинН
Сообщения: 118
Зарегистрирован: 06 авг 2019, 17:19
Имя: Константин
Откуда: РФ

Re: Агрегация данных

Сообщение КонстантинН »

спасибо будем тестировать
remchik
Сообщения: 267
Зарегистрирован: 19 сен 2019, 11:32
Имя: Remchik
Откуда: Москва

Re: Агрегация данных

Сообщение remchik »

PIVOT - https://info-comp.ru/obucheniest/435-pi ... t-sql.html
там T-SQL, но очень все похоже
и пример как раз Ваш :)
***
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
Аватара пользователя
Евгений
Сообщения: 461
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

Re: Агрегация данных

Сообщение Евгений »

Я делал такое. Работает вообще без проблем, можно выбрать совершенно любую информацию, даже не обязательно из самой базы Руководителя. Естественно, будет работать только на чтение.

Сначала создал новую сущность app_entity_123, со всеми полями которые потребуются для вывода. Потом залез в БД, переименовал таблицу этой сущности из app_entity_123 в app_entity_123_bk, и создал вьюшку с именем app_entity_123. Все поля в новой вьюшке должны точно соответствовать полям в исходной таблице сущности.

Единственное неудобство - если понадобится изменить список выводимых полей, переименовать поле, добавить новое и т.д., приходится сначала вернуть все таблицы в исходное состояние, а после редактирования опять повторять все шаги с вьюшкой.

Хотелось бы иметь такой инструмент в штатном режиме Руководителя.
remchik
Сообщения: 267
Зарегистрирован: 19 сен 2019, 11:32
Имя: Remchik
Откуда: Москва

Re: Агрегация данных

Сообщение remchik »

Вчера попробывал закостылить плагин, точнее начал разбираться с php
Все оказывается не так сложно, как кажется...
может лучше и плагин написать
***
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
Ответить