import%20marimo%0A%0A__generated_with%20%3D%20%220.23.9%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20ACS%20labor-force%20%E2%80%94%20pipeline%20reconciliation%20(companion%20to%20docs%2Fpipelines%2Facs-labor.md)%0A%0A%20%20%20%205%20primitives%20against%20%60analytics.db%60%20(read-only)%3A%20row-count%20%C2%B7%20grain%20%C2%B7%20coverage%20%C2%B7%20rate-bounds%20%C2%B7%0A%20%20%20%20occupation-sum%20cross-check.%20ACS%20is%20residence-based%2C%202023%205-year%20(pooled%2C%20carries%20MOE).%20Ingest%3A%0A%20%20%20%20%60scripts%2Fingest_acs_labor.py%60.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20from%20pathlib%20import%20Path%0A%20%20%20%20import%20duckdb%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20Path%2C%20duckdb%2C%20mo%0A%0A%0A%40app.cell%0Adef%20_(Path%2C%20duckdb)%3A%0A%20%20%20%20def%20_find_db()%3A%0A%20%20%20%20%20%20%20%20for%20d%20in%20%5BPath.cwd()%2C%20*Path.cwd().parents%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(d%20%2F%20%22analytics.db%22).exists()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20str(d%20%2F%20%22analytics.db%22)%0A%20%20%20%20%20%20%20%20raise%20FileNotFoundError(%22analytics.db%20not%20found%22)%0A%20%20%20%20conn%20%3D%20duckdb.connect(_find_db()%2C%20read_only%3DTrue)%0A%20%20%20%20def%20q(sql)%3A%0A%20%20%20%20%20%20%20%20return%20conn.execute(sql).fetchdf()%0A%0A%20%20%20%20return%20(q%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%23%20Stage%201%20%E2%80%94%20%60acs_labor_force%60%20(geo%20%C3%97%20year)%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(q)%3A%0A%20%20%20%20q(%22%22%22%0A%20%20%20%20SELECT%0A%20%20%20%20%20%20(SELECT%20count(*)%20FROM%20acs_labor_force)%20AS%20rows%2C%0A%20%20%20%20%20%20(SELECT%20count(*)%20FROM%20(SELECT%20geo_id%2Cyear%20FROM%20acs_labor_force%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20GROUP%20BY%201%2C2%20HAVING%20count(*)%3E1))%20AS%20grain_violations%2C%0A%20%20%20%20%20%20(SELECT%20count(DISTINCT%20geo_level)%20FROM%20acs_labor_force)%20AS%20geo_levels%2C%0A%20%20%20%20%20%20(SELECT%20count(*)%20FROM%20acs_labor_force%0A%20%20%20%20%20%20%20%20%20WHERE%20unemp_rate%3C0%20OR%20unemp_rate%3E1%20OR%20participation_rate%3C0%20OR%20participation_rate%3E1%0A%20%20%20%20%20%20%20%20%20%20%20%20OR%20ba_plus_share%3C0%20OR%20ba_plus_share%3E1)%20AS%20rate_out_of_bounds%2C%0A%20%20%20%20%20%20(SELECT%20count(*)%20FROM%20acs_labor_force%20WHERE%20labor_force%3C0)%20AS%20negative_lf%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%23%20Stage%202%20%E2%80%94%20%60acs_occupation_residence%60%20coverage%20%2B%20sum%20cross-check%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(q)%3A%0A%20%20%20%20%23%20Every%20geo%20carries%206%20groups%3B%20the%205%20broad%20employed%20sum%20~%3D%20the%20Total%20(ACS%20rounding).%0A%20%20%20%20q(%22%22%22%0A%20%20%20%20SELECT%0A%20%20%20%20%20%20(SELECT%20count(*)%20FROM%20acs_occupation_residence)%20AS%20rows%2C%0A%20%20%20%20%20%20(SELECT%20count(*)%20FROM%20(SELECT%20geo_id%2Cyear%20FROM%20acs_occupation_residence%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20GROUP%20BY%201%2C2%20HAVING%20count(DISTINCT%20occ_group)%3C%3E6))%20AS%20coverage_gaps%2C%0A%20%20%20%20%20%20(SELECT%20count(*)%20FROM%20(%0A%20%20%20%20%20%20%20%20%20%20SELECT%20geo_id%2C%20year%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sum(employed)%20FILTER%20(WHERE%20occ_group%3C%3E'Total')%20AS%20broad%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20max(employed)%20FILTER%20(WHERE%20occ_group%3D'Total')%20%20AS%20tot%0A%20%20%20%20%20%20%20%20%20%20FROM%20acs_occupation_residence%20GROUP%20BY%20geo_id%2C%20year%0A%20%20%20%20%20%20%20)%20WHERE%20abs(broad-tot)%3E15)%20AS%20sum_mismatches%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%23%20Stage%203%20%E2%80%94%20passthrough%20row-count%20(staging%20must%20be%20exact%201%3A1)%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(q)%3A%0A%20%20%20%20q(%22%22%22%0A%20%20%20%20SELECT%0A%20%20%20%20%20%20(SELECT%20count(*)%20FROM%20acs_labor_force)%3D(SELECT%20count(*)%20FROM%20stg_acs_labor_force)%20AS%20lf_match%2C%0A%20%20%20%20%20%20(SELECT%20count(*)%20FROM%20acs_occupation_residence)%3D(SELECT%20count(*)%20FROM%20stg_acs_occupation_residence)%20AS%20occ_match%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
d288fe89a5b7300e5812837ef030c468