Skip to main content
Data Engineering

Event-Time vs Processing-Time in Fabric Real-Time Intelligence: Preventing Wrong Logistics KPIs

A GPS ping from a truck in a tunnel arrives ten minutes after it happened. Bucket it by when it arrived and your on-time KPI is wrong; bucket it by when it happened and it is right. That one choice decides whether your logistics metrics can be trusted.

Amit Kumar Singh - Technology Consulting Partner at MyData Insights

Technology Consulting Partner · MyData Insights

14+ years in industrial data · Former Accenture & EY · India, GCC, SEA

15 October 2026 · 10 min read

The bottom line

In streaming logistics data, every event carries two timestamps: when it actually happened (event time) and when it reached the platform (processing time). Telematics, scanner and sensor events routinely arrive late and out of order — a truck in a dead zone, a device that buffers, a network blip — so the two can differ by minutes. Compute a time-based KPI (events per hour, on-time arrivals, dwell time in a window) by processing time and late events land in the wrong bucket, making the metric wrong exactly when it matters. The fix is to window on event time, not arrival time, and to handle lateness explicitly: define how long you will wait for late events, and decide whether a very-late event updates the already-reported window or is dropped. In Fabric Real-Time Intelligence this is a deliberate design choice in how you window and aggregate the Eventstream — get it wrong and the dashboard is confidently incorrect; get it right and late data corrects itself into the period it belongs to.

Every Event Has Two Timestamps

A logistics event — a GPS ping, a gate scan, a temperature reading — happens at one moment and reaches your platform at another. Event time is when it actually occurred, usually stamped by the device. Processing time is when the streaming platform received it. In a clean world those are nearly the same; in real logistics they are not.

Trucks drive through tunnels and dead zones and buffer their pings until signal returns. Handheld scanners sync in batches. Networks drop and recover. The result is a stream where events arrive late and out of order — an event that happened at 10:02 might land at 10:11, after an event that happened at 10:05. Both timestamps are correct; they just measure different things.

Which timestamp you build your KPI on is not a detail. It is the decision that determines whether the metric reflects what happened or merely what arrived, and those diverge precisely under the conditions — poor signal, congestion — that logistics operations most need to measure.

How Arrival Time Corrupts a KPI

Take a simple metric: deliveries completed per hour, or on-time arrivals in the 9–10am window. Bucket events by processing time and a delivery that completed at 9:58 but whose event arrived at 10:07 counts in the 10–11am window. The 9–10 figure is understated, the 10–11 figure overstated, and neither reflects reality — purely because of network lateness that has nothing to do with the operation.

Dwell time and transit windows are worse. If the "arrived at depot" event is late and the "departed" event is on time, a processing-time calculation can show a negative dwell or a nonsensical duration, because the two timestamps bracketing the window came from different lateness. The KPI does not just shift — it can become incoherent.

And this corrupts the metric exactly when it matters most. Heavy congestion and poor-signal routes are both when operations most need accurate timing and when lateness is worst, so a processing-time KPI is least trustworthy under the conditions it is meant to illuminate. A dashboard that is wrong in the quiet periods and more wrong in the busy ones is not a dashboard anyone should act on.

A processing-time KPI is least trustworthy exactly when it matters most — congestion and poor-signal routes are both when timing matters and when lateness is worst. Wrong in the quiet periods, more wrong in the busy ones.

Windowing on Event Time

The fix is to window and aggregate on event time — the device’s own timestamp of when the thing happened — not on when the platform received it. A delivery that completed at 9:58 then counts in the 9–10am window regardless of when its event arrived, so the metric reflects the operation rather than the network. This is the single most important choice in building any time-based streaming KPI.

In Microsoft Fabric Real-Time Intelligence, this means your Eventstream processing and the aggregations in the Eventhouse are built to bucket by the event’s own timestamp field, not the ingestion time. It is a deliberate design decision: the event-time column has to be identified, trusted, and used consistently as the basis for every time window, from the stream through to the KQL queries that power the dashboard.

It also assumes the device clocks are reasonable. Where device timestamps are unreliable or skewed, part of the design is reconciling or correcting them, because event-time windowing is only as good as the event times the devices report. That is a known piece of work on real telematics fleets, not an afterthought.

Handling Late and Out-of-Order Events

Event-time windowing raises an unavoidable question: if you are bucketing by when things happened, how long do you wait for late events before you consider a window complete? Wait too little and late events miss their window; wait too long and the metric is never final. This is the watermark decision — defining how late an event can be and still be counted into its proper window.

Set that lateness bound to the real behaviour of your fleet — how late pings genuinely arrive from dead zones and batching devices — so the normal lateness is absorbed. Then decide what happens to an event later than the bound: either it updates the already-reported window (a correction, so the 9–10am figure is restated when a very-late 9:58 event finally lands) or it is dropped as too late to matter, depending on whether downstream consumers can handle a restatement.

Out-of-order arrival is handled by the same mechanism: because you bucket by event time, an event that arrives after a later one still lands in its correct earlier window. The platform reorders by event time within the lateness bound rather than trusting arrival order. The design choice is explicit and worth stating in the pipeline — how late is allowed, and what happens beyond that — because leaving it implicit is how a KPI silently loses late data.

Decide the lateness bound from how late your pings really arrive, then decide what a too-late event does: restate the window, or drop it. Leaving that implicit is how a KPI silently loses late data.

So What — a Trustworthy Real-Time KPI

A real-time logistics KPI is only trustworthy if it is built on event time. Bucket by when events actually happened, not when they arrived; identify and trust the device timestamp as the basis for every time window; set a lateness bound to how late your data genuinely arrives; and decide explicitly whether very-late events restate a window or are dropped. In Fabric Real-Time Intelligence those are concrete choices in how the Eventstream and Eventhouse aggregations are designed.

The test is blunt: if a truck emerged from a tunnel and dumped ten minutes of buffered pings, would your on-time and dwell KPIs still be correct for the period those events belong to? If they would shift to the wrong bucket, the pipeline is windowing on arrival time and the dashboard is confidently wrong under exactly the conditions operations cares about. Get event-time windowing right and late data corrects itself into the period it belongs to — which is the whole point of a real-time metric you can act on.

If a truck left a tunnel and dumped ten minutes of buffered pings, would your on-time and dwell KPIs still be right for the period those events belong to? If not, you are windowing on arrival time.

If your real-time logistics dashboard looks precise but the on-time and dwell numbers do not match what operations saw, event-versus-processing time is the first thing to check. 30 minutes with Amit on windowing, lateness handling and trustworthy streaming KPIs in Fabric. No slides, no pitch deck, no obligation to proceed.

Free Assessment

Where does your operation sit on the data maturity curve?

8 questions. 3 minutes. You get a scored breakdown across data infrastructure, analytics readiness, and automation potential — with a specific next step for your industry.

Data EngineeringMicrosoft FabricReal-Time IntelligenceLogisticsData Quality

Your Data · Our Technology · Our Automation

Get practical insights every fortnight

Amit writes about Microsoft Fabric, Power BI, AI in operations, and digital transformation for manufacturing and supply chain leaders. Practitioner perspective - no fluff, no vendor spin.

No spam. Unsubscribe any time. Also on Substack.

FAQ

Common questions

What is the difference between event-time and processing-time in streaming data?

Event time is when something actually happened, usually stamped by the device; processing time is when the streaming platform received it. In logistics they routinely differ by minutes because telematics and scanner events arrive late and out of order — a truck in a dead zone buffers its pings, devices sync in batches, networks drop. Time-based KPIs must be computed on event time so they reflect the operation rather than network lateness.

Why are my real-time logistics KPIs wrong?

Most often because they are bucketed by processing time (when the event arrived) rather than event time (when it happened). A delivery that completed at 9:58 but whose event arrived at 10:07 then counts in the wrong hour, understating one window and overstating the next; dwell-time windows can even go negative when the bracketing events have different lateness. Windowing on the device’s event timestamp instead fixes it. This is a design choice in how the Fabric Eventstream and Eventhouse aggregate.

How do you handle late-arriving events in Fabric Real-Time Intelligence?

Window on event time and define a lateness bound — how late an event can be and still count into its proper window — set to how late your fleet’s pings genuinely arrive. Then decide what happens to events later than the bound: either they restate the already-reported window as a correction, or they are dropped, depending on whether downstream consumers can handle a restatement. Out-of-order events are handled by the same event-time bucketing, which reorders within the lateness bound rather than trusting arrival order.

Does windowing on event time require reliable device clocks?

Yes — event-time windowing is only as good as the timestamps the devices report, so part of the design is confirming the device clocks are reasonable and reconciling or correcting them where they are skewed. On real telematics fleets this is a known piece of work rather than an afterthought. Where device time genuinely cannot be trusted, you handle the correction explicitly rather than silently falling back to processing time, which would reintroduce the wrong-bucket problem.

Related FAQs

Questions operations leaders ask

Sound like your estate?

Book 30 minutes with Amit. No sales motion, just a practitioner’s read on your data situation.