Plain-language questions
Ask for average delivery time per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
KPI · Logistics
Average delivery time is the average time between a shipment leaving your warehouse and being delivered to the customer. It is also called transit time. It mainly measures carrier performance, separate from your own order processing.
Sum of (delivery date and time − dispatch date and time) across delivered shipments ÷ number of delivered shipments
In May 2026 Acme Groothandel delivered 3,500 shipments. Together they spent 5,600 days in transit. The average delivery time is 5,600 ÷ 3,500 = 1.6 days.
Fictitious figures for Acme Groothandel, a sample wholesaler.
A shorter, more consistent delivery time makes your delivery promise more reliable. The average can look fine while some shipments take much longer, so check a high percentile too. Compare by carrier, country and service, and against the transit time the carrier quotes.
SQL & DAX
Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.
SELECT date_trunc('month', delivered_at) AS month,
carrier,
COUNT(*) AS delivered,
ROUND(AVG(EXTRACT(epoch FROM delivered_at - shipped_at) / 86400)::numeric, 2) AS avg_delivery_days,
ROUND((PERCENTILE_CONT(0.9) WITHIN GROUP (
ORDER BY EXTRACT(epoch FROM delivered_at - shipped_at) / 86400))::numeric, 2) AS p90_delivery_days
FROM shipments
WHERE delivered_at IS NOT NULL AND shipped_at IS NOT NULL
GROUP BY 1, 2
ORDER BY 1, 2;Delivered Shipments = CALCULATE(COUNTROWS(Shipments), NOT ISBLANK(Shipments[DeliveredAt]))
Average Delivery Time (days) = DIVIDE(SUMX(FILTER(Shipments, NOT ISBLANK(Shipments[DeliveredAt])), DATEDIFF(Shipments[ShippedAt], Shipments[DeliveredAt], HOUR)) / 24, [Delivered Shipments])In ENABLE
Ask for average delivery time per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.
Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.
With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.
FAQ
For each delivered shipment, subtract the dispatch time from the delivery time and take the average. The timestamps come from the carrier's tracking data. Work in hours or fractions of days for an accurate picture.
Delivery time runs from dispatch to delivery and mostly depends on the carrier. Order cycle time runs from order to delivery and includes your own order processing and picking. Customers experience the order cycle time.
Carriers differ in network, collection times, sorting centres and delivery days. The service you choose, such as standard or express, and the destination country also make a big difference. Compare by service and country, not just by carrier.
In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.