Логистика

Кейс по логистике и сборник SQL-рецептов

circle-exclamation

Логистика — это сложная экосистема, включающая координацию транспорта, складских операций, управления запасами и выполнения доставок. Интеграция телематики в логистические процессы позволяет компаниям собирать данные в реальном времени о транспортных средствах, водителях, маршрутах и состоянии груза, что значительно улучшает принятие решений и операционную эффективность.

Navixy IoT Query, благодаря своим мощным возможностям приема данных и анализа временных рядов, поддерживает цифровую трансформацию логистических операций, обеспечивая глубокую видимость на каждом этапе жизненного цикла. Ее надежные возможности приема телематических данных предоставляют всестороннюю видимость этих операций. Данные GPS в реальном времени, диагностика данных датчиков, геозонирование и аналитика сенсоров позволяют операторам логистики цифровизировать рабочие процессы, автоматизировать контроль и принимать обоснованные решения.

Фаза жизненного цикла
Цели
Покрываемые сценарии / Рецепты

Управление маршрутами

Оптимизировать маршрутизацию транспортных средств, обеспечить эффективную диспетчеризацию и сократить задержки

Количество поездок в день Счетчик пробега на транспортное средство в день (за последние 7 дней)

Мониторинг груза

Обеспечить надлежащие условия перевозки для чувствительных грузов

События нарушения температуры (и влажности) за последние 7 дней

Эксплуатация транспортных средств

Отслеживать использование парка, обеспечивать обслуживание и снижать время простоя

Итог по моточасам по транспортному средству / водителю / дню (за последние 7 дней) Анализ простоев транспортных средств Отслеживание активов без перемещения

Безопасность и охрана маршрута

Обнаруживать злоупотребления, несанкционированную деятельность и нарушения безопасности

Обнаружение отклонений от маршрута — несанкционированные остановки (за последние 24 часа) Обнаружение использования в нерабочее время

Управление соответствием

Контролировать поведение водителей, обеспечивать соблюдение политик и операционное соответствие

Итог по моточасам по транспортному средству / водителю / дню (за последние 7 дней) Обнаружение использования в нерабочее время

Анализ после доставки

Оценивать операционную эффективность и историческую производительность

Отчет журнала событий транспортного средства Счетчик пробега на транспортное средство в день (за последние 7 дней) Количество поездок в день Отслеживание активов без перемещения

Отслеживание активов без перемещения

Этот сценарий выявляет активы (например, транспортные средства или прицепы), которые не изменили свои GPS сравнить минимальные и максимальные координаты в течение периода. Если оба значения находятся в очень узком диапазоне (порог допуска, например ±0.01 градуса), мы помечаем актив как неподвижный. Запрос также объединяется с таблицами objects и vehicles в raw_business_data, чтобы получить информативные метки активов для вывода результата.

Анализ простоев транспортных средств

Этот сценарий фокусируется на анализе того, как долго транспортные средства не работают из‑за обслуживания, поломок или бездействия. Метрики простоев имеют решающее значение для логистических операций, чтобы контролировать состояние парка, сокращать время простоя и повышать общую эффективность использования и планирования.

Основой анализа простоев служит использование таблицы vehicle_service_tasks из raw_business_data, которая регистрирует как плановые, так и неплановые события обслуживания. Каждая задача содержит start_date и end_date, представляющие период простоя. Фильтруя по завершенным задачам обслуживания, мы можем вычислить точную продолжительность, в течение которой каждое транспортное средство было выведено из эксплуатации.

Запрос рассчитывает общий простой по каждому транспортному средству, суммируя продолжительности всех его задач обслуживания (в часах). Он также позволяет разделять плановое и неплановое обслуживание с помощью флага is_unplanned. Чтобы сделать результаты более практичными, он объединяется с таблицей vehicles для включения меток транспортных средств, номеров регистрации и информации о модели.

Обнаружение отклонений от маршрута

Этот сценарий выявляет случаи, когда транспортные средства отклоняются от назначенных или ожидаемых маршрутов — особенно от геозонированных зон или коридоров доставки. Отслеживание таких отклонений помогает обеспечить соблюдение маршрутов, снизить задержки, обнаружить рискованное поведение водителя и поддерживать уровень обслуживания доставок (SLA).

Эта логика сравнивает фактические GPS‑позиции транспортного средства из tracking_data_core (в схеме raw_telematics_data) с предопределенными географическими зонами из таблицы zones в raw_business_data. Эти зоны представляют назначенные маршруты или сегменты маршрутов. Используя геометрические сравнения через ST_DWithin, мы определяем, находится ли точка внутри или вне буферной зоны маршрута.

Запрос объединяет каждую GPS‑позицию с каждой известной зоной маршрута с помощью пространственного CROSS JOIN, затем применяет ST_DWithin() для проверки, находилось ли транспортное средство внутри разрешенного коридора. Мы изолируем строки, где транспортное средство было вне всех геозонированных маршрутов и помечаем их как отклонения. В финальном выводе перечислены эти отклонения, включая устройство, отметку времени, метку транспортного средства и расстояние точки до центра ближайшей зоны.

Итог по моточасам по транспортному средству / водителю / дню (за последние 7 дней)

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

Таблица states в raw_telematics_data фиксирует индикаторы состояния двигателя во временных рядах, как правило, с state_name типа 'ignition' и значением 1 (включено) или 0 (выключено). Чтобы вычислить моточасы, мы находим все отметки времени переходов для каждого устройства и рассчитываем продолжительности, когда двигатель был включен (1).

Чтобы связать активность двигателя как с транспортными средствами, так и водителями, мы используем таблицы objects, vehicles и driver_history из raw_business_data. Мы ассоциируем каждую запись состояния с текущим водителем на этом объекте (через историю назначений водителей) и с соответствующим транспортным средством. Затем мы группируем данные по дню, транспортному средству и водителю, суммируя общее активное время работы двигателя (в часах).

События нарушения температуры (и влажности) за последние 7 дней

Этот сценарий выявляет показания датчиков — такие как температура или влажность — которые превышают критические пороги во время транспортировки. Мониторинг таких нарушений жизненно важен для отраслей, перевозящих скоропортящиеся товары (например, продукты питания, фармацевтику), чтобы обеспечить соблюдение требований холодовой цепи и предотвратить порчу.

Этот запрос извлекает данные с входов датчиков из таблицы inputs в схеме raw_telematics_data. Каждая строка представляет собой показание датчика (например, температура, влажность), зафиксированное в конкретный момент времени устройством. Мы фильтруем эти записи, включая только те, которые поступили за последние 7 дней.

Основная логика фильтрации основана на шаблонах имен датчиков и сравнении их числовых значений с порогами (например, >25°C для температуры, >80% для влажности). Поскольку value хранится как текст, мы приводим его к числовому типу перед применением условий порога. Чтобы обогатить результаты, мы объединяемся с таблицей objects для получения меток транспортных средств или активов, что повышает понятность для менеджеров парка.

Неавторизованные остановки (за последние 24 часа)

Этот сценарий выявляет неавторизованные или незапланированные остановки совершенные транспортными средствами за последние 24 часа. Он помогает обнаруживать возможные нарушения маршрутов доставки, несанкционированные перерывы или время простоя, которое может повлиять на расход топлива и выполнение SLA.

Запрос анализирует точки местоположения с низкой или нулевой скоростью используя Запрос использует таблицу tracking_data_core из raw_telematics_data для извлечения данных временных рядов о местоположении и скорости. Остановка фиксируется, когда скорость падает ниже 3 км/ч в течение более 2 минут. С помощью функций LAG и LEAD запрос сегментирует эти периоды низкой скорости, чтобы определить время начала и окончания остановки.

Чтобы обнаружить неавторизованные остановки, он исключает местоположения, которые попадают в известные геозонированные зоны (таблица zones) с использованием ST_DWithin PostGIS. Только остановки вне буфера какой‑либо зоны отображаются в отчете. Результат включает ID транспортного средства, метку объекта, регистрацию, отметки времени, продолжительность и координаты каждой остановки.

Обнаружение использования в нерабочее время

Этот сценарий выявляет случаи, когда транспортные средства эксплуатируются за пределами нормальных рабочих часов — определенных здесь как с понедельника по пятницу, 09:00–18:00. Такие обнаружения важны для выявления несанкционированного использования, выявления потенциального злоупотребления транспортным средством, и повышения безопасности активов.

Логика построена на таблице tracking_data_core из raw_telematics_data, которая регистрирует временные отметки GPS‑событий для каждого устройства. Мы извлекаем локальные день недели и час использования из каждой записи device_time и фильтруем записи вне определенного рабочего окна (т.е. до 9:00, после 18:00 или в любое время в выходные).

Для ясности мы обогащаем GPS‑данные метаданными объектов и транспортных средств из raw_business_data (например, метка транспортного средства, регистрация, ID объекта). Для более содержательных сводок мы опционально агрегируем использование, подсчитывая сколько событий в нерабочее время произошло для каждого транспортного средства и когда они произошли. Это помогает выявлять закономерности или повторных нарушителей.

Подсчет поездок в день

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

Чтобы определить поездку, мы используем изменение состояния движения транспортного средства — т.е. переход от остановки к движению и обратно к остановке. Используя значения скорости из таблицы tracking_data_core, запрос сегментирует данные на основе этих переходов. Поездка идентифицируется как непрерывный период движения где скорость остается выше порога (например, >5 км/ч).

Каждая поездка включает:

  • A метка времени начала и местоположение (первая точка в движении)

  • An метка времени окончания и местоположение (последняя точка в движении перед остановкой)

  • The Расстояние по формуле Хаверсина между начальным и конечным местоположениями

Мы вычисляем количество поездок и общую дистанцию в день для каждого транспортного средства, при желании дополняя данными меток транспортных средств из таблицы vehicles.

Подсчёт пробега по каждому транспортному средству в день (последние 7 дней)

В этом примере рассчитывается ежедневный пробег (в километрах) для каждого транспортного средства за последние 7 дней. Это является основой для отслеживания использования транспортных средств, мониторинга топливной эффективности, планирования обслуживания, а также выявления недоиспользования или переиспользования.

Мы извлекаем все GPS-записи из tracking_data_core за последние 7 дней. Каждая GPS-точка содержит метку времени, широту и долготу. Для каждого транспортного средства и каждого дня мы:

  1. Сортируем GPS-точки хронологически по устройству.

  2. Вычисляем расстояние между последовательными точками с использованием формулы Хаверсина.

  3. Суммируем расстояния по дням для каждого устройства чтобы получить общий пробег.

Этот подход обеспечивает высокую точность без опоры на внешние датчики одометра. При необходимости запрос объединяет данные с объектами и vehicles для обогащения результатов метаданными активов.

Отчёт журнала событий транспортного средства

В этом примере предоставляется исчерпывающий отчёт обо всех событиях, связанных с транспортными средствами (например, зажигание, открытие двери, резкое торможение и т.д.) по всему парку. В отчёт включены тип события, метка времени, и контекст транспортного средства, что позволяет командам эксплуатации проводить аудит поведения, отслеживать аномальную активность и формировать оповещения и аналитику.

Основным источником является таблица states из схемы raw_telematics_data. Каждая строка содержит: device_id (источник события), device_time (метка времени), state_name (метка события) и value (состояние или измерение).

Для создания удобного отчёта:

  1. Мы извлекаем все записи за последние 7 дней.

  2. Группируем их по тип события, транспортному средству, и дате чтобы предоставить подсчёт того, как часто происходило каждое событие и когда оно происходило.

  3. Обогащаем результаты метаданными транспортного средства (vehicle_label, registration_number, object_label) через objects и vehicles.

Это даёт ежедневную хронологию событий по всему парку — необходимую для диагностики, анализа поведения и проактивного обслуживания.

Последнее обновление

Это было полезно?