Donor oral-history upload-confirmation events sometimes arrive at an Eventstream out of the order in which they actually occurred, because branches upload over inconsistent network links. The downstream Eventhouse table needs to reflect correct chronological order for time-based analysis regardless of arrival order. What is the correct way to address this?
Select an answer to reveal the explanation.
Short Explanation
Arrival order and true order aren't the same thing, and Eventhouse doesn't need them to be. As long as each event carries its own event-time column, KQL can bin and sort by that value directly, so out-of-order arrival stops being a problem at query time.
Full Explanation
Eventhouse and KQL are built to tolerate out-of-order ingestion because every event can carry its own event-time column independent of when the row physically landed. Time-based grouping and sorting done against that event-time column (via bin(), summarize by, or an explicit order by EventTime) produces chronologically correct results regardless of the sequence in which rows actually arrived, which is exactly what this scenario needs.
Rejecting any event that arrives after a newer one has already landed discards legitimate late data outright, and Eventhouse has no such built-in rule. Physically re-sorting storage files once a day is unnecessary — bin() and summarize work correctly over unsorted rows once the right time column is used. The claim that Eventhouse only supports strictly ordered ingestion is simply false; append-optimized ingestion of continuously arriving, possibly out-of-order events is a core scenario the platform is designed for.
A caveat: analyses that instead rely on ingestion_time() will still reflect arrival order rather than true chronology, so query authors must be deliberate about which time column they choose for a given analysis. Operationally, compare a query grouped by event-time against the same query grouped by ingestion_time on a sample of out-of-order data to confirm they diverge as expected, verifying the event-time column is the one actually driving the chronological analysis.