Мы регистрируем данные об использовании инструментов на фабрике путем очистки их файлов журнала.Все они имеют свои собственные форматы, но, вообще говоря, все инструменты генерируют данные, которые можно легко преобразовать в это:
MachineID StartTime DurationSeconds Operaton
1 2018-10-22 01:30:00 60 Drill
1 2018-10-22 01:31:00 60 Drill
1 2018-10-22 01:59:59 7202 Drill
Наличие нескольких записей в пределах часовой границы - это нормально.
Данные в этомФорма делает аналитику громоздкой, потому что нам нужно представлять данные в группах по одному часу (например, в группе по StartTime, округленной до часа, чтобы сообщить о почасовом использовании).Это невозможно с неограниченной продолжительностью.Наш текущий код (в .net) отображает вышеупомянутую запись файла журнала в базу данных следующим образом:
MachineID StartTime DurationSeconds Operaton
1 2018-10-22 01:30:00 60 Drill
1 2018-10-22 01:31:00 60 Drill
1 2018-10-22 01:59:59 1 Drill
1 2018-10-22 02:00:00 3600 Drill
1 2018-10-22 03:00:00 3600 Drill
1 2018-10-22 04:00:00 1 Drill
Это было немного сложно сделать правильно в нашей текущей системе, и я бы предпочел не указывать это дляпродавцы и гадость со всеми, понимающими это правильно.Если бы они просто записали свои «сырые» данные начала / продолжительности, это было бы проще для всех.
Как я могу использовать триггер для преобразования общих данных журнала (начало / длительность) в желаемые фрагментированные данные?Похоже, что триггер может перебирать DurationSeconds и данные чанка в триггере.
В качестве альтернативы, я думаю, они могли бы записывать необработанные данные в таблицу, а я мог читать данные и записывать фрагментированные данные в другую таблицу.
Триггер выглядит как более чистое решение.