Amit-kr26's picture
HF Spaces deployment
c9f187d
Raw
History Blame Contribute Delete
2.05 kB
"""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)