Wave 2 · Phase 2 · Spec §5 · Decisions D7, D8, D9, D10 · Feeds L08, L09, L10
make aggregate MONTH= rebuilds that month’s rows in every aggregate table, storing sums so any roll-up stays correct.
pipeline/aggregate.py, sql/agg/<table>.sql (one file per table), tests/test_aggregate_*.pytests/factories.py, not real dataagg_zone_hour, agg_zone_month_dist, agg_od_month, agg_airport, agg_week_cbd, agg_fees_month, agg_quality_month, plus the D8 tables and the D10 city-wide row if agreeddata/agg/{table}.parquet. Other months untouched; a re-run gives identical outputtrips_all counts all rows; other sums use is_valid rowsf_wait and NULL waitscard_* columns for taxis onlyquantile_cont on valid rows; distribution rows only where n ≥ 100agg_airport: from = pickup at the airport, to = drop-off at the airport; an airport-to-airport trip counts in both (document this); hour of day from pickupagg_week_cbd: ISO year and week from pickup_ts; treated = cbd_touch; with month (D7) and zone_list (D9) if agreedmake aggregate MONTH=2025-03 on real clean data builds every table (G2)Only this lane writes here. Newest first.
| Date | State | Note |
|---|---|---|
| not started |
Blocked: none
Hand-off