{"main_topic":"education","sub_topic":"gosa","topic":"certified_personnel","key":"education/gosa/certified_personnel","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/certified_personnel/year={year}/{detail}.parquet","grain":["year","district_code","school_code","employee_type","measure_category","measure_subcategory"],"title":"Certified Personnel (Teachers and Staff Credentials)","summary":"Staffing measures for Georgia school teachers, administrators, and support staff -- credentials, experience, salary, and demographics by school, district, and state, 2011-2024.","description":"Georgia Office of Student Achievement (GOSA) Certified Personnel dataset, compiled from local school systems' Certified/Classified Personnel Information (CPI) submissions. For every Georgia public school, school district, and the state as a whole, publishes a complete grid of 27 staffing measurements per employee group (81 rows per entity-year): headcount by certificate level (Bachelor's through Doctoral, plus Other), certification status (Professional / Provisional), gender, employment status (Full/Part-time), position metrics (FTE position count, average annual/daily salary, average contract days), staff race/ethnicity, and years-of-experience bands (<1, 1-10, 11-20, 21-30, >30, plus the mean). The three employee groups are Administrators, PK-12 Teachers, and Support Personnel; coverage runs from the 2010-11 school year 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/certified_personnel","columns":[{"name":"year","type":"integer","role":"year","nullable":false,"label":"Year","short_description":"","description":"Ending calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending 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 the education districts dimension): 3-digit zero-padded for standard districts, 7-digit for state/commission charter schools (present from 2012 onward). NULL for state-level aggregate rows (the bronze sentinel `ALL`).","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 (FK to the education schools dimension, composite key with district_code). NULL for district-level and state-level aggregate rows (the bronze sentinel `ALL`).","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":"employee_type","type":"string","role":"categorical","nullable":false,"label":"Employee Type","short_description":"Which staff group the measurement covers: administrators, PK-12 teachers, or support personnel.","description":"Employee group this measurement covers. Snake_case recode of bronze EMPLOYEE_TYPE: `administrators`, `pk_12_teachers`, `support_personnel`.","valid_values":["administrators","pk_12_teachers","support_personnel"],"example":"pk_12_teachers","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":true,"metric_component":null},{"name":"measure_category","type":"string","role":"categorical","nullable":false,"label":"Measure Category","short_description":"The category of staffing measure (e.g. certificate level, gender, positions, race/ethnicity, years of experience); pairs with measure_subcategory.","description":"High-level family of the measurement. Snake_case recode of bronze DATA_CATEGORY. Together with `measure_subcategory` it fully identifies what `measure_value` represents; the family is functionally determined by the label (27 valid pairs, enforced by a quality check).","valid_values":["certificate_level","certified_personnel","gender","personnel","positions","race_ethnicity","years_experience"],"example":"race_ethnicity","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":true,"metric_component":null},{"name":"measure_subcategory","type":"string","role":"categorical","nullable":false,"label":"Measure Subcategory","short_description":"The specific staffing measure within its family (e.g. 5_yr_masters, average_annual_salary, full_time); defines what measure_value means and its unit.","description":"Specific measurement within the family. Snake_case recode of bronze DATA_SUB_CATEGORY — e.g. `5_yr_masters` (family `certificate_level`), `average_annual_salary` (family `positions`), `less_than_1` / `average` (family `years_experience`). `other` is the fifth CERTIFICATE LEVEL bucket (bronze `Other *`; the asterisk flags a source footnote), not a race value. `asian_pacific_islander` is the bronze staff-race label `Asian`: the source publishes only 6 race buckets with no separate Pacific Islander label in any year, and state-level race-bucket sums equal the gender-bucket sums (same population) — the pre-1997 OMB combined Asian + Pacific Islander bucket per data-cleaning-standards §5b.","valid_values":["11_to_20","1_to_10","21_to_30","4_yr_bachelors","5_yr_masters","6_yr_specialists","7_yr_doctoral","asian_pacific_islander","average","average_annual_salary","average_contract_days","average_daily_salary","black","female","full_time","greater_than_30","hispanic","less_than_1","male","multiracial","native_american","number","other","part_time","professional","provisional","white"],"example":"5_yr_masters","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":true,"metric_component":null},{"name":"measure_value","type":"number","role":"metric","nullable":true,"label":"Measure Value","short_description":"The measurement's value; its unit (headcount, FTE, dollars, days, or years) depends on measure_category and measure_subcategory, so filter to one pair before aggregating.","description":"Numeric value of the measurement. UNITS DEPEND ON (measure_category, measure_subcategory): a whole-person headcount for the 22 count labels (all of certificate_level, certified_personnel, gender, personnel, race_ethnicity, and the five years_experience bands); an FTE-style fractional position count for positions/number; US dollars for positions/average_annual_salary and positions/average_daily_salary; days for positions/average_contract_days; years (0.01 precision) for years_experience/average. NEVER sum or average across rows without first filtering to a single (measure_category, measure_subcategory) pair — and never sum `average*` labels across entities at all. No `unit` marker is declared because the unit varies by row; range invariants are enforced by quality checks instead (non-negative everywhere; headcount labels integral; experience average within [0, 60]; contract days within [0, 366]). Known source quirk preserved per §4b (extreme-but-conceivable): in the 2016-17 file ONLY, the certified_personnel family (professional/provisional) is uniformly depressed at every level (state professional PK-12 teachers = 2,689 vs ~110,000 in adjacent years) yet internally consistent (district sum 2,690; school sum 2,748) — a GOSA scope/definition glitch for that family-year, served as published.","valid_values":null,"example":42.0,"unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":false,"metric_component":null}],"key_metric":"measure_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":"This source has no suppression markers in any year (2010-11 through 2023-24); zero counts are published as real `0` values, and every bronze MEASURE value parses to a valid number. measure_value has heterogeneous units that depend on (measure_category, measure_subcategory): a whole-person headcount for certificate_level / certified_personnel / gender / personnel / race_ethnicity / years_experience (except `average`); an FTE-style fractional count for positions/number; US dollars for positions/average_annual_salary and positions/average_daily_salary; days for positions/average_contract_days; and a mean in years for years_experience/average. Never aggregate measure_value without first filtering to a single (measure_category, measure_subcategory) pair, and never sum `average*` labels across entities. measure_category is functionally determined by measure_subcategory (27 valid pairs). There is no `demographic` column: gender and race/ethnicity here describe STAFF and are measure families, not a cross-cutting demographic axis, so these rows do not join the demographics dimension; the race_ethnicity family uses the pre-1997 OMB combined `asian_pacific_islander` bucket (no separate Pacific Islander label exists in the source). Known source quirk: the 2016-17 certified_personnel family (professional/provisional counts) is uniformly depressed at every level (~2% of adjacent years' magnitude) yet internally consistent across levels — preserved as published; do not trend that family across 2017. School rows must not be summed to rebuild district or state headcounts: staff serving multiple schools are counted once per school assignment but deduplicated at higher levels, so a district count can even be smaller than a single school's count (observed only in personnel/part_time; 1,811 cells). State rows have NULL district_code and school_code; district rows have NULL school_code.","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":"633b96090a2792fe052c99466bdd345e4c4ae3544d81242a4d2c2f7411a961ea","tags":["education","governor's office of student achievement","certified_personnel"],"granularity_description":"One row per year, district_code, school_code, employee_type, measure_category, measure_subcategory (geography columns are NULL at higher aggregation levels).","example_queries":[{"description":"Latest year (2024), schools detail","query":"SELECT * FROM certified_personnel WHERE year = 2024 LIMIT 100"},{"description":"District 644 in 2024","query":"SELECT * FROM certified_personnel WHERE district_code = '644' AND year = 2024 LIMIT 100"},{"description":"Filter by employee_type = pk_12_teachers","query":"SELECT * FROM certified_personnel WHERE employee_type = 'pk_12_teachers' 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":"employee_type","kind":"categorical","column":"employee_type","type":"string","multi_value":true,"enum_enforced":true,"values":["administrators","pk_12_teachers","support_personnel"],"has_total":false,"total_value":null,"requires_single_value":true},{"param":"measure_category","kind":"categorical","column":"measure_category","type":"string","multi_value":true,"enum_enforced":true,"values":["certificate_level","certified_personnel","gender","personnel","positions","race_ethnicity","years_experience"],"has_total":false,"total_value":null,"requires_single_value":true},{"param":"measure_subcategory","kind":"categorical","column":"measure_subcategory","type":"string","multi_value":true,"enum_enforced":true,"values":["11_to_20","1_to_10","21_to_30","4_yr_bachelors","5_yr_masters","6_yr_specialists","7_yr_doctoral","asian_pacific_islander","average","average_annual_salary","average_contract_days","average_daily_salary","black","female","full_time","greater_than_30","hispanic","less_than_1","male","multiracial","native_american","number","other","part_time","professional","provisional","white"],"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":[]}