Automated data pipeline
Hourly air quality and weather for eight Egyptian cities, extracted from Open-Meteo, modelled into a star schema, tested, and republished automatically by GitHub Actions. No servers, no manual steps.
Most recent observed hour per city, worst first. Forecast hours are excluded — every value here has actually been modelled for a time that has already passed.
The dashed line is the WHO 24-hour guideline of 15 µg/m³.
Average PM2.5 by hour of day, pooled across all observations, in Egyptian local time — so the peaks line up with when people are actually on the road rather than with UTC.
Assertions run against the warehouse on every build. An error-level failure stops the pipeline, so this dashboard is never built from bad data.
Everything is published as CSV at stable URLs. No key, no sign-up.
import pandas as pd
url = ("https://raw.githubusercontent.com/"
"mazenelnaghy-code/egypt-air-quality/main/"
"docs/data/mart_daily_city.csv")
df = pd.read_csv(url, parse_dates=["date_key"])
print(df.groupby("city_name").avg_pm2_5.mean())