Wave 2 · Phase 2 (2 – 15 Nov) · Spec §4, §4.1, §4.2 · Decision D9 · Feeds L07
make clean MONTH= turns one month of raw files into unified, enriched, flagged trips, keeping every raw row.
pipeline/clean.pysql/clean/{hvfhv,yellow,green}.sql and sql/clean/derive.sql (derived columns and flags shared by all three)tests/test_clean_*.py; raw fixtures built in code under tests/fixtures/raw/pipeline/schema_map.py resolver (L03); config/cbd_zones.csv and the pipeline/zones.py helper (L04); config/airports.csv; config/periods.yaml; data/ref/taxi_zone_lookup.csvmode from the license code (HV0003 uber, HV0005 lyft, HV0002 and HV0004 other_hv; an unknown code is an error)month = the file’s month, not the pickup monthduration_s from timestamps; green airport_fee = 0; cbd_fee coalesced to 0other_fees, rider_total_ex_tip, is_card; Y/N flags to BOOLEANwait_s (NULL when request_ts is NULL), hour_of_week (Sunday = 0), boroughs, airports, cbd_pu / cbd_do / cbd_touch (for both zone lists if D9 is agreed), periodis_validdata/clean/mode={mode}/month={YYYY-MM}/part-0.parquet with DuckDB COPY … PARTITION_BY, replacing the month atomicallyhour_of_week: Sunday 00:xx → 0, Saturday 23:xx → 167period at 2025-01-04 23:59:59, 2025-01-05 00:00 and 2025-08-01 00:00rider_total_ex_tip for an HVFHV row and a yellow row; cbd_fee NULL → 0; the Airport_fee spellingOnly this lane writes here. Newest first.
| Date | State | Note |
|---|---|---|
| not started |
Blocked: none
Hand-off