Certified Personnel (Teachers and Staff Credentials)
Staffing measures for Georgia school teachers, administrators, and support staff -- credentials, experience, salary, and demographics by school, district, and state, 2011-2024.
- 2011–2024
- annual
- 1.0.0
- 633b96090a27
Resumen
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.
Granularidad de fila: Una fila por year, district_code, school_code, employee_type, measure_category, measure_subcategory.
measure_value — Measure Value
El valor principal que la mayoría de las consultas busca.
Variables
Todas las columnas de la tabla de hechos. El código es el nombre exacto del campo que devuelve la API.
| Columna | Tipo | Unidad | Rango | ¿Nulo? | Descripción |
|---|---|---|---|---|---|
year | integer | — | — | no | Ending calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending year.Descripción completa▾Ending calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending year. |
district_code | string | — | — | yes | 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`).Descripción completa▾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`). |
school_code | string | — | — | yes | 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`).Descripción completa▾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`). |
employee_type | string | — | — | no | Which staff group the measurement covers: administrators, PK-12 teachers, or support personnel.Descripción completa▾Employee group this measurement covers. Snake_case recode of bronze EMPLOYEE_TYPE: `administrators`, `pk_12_teachers`, `support_personnel`. 3 valores permitidos▾
|
measure_category | string | — | — | no | The category of staffing measure (e.g. certificate level, gender, positions, race/ethnicity, years of experience); pairs with measure_subcategory.Descripción completa▾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). 7 valores permitidos▾
|
measure_subcategory | string | — | — | no | 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.Descripción completa▾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. 27 valores permitidos▾
|
measure_value | number | — | — | yes | 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.Descripción completa▾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. |
Filtros
Parámetros de consulta que acepta el endpoint de hechos. Los valores separados por comas son OR dentro de un parámetro; varios parámetros se combinan con AND.
| Parámetro | Tipo | Valores permitidos | Notas |
|---|---|---|---|
year | year_exact | cualquier valor | — |
year_min | year_range | cualquier valor | — |
year_max | year_range | cualquier valor | — |
detail | detail | districtsschoolsstates | enum validado, predeterminado: schools |
district_code | foreign_key | cualquier valor | valores múltiples |
school_code | foreign_key | cualquier valor | valores múltiples |
employee_type | categorical | administratorspk_12_teacherssupport_personnel | valores múltiples, enum validado, elige uno |
measure_category | categorical | 7 valores permitidos▾
| valores múltiples, enum validado, elige uno |
measure_subcategory | categorical | 27 valores permitidos▾
| valores múltiples, enum validado, elige uno |
district_type | dimension_attribute | 7 valores permitidos▾
| valores múltiples, enum validado |
Ejemplos de solicitudes
Ejecútalos contra la URL base: devuelven datos en vivo.
All rows (first page), schools level
curl "https://georgiacivicdata.org/api/v1/education/certified_personnel"schools data for 2024
curl "https://georgiacivicdata.org/api/v1/education/certified_personnel?year=2024"Filtered to employee_type = administrators for 2024
curl "https://georgiacivicdata.org/api/v1/education/certified_personnel?year=2024&employee_type=administrators"One district (code 644), 2024
curl "https://georgiacivicdata.org/api/v1/education/certified_personnel?district_code=644&year=2024&detail=districts"Download 2024 as CSV
curl "https://georgiacivicdata.org/api/v1/education/certified_personnel?year=2024&format=csv"Notas y limitaciones
Manejo de NULL
- El cero es un valor real y reportado.
Limitaciones
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.