{"main_topic":"census","sub_topic":"acs","topic":"median_household_income","key":"census/acs/median_household_income","version":"2.0.0","year_min":2020,"year_max":2024,"year_gaps":[],"update_frequency":"annual","detail_levels":["counties","districts","states","tracts"],"default_detail":"counties","path_template":"census/median_household_income/year={year}/{detail}.parquet","grain":["year","county_fips","district_code","tract_geoid","race_iteration"],"title":"Median Household Income (ACS)","summary":"What a typical household earns in each Georgia community, overall and by race/ethnicity of householder - American Community Survey 5-year medians down to the census-tract level.","description":"Median household income by Census race/ethnicity iteration of householder from the American Community Survey 5-year estimates (table B19013 and its race iterations B19013B-I), for Georgia at state, county, school district, and census tract geography, vintages 2020-2024. Inflation-adjusted dollars with 90 percent margins of error.","source":"U.S. Census Bureau, American Community Survey 5-Year Estimates","source_url":"https://data.census.gov/table/ACSDT5Y2024.B19013?g=040XX00US13","endpoint":"/api/v1/census/median_household_income","columns":[{"name":"year","type":"integer","role":"year","nullable":false,"label":"Year","short_description":"","description":"ACS 5-year vintage END year: 2024 covers the pooled 2020-2024 survey period (dollars inflation-adjusted to 2024). Consecutive vintages overlap.","valid_values":null,"example":2024,"unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":false,"metric_component":null},{"name":"county_fips","type":"string","role":"fk_county","nullable":true,"label":"County FIPS","short_description":"","description":"5-digit county FIPS code (state 13 + county). Populated only on county-level rows.","valid_values":null,"example":"13121","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":false,"metric_component":null},{"name":"district_code","type":"string","role":"fk_district","nullable":true,"label":"District Code","short_description":"","description":"GCD school district code (FK to the education districts dimension). Populated only on district-level rows - Census unified-school-district estimates mapped onto the ~180 standard districts.","valid_values":null,"example":"660","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":false,"metric_component":null},{"name":"tract_geoid","type":"string","role":"fk_tract","nullable":true,"label":"Tract GEOID","short_description":"","description":"11-digit census tract GEOID (2020 boundaries). Populated only on tract-level rows.","valid_values":null,"example":"13121011100","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":false,"metric_component":null},{"name":"race_iteration","type":"string","role":"categorical","nullable":false,"label":"Race Iteration","short_description":"Census race-iteration table of the householder; the groups overlap, so never combine them - 'all' is the total.","description":"Census race-iteration table membership, by race/ethnicity of the householder (topic-specific categorical - NOT the shared demographic axis and no FK to the demographics dimension). 'all' = all households (B19013); 'white' = White alone, not Hispanic or Latino (iteration H); 'hispanic' = Hispanic or Latino of any race (iteration I); 'black', 'native_american', 'asian', 'pacific_islander', 'other', 'multiracial' = the race-alone iterations B-G, which INCLUDE Hispanic householders. The iterations OVERLAP and are NOT mutually exclusive (a Hispanic Black householder is in both 'hispanic' and 'black'), so the rows are never additive and must not be combined across this column.","valid_values":["all","asian","black","hispanic","multiracial","native_american","other","pacific_islander","white"],"example":"hispanic","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":true,"metric_component":null},{"name":"median_household_income","type":"integer","role":"metric","nullable":true,"label":"Median Household Income","short_description":"Median household income, dollars.","description":"Median household income in the past 12 months, inflation-adjusted to the vintage end year. Censored at both scale ends as published: 250001 means $250,000 or more; 2499 means $2,499 or less. NULL when the source could not compute a median (too few households in the category).","valid_values":null,"example":77353,"unit":"currency","value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":false,"metric_component":null},{"name":"median_household_income_moe","type":"integer","role":"metric","nullable":true,"label":"Median Household Income Moe","short_description":"","description":"90 percent margin of error for median_household_income, dollars, as published. Never the headline metric.","valid_values":null,"example":null,"unit":"currency","value_min":null,"value_max":null,"null_meaning":"NULL when the source published no margin: either the median itself could not be computed (annotation -222222222, and the median is NULL too), or the median is censored at a scale end (250001 / 2499), where the Census marks the margin 'not appropriate' (-333333333). Every NULL margin beside a published median is a jam value (enforced by the moe_null_iff_jam_value check).","key_metric_grain_contributor":false,"metric_component":null}],"key_metric":"median_household_income","usage":"Star-schema fact table. Join the districts dimension on district_code; the counties dimension on county_fips; the tracts dimension on tract_geoid. Read directly with DuckDB over Parquet.","limitations":"Race/ethnicity of householder is served on the topic-specific race_iteration column, NOT the shared demographic axis, because the Census race-iteration tables OVERLAP: 'white' is White alone NOT Hispanic (B19013H) and 'hispanic' is Hispanic of any race (B19013I), but the remaining groups are race-ALONE iterations (B19013B-G) that INCLUDE Hispanic householders - a Hispanic Black householder is in both 'hispanic' and 'black'. The demographics dimension promises mutually exclusive categories, which these rows cannot honor (the Census publishes no other non-Hispanic income splits), so never combine rows across race_iteration values; 'all' (B19013) is all households and is the default pin. population_by_race (B03002) IS mutually exclusive and stays on demographic. Universe: households; race is the HOUSEHOLDER's. Dollars are inflation-adjusted to each vintage's END year, so cross-vintage comparisons mix different dollars. Medians never sum or average across geographies or categories. Published medians are censored at BOTH scale ends and preserved as-is (see the jam_values listing on the column): 250001 means '$250,000 or more' and 2499 means '$2,499 or less'. A NULL median means the source could not compute one - rare for the 'all' row (about 1 percent of tracts, never at county/state grain) but increasingly common for small race iterations at tract grain (from about 10 percent of tract rows for 'white' to nearly all for 'native_american' and 'pacific_islander'), because a median needs enough sampled households in the group to estimate. ACS 5-year period estimates: the year column is the vintage END year and each estimate pools five years of survey responses (2024 = 2020-2024). Consecutive vintages share about 80% of their sample, so the series is heavily smoothed - never difference overlapping vintages as if they were annual change. Estimates are survey-based and carry 90% margins of error (the *_moe columns); tract-level margins can be large relative to the estimate. All levels serve vintages 2020-2024 only, on 2020-vintage tract boundaries. State rows have NULL county_fips, district_code, and tract_geoid; county rows carry only county_fips, district rows only district_code, tract rows only tract_geoid. District rows cover the ~180 standard (city/county) districts only: the Census publishes school-district estimates at unified school district geography, which has no codes for charter schools, RESAs, or state agencies, and its few Census-only districts (e.g. the Fort Stewart military district) have no GCD district code and are dropped.","null_semantics":{"suppressed_to_null":true,"zero_is_real":true},"available_years":[2020,2021,2022,2023,2024],"schema_hash":"1a483ec739a861ad4952a9a0148b04c6e6150de3ddfaec38d156a8c0da600039","tags":["census","u.s. census bureau, american community survey 5-year estimates","median_household_income"],"granularity_description":"One row per year, county_fips, district_code, tract_geoid, race_iteration (geography columns are NULL at higher aggregation levels).","example_queries":[{"description":"Latest year (2024), counties detail","query":"SELECT * FROM median_household_income WHERE year = 2024 LIMIT 100"},{"description":"District 660 in 2024","query":"SELECT * FROM median_household_income WHERE district_code = '660' AND year = 2024 LIMIT 100"},{"description":"Filter by race_iteration = hispanic","query":"SELECT * FROM median_household_income WHERE race_iteration = 'hispanic' AND year = 2024 LIMIT 100"}],"foreign_keys":[{"column":"county_fips","target_object":"counties","target_columns":["county_fips"],"attribute_columns_added":["county_name"],"scope":"global"},{"column":"district_code","target_object":"districts","target_columns":["district_code"],"attribute_columns_added":["district_name","district_census_id","district_type"],"scope":"domain"},{"column":"tract_geoid","target_object":"tracts","target_columns":["tract_geoid"],"attribute_columns_added":["tract_name"],"scope":"global"}],"filters":[{"param":"year","kind":"year_exact","type":"integer","multi_value":false,"enum_enforced":false,"values":null},{"param":"year_min","kind":"year_range","type":"integer","multi_value":false,"enum_enforced":false,"values":null},{"param":"year_max","kind":"year_range","type":"integer","multi_value":false,"enum_enforced":false,"values":null},{"param":"detail","kind":"detail","type":"string","multi_value":false,"enum_enforced":true,"values":["counties","districts","states","tracts"],"default":"counties"},{"param":"district_code","kind":"foreign_key","column":"district_code","type":"string","multi_value":true,"enum_enforced":false,"values":null},{"param":"county_fips","kind":"foreign_key","column":"county_fips","type":"string","multi_value":true,"enum_enforced":false,"values":null},{"param":"tract_geoid","kind":"foreign_key","column":"tract_geoid","type":"string","multi_value":true,"enum_enforced":false,"values":null},{"param":"race_iteration","kind":"categorical","column":"race_iteration","type":"string","multi_value":true,"enum_enforced":true,"values":["all","asian","black","hispanic","multiracial","native_american","other","pacific_islander","white"],"has_total":true,"total_value":"all","requires_single_value":false,"nullable":false,"null_filter_token":null},{"param":"district_type","kind":"dimension_attribute","dimension":"districts","column":"district_type","type":"string","multi_value":true,"enum_enforced":true,"values":["commission_charter","resa","standard","state_agency","state_charter","state_school","state_special"]}],"filter_hints":[],"values_endpoint":"/api/v1/census/median_household_income/values"}