{"main_topic":"education","sub_topic":"gosa","topic":"revenues_and_expenditures","key":"education/gosa/revenues_and_expenditures","version":"1.0.0","year_min":2011,"year_max":2024,"year_gaps":[],"update_frequency":"annual","detail_levels":["districts","schools","states"],"default_detail":"schools","path_template":"education/revenues_and_expenditures/year={year}/{detail}.parquet","grain":["year","district_code","school_code","rev_exp_category","rev_exp_subcategory"],"title":"District Revenues and Expenditures","summary":"K-12 dollars taken in and spent by Georgia public schools and districts, broken out by revenue source and spending function, 2011-2024.","description":"K-12 financial reporting for every Georgia public school, school district, and the state as a whole, published by the Governor's Office of Student Achievement (GOSA). Each row reports the total dollar amount and the per-FTE dollar amount for one cell of a two-bucket breakdown: K-12 Revenues across 6 revenue-source categories (federal, local, state QBE, state lottery, state other, other) and K-12 Expenditures across 11 expenditure-function categories (instruction, pupil services, instructional support, school administration, general administration, maintenance and operations, transportation, media, school food services, debt services, renovation and capital projects). Covers school years 2010-11 through 2023-24.","source":"Governor's Office of Student Achievement (GOSA)","source_url":"https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data","endpoint":"/api/v1/education/revenues_and_expenditures","columns":[{"name":"year","type":"integer","role":"year","nullable":false,"label":"Year","short_description":"","description":"Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24), parsed from the source's SCHOOL_YEAR / LONG_SCHOOL_YEAR column and cross-checked against the filename year.","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":"district_code","type":"string","role":"fk_district","nullable":true,"label":"District Code","short_description":"","description":"GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit compound codes for commission / state charter schools. Codes 850-888 are RESA service agencies (typed 'resa' in the dimension). NULL on state-level rows — the bronze sentinel 'ALL' is mapped to NULL.","valid_values":null,"example":"644","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":false,"metric_component":null},{"name":"school_code","type":"string","role":"fk_school","nullable":true,"label":"School Code","short_description":"","description":"4-digit zero-padded GOSA school code (composite FK to schools dimension with district_code). NULL on district- and state-level rows (bronze sentinel 'ALL' mapped to NULL). The 2012 file publishes a minority of codes as 3-digit; they are zero-padded to match the other years. 2023-2024 'DOE OTHER' rows (GNETS programs, alternative schools, Pre-K centers, central offices) carry real institution numbers and appear under the school detail level, matching where the pre-2023 files placed the same entities.","valid_values":null,"example":"0189","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":false,"metric_component":null},{"name":"rev_exp_category","type":"string","role":"categorical","nullable":false,"label":"Revenue / Expenditure Category","short_description":"Whether the row is money coming in or going out: k12_revenues or k12_expenditures. Filter with rev_exp_subcategory since each bucket has its own subcategory set.","description":"Top-level bucket — whether the row reports a revenue or an expenditure: k12_revenues or k12_expenditures.","valid_values":["k12_expenditures","k12_revenues"],"example":"k12_expenditures","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":true,"metric_component":null},{"name":"rev_exp_subcategory","type":"string","role":"categorical","nullable":false,"label":"Rev Exp Subcategory","short_description":"Revenue source (e.g. federal, local, state_qbe) or spending function (e.g. instruction, transportation); the valid set depends on rev_exp_category.","description":"Functional subcategory within the bucket (17 values). The valid subset depends on rev_exp_category: revenue rows carry only the 6 revenue-source subcategories (federal, local, state_qbe, state_lottery, state_other, other); expenditure rows carry only the 11 expenditure-function subcategories. The two sets are disjoint (enforced by a quality check), so filter on both columns together. The bronze spelling 'School food Services' (lowercase food) is an upstream-report typo normalized to school_food_services.","valid_values":["debt_services","federal","general_administration","instruction","instructional_support","local","maintenance_and_operations","media","other","pupil_services","renovation_and_capital_projects","school_administration","school_food_services","state_lottery","state_other","state_qbe","transportation"],"example":"instruction","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":true,"metric_component":null},{"name":"rev_exp_value","type":"number","role":"metric","nullable":true,"label":"Rev Exp Value","short_description":"Total dollars for this revenue source or spending function at the row's level; negatives are real budget adjustments.","description":"Total dollar amount for this (rev_exp_category, rev_exp_subcategory) cell at the row's detail level. Never NULL (enforced by a quality check — the source publishes no suppression). Negative values are legitimate budget adjustments / corrections and are preserved; no range check applies.","valid_values":null,"example":3960000.0,"unit":"currency","value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":false,"metric_component":null},{"name":"rev_exp_per_pupil","type":"number","role":"metric","nullable":true,"label":"Rev Exp per Pupil","short_description":"","description":"Per-FTE (full-time-equivalent student) dollar amount for the cell. Can be negative (budget adjustments). NULL only in 2012-2014 where the bronze FTE denominator was missing or zero (667 rows; enforced by a quality check). Caution — not always a true per-pupil amount: in the 2024 file the source publishes rev_exp_per_pupil equal to rev_exp_value verbatim on EVERY school-detail row (15,678 of 15,678 nonzero rows, traditional schools included), so 2024 school-level values carry no per-pupil information at all; in 2023 the same artifact covers all 9,798 DOE OTHER specialty-program rows plus 151 other school rows; in 2012 it covers the 10,414 rows with a missing FTE_COUNT; and it frequently equals rev_exp_value on aggregate / non-school rows in other years. District- and state-detail rows in 2023-2024 do carry true per-FTE values. Verify rev_exp_per_pupil <> rev_exp_value (or sanity-check per-pupil magnitude) before treating a school-level value as per-pupil spending.","valid_values":null,"example":6696.37,"unit":"currency","value_min":null,"value_max":null,"null_meaning":"NULL = the entity has no FTE denominator (district central offices, zero-FTE programs), NOT suppression. All 667 NULLs fall in 2012-2014, the only years whose bronze carried an FTE_COUNT column.","key_metric_grain_contributor":false,"metric_component":null}],"key_metric":"rev_exp_value","usage":"Star-schema fact table. Join the districts dimension on district_code; the schools dimension on district_code + school_code. Read directly with DuckDB over Parquet.","limitations":"State rows have NULL district_code and school_code; district rows have NULL school_code. The school detail level includes non-traditional entities (central offices, GNETS programs, Pre-K centers, maintenance facilities) in every year, and district detail includes the 16 RESA service-agency rollups (district codes 850-888) — exclude both when analyzing traditional schools/districts only. rev_exp_per_pupil is not a true per-pupil amount everywhere: the 2024 file publishes it equal to rev_exp_value on every school-detail row (traditional schools included — 2024 school-level per-FTE values are totals, not per-pupil amounts), the 2023 file does so on all DOE OTHER rows, the 2012 file on its 10,414 missing-FTE rows, and it frequently equals rev_exp_value on aggregate / non-school rows in other years. State rows are published independently of district rows and do not always equal the sum of district values within a subcategory (e.g. the 2014 renovation_and_capital_projects state total runs several times the district sum) — treat each detail level as its own published series. The valid rev_exp_subcategory values are disjoint between the two rev_exp_category buckets (6 revenue-source vs 11 expenditure-function subcategories). No suppression exists in this topic — NULL never means suppressed; the only NULL metric values are 667 rev_exp_per_pupil rows in 2012-2014 with a missing/zero FTE denominator. Negative dollar values are legitimate budget adjustments and are preserved.","null_semantics":{"suppressed_to_null":false,"zero_is_real":true},"available_years":[2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024],"schema_hash":"e307e2e5704bc334eb4ea73998016877409f0eef2984325550d8c5cc7186156d","tags":["education","governor's office of student achievement","revenues_and_expenditures"],"granularity_description":"One row per year, district_code, school_code, rev_exp_category, rev_exp_subcategory (geography columns are NULL at higher aggregation levels).","example_queries":[{"description":"Latest year (2024), schools detail","query":"SELECT * FROM revenues_and_expenditures WHERE year = 2024 LIMIT 100"},{"description":"District 644 in 2024","query":"SELECT * FROM revenues_and_expenditures WHERE district_code = '644' AND year = 2024 LIMIT 100"},{"description":"Filter by rev_exp_category = k12_expenditures","query":"SELECT * FROM revenues_and_expenditures WHERE rev_exp_category = 'k12_expenditures' AND year = 2024 LIMIT 100"}],"foreign_keys":[{"column":"district_code","target_object":"districts","target_columns":["district_code"],"attribute_columns_added":["district_name","district_census_id","district_type"],"scope":"domain"},{"column":"school_code","target_object":"schools","target_columns":["district_code","school_code"],"attribute_columns_added":["school_name"],"scope":"domain"}],"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":["districts","schools","states"],"default":"schools"},{"param":"district_code","kind":"foreign_key","column":"district_code","type":"string","multi_value":true,"enum_enforced":false,"values":null},{"param":"school_code","kind":"foreign_key","column":"school_code","type":"string","multi_value":true,"enum_enforced":false,"values":null},{"param":"rev_exp_category","kind":"categorical","column":"rev_exp_category","type":"string","multi_value":true,"enum_enforced":true,"values":["k12_expenditures","k12_revenues"],"has_total":false,"total_value":null,"requires_single_value":true},{"param":"rev_exp_subcategory","kind":"categorical","column":"rev_exp_subcategory","type":"string","multi_value":true,"enum_enforced":true,"values":["debt_services","federal","general_administration","instruction","instructional_support","local","maintenance_and_operations","media","other","pupil_services","renovation_and_capital_projects","school_administration","school_food_services","state_lottery","state_other","state_qbe","transportation"],"has_total":false,"total_value":null,"requires_single_value":true},{"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":[{"primary":"rev_exp_category","dependent":"rev_exp_subcategory","note":"Filter rev_exp_subcategory together with rev_exp_category — the valid subcategory set depends on the chosen bucket (6 revenue-source vs 11 expenditure-function values)."}]}