Spaces:
Sleeping
Sleeping
| """Delivery performance analytics queries.""" | |
| import pandas as pd | |
| from sqlalchemy import Engine, text | |
| def delivery_by_state(engine: Engine) -> pd.DataFrame: | |
| sql = text(""" | |
| SELECT | |
| dc.state, | |
| AVG(f.days_to_delivery) AS avg_days, | |
| AVG(f.delivery_delay_days) AS avg_delay, | |
| AVG(CASE WHEN f.is_late THEN 1.0 ELSE 0.0 END) AS late_rate, | |
| COUNT(DISTINCT f.order_id) AS orders | |
| FROM fact_orders f | |
| JOIN dim_customers dc ON f.customer_key = dc.customer_key | |
| WHERE f.days_to_delivery IS NOT NULL AND dc.state IS NOT NULL | |
| GROUP BY 1 | |
| """) | |
| with engine.connect() as conn: | |
| return pd.read_sql(sql, conn) | |
| def delivery_delay_distribution(engine: Engine) -> pd.DataFrame: | |
| sql = text(""" | |
| SELECT delivery_delay_days AS delay_days, COUNT(*) AS orders | |
| FROM fact_orders | |
| WHERE delivery_delay_days IS NOT NULL | |
| AND delivery_delay_days BETWEEN -30 AND 60 | |
| GROUP BY 1 ORDER BY 1 | |
| """) | |
| with engine.connect() as conn: | |
| return pd.read_sql(sql, conn) | |
| def review_vs_delay(engine: Engine, sample: int = 5000) -> pd.DataFrame: | |
| sql = text(""" | |
| SELECT review_score, delivery_delay_days, days_to_delivery | |
| FROM fact_orders | |
| WHERE review_score IS NOT NULL AND delivery_delay_days IS NOT NULL | |
| ORDER BY RANDOM() LIMIT :n | |
| """) | |
| with engine.connect() as conn: | |
| return pd.read_sql(sql, conn, params={"n": sample}) | |
| def delivery_kpis(engine: Engine) -> dict: | |
| sql = text(""" | |
| SELECT | |
| AVG(days_to_delivery) AS avg_delivery_days, | |
| AVG(CASE WHEN is_late THEN 1.0 ELSE 0.0 END) AS late_rate, | |
| COUNT(*) FILTER (WHERE is_late) AS late_orders, | |
| COUNT(*) FILTER (WHERE NOT is_late) AS on_time_orders | |
| FROM fact_orders | |
| WHERE days_to_delivery IS NOT NULL | |
| """) | |
| with engine.connect() as conn: | |
| row = conn.execute(sql).fetchone() | |
| return dict(row._mapping) | |