{"main_topic":"education","sub_topic":"gosa","topic":"educator_qualifications_out_of_field_teachers","key":"education/gosa/educator_qualifications_out_of_field_teachers","version":"1.0.0","year_min":2018,"year_max":2024,"year_gaps":[],"update_frequency":"annual","detail_levels":["districts","schools","states"],"default_detail":"schools","path_template":"education/educator_qualifications_out_of_field_teachers/year={year}/{detail}.parquet","grain":["year","district_code","school_code","poverty_subgroup"],"title":"Out-of-Field Teachers","summary":"Share of Georgia teachers assigned to a subject they are not certified in, by school, district, and poverty stratum, 2018-2024.","description":"Georgia Office of Student Achievement (GOSA) Out-of-Field teacher FTE report. For every Georgia public school, school district, and the state as a whole, reports the total teacher full-time equivalent (`total_fte`), the FTE of teachers assigned to a subject for which they are not certified (`out_of_field_fte`), and the out-of-field FTE as a percentage of total FTE (`out_of_field_fte_rate`, on a 0-1 decimal scale). Each entity has three rows — Total, High Poverty, and Low Poverty — reporting the same three metrics across poverty strata of schools. Coverage spans the 2017-2018 school year through 2023-2024.","source":"Governor's Office of Student Achievement (GOSA)","source_url":"https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data","endpoint":"/api/v1/education/educator_qualifications_out_of_field_teachers","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":"3-digit GOSA district code (zero-padded) for standard districts; 7-digit charter code for charter / specialty-school districts; NULL for state-level aggregate rows. FK to the education districts dimension. Because the source publishes only district NAMES (no codes), codes are resolved against `data/gold/education/_dimensions/districts.parquet` via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, and guarded name matching — see src/etl/education/gosa/_educator_lookups.py). Rows whose names cannot be resolved are dropped only under documented predicates; the transform manifest records each dropped class and count per year.","valid_values":null,"example":"601","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 GOSA school code (zero-padded); NULL for district-level and state-level aggregate rows. FK to the education schools dimension (composite key with district_code). Resolved by name via the shared educator-topic resolver; school-level rows whose name cannot be resolved to a dimension entry are dropped under documented source-gap predicates only (counts in the transform manifest).","valid_values":null,"example":"0103","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":false,"metric_component":null},{"name":"poverty_subgroup","type":"string","role":"categorical","nullable":false,"label":"Poverty Subgroup","short_description":"School-poverty stratum the row covers: all schools (total), or only the highest- or lowest-poverty quartile; a school-poverty level, not a student demographic.","description":"Poverty stratum of the schools whose FTE this row aggregates. `total` covers all schools in the entity; `high_poverty` covers only the entity's schools in the state's highest-poverty quartile; `low_poverty` only those in the lowest-poverty quartile. Per GOSA's K-12 Teacher & Leader Workforce Reports, a school's poverty level is defined by its direct-certification rate (the share of students directly certified for free/reduced-price meals) — higher direct certification means higher poverty. For a school-level row the stratum describes the school itself, so `high_poverty`/`low_poverty` rows duplicate that school's `total` row (enforced by a quality check). This is a SCHOOL-poverty stratum, NOT a student demographic — it does not map to the global demographics dimension.","valid_values":["high_poverty","low_poverty","total"],"example":"total","unit":null,"value_min":null,"value_max":null,"null_meaning":null,"key_metric_grain_contributor":true,"metric_component":null},{"name":"total_fte","type":"number","role":"metric","nullable":true,"label":"Total FTE","short_description":"","description":"Total teacher full-time equivalent count in the entity (or in the poverty subgroup). Fractional FTEs are real (e.g. 42.5). NULL when suppressed by the GOSA reporting floor (`TFS`, < 10 teachers; 2022 onward only). Denominator of `out_of_field_fte_rate`. The 2019 statewide level (162,256.2) is ~37% above neighboring years (2018: 118,009.1; 2020: 110,800.8) — a broader teacher population GOSA reported that year at every detail level; and the 2018 file mixes scopes across levels (school rows broad, district/state rows narrow). Preserved faithfully per data-cleaning-standards §4b (extreme-but-conceivable).","valid_values":null,"example":42.5,"unit":"count","value_min":null,"value_max":null,"null_meaning":"Suppressed by the GOSA reporting floor (`TFS`, fewer than 10 teachers); suppression exists from the 2022 file onward — 2018-2021 contain no suppression.","key_metric_grain_contributor":false,"metric_component":"denominator"},{"name":"out_of_field_fte","type":"number","role":"metric","nullable":true,"label":"Out of Field FTE","short_description":"","description":"Teacher FTE assigned to a subject for which the teacher is not certified (teaching out of field) in the entity (or poverty subgroup). NULL when suppressed (`TFS`, < 10 FTE) — observed from 2022 onward (~88% of school-level rows). KNOWN ANOMALY: 2018-2021 files have no explicit suppression but carry implausibly high concentrations of literal 0 (2020: 48% of school-level rows; 2021: 18%) that almost certainly encode suppression as zero. True zeros cannot be mechanically separated, so every bronze 0 is preserved as 0.0 — treat 2018-2021 zeros with caution (school-level aggregates including 2020 are biased toward zero). Numerator of `out_of_field_fte_rate`. In this topic the 2018-2022 bronze OUTOFFIELD_FTE column carries genuine out-of-field values (unlike the sibling emergency-credentials topic, whose 2018-2021 bronze mislabels Emergency values under the same header).","valid_values":null,"example":4.2,"unit":"count","value_min":null,"value_max":null,"null_meaning":"Suppressed (`TFS`, < 10 FTE) — 2022 onward. 2018-2021 files have no suppression, so NULL does not occur there; but see the description for the 2018-2021 suppression-as-zero anomaly.","key_metric_grain_contributor":false,"metric_component":"numerator"},{"name":"out_of_field_fte_rate","type":"number","role":"metric","nullable":true,"label":"Out of Field FTE Rate","short_description":"Share of teacher FTE assigned out of field, on a 0-1 scale (out_of_field_fte / total_fte).","description":"`out_of_field_fte` / `total_fte` on a 0-1 decimal scale. Bronze publishes an integer 0-100 percent (verified range 0-100 across all years); divided by 100 per data-cleaning-standards §4. Because GOSA rounds the percent to an integer computed from unrounded FTE values, the published rate deviates from out_of_field_fte/total_fte by up to 0.0124 at entities with total_fte >= 3 (enforced within 0.015 by a quality check scoped to total_fte >= 3). At 26 tiny-FTE rows (total_fte < 3, 2018-2021 alternative programs) the published percent deviates by up to 0.57 from the rounded-FTE quotient (e.g. 1.0/1.0 published as 50%) — GOSA evidently computed those percents from unrounded FTE values; the published rate is preserved per §4b (extreme-but-conceivable, not impossible).","valid_values":null,"example":0.11,"unit":"proportion","value_min":null,"value_max":null,"null_meaning":"The bronze percentage itself was suppressed (`TFS`) — 2022 onward. The rate can be non-NULL while `out_of_field_fte` is suppressed, and vice versa — GOSA suppresses each cell independently.","key_metric_grain_contributor":false,"metric_component":null}],"key_metric":"out_of_field_fte_rate","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":"Cross-topic lineage caveat: the sibling emergency-credentials topic's 2018-2021 bronze files re-use the column headers OUTOFFIELD_FTE / OUTOFFIELD_FTE_PCT for Emergency-credential values (its 2021 state total is 9,796.9). THIS topic's bronze is the genuine out-of-field report (2021 state total 6,281.9) — do not reconcile the two by column name. Suppression is era-asymmetric: 2018-2021 files contain no TFS markers at all, while 2022 onward suppress values below 10 with TFS (treat NULL as 'value < 10' for 2022+; NULL does not occur before 2022). KNOWN ANOMALY: 2018-2021 out_of_field_fte carries implausibly many literal zeros (48% of 2020 school rows) that almost certainly encode suppression as 0; all zeros are preserved per bronze fidelity and consumers must handle 2018-2021 zeros explicitly. The FTE denominator has scope shifts: the 2019 file reports a ~37% broader teacher population at every detail level, and the 2018 file mixes scopes ACROSS levels (school rows broad — statewide school-row total_fte sums to 157,557.3 — while district and state rows are narrow, state row 118,009.1), so 2018 school rows do NOT sum to their district or state aggregates. The source publishes only district/school NAMES, so codes are resolved by name against the education dimensions via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, guarded matching); rows that cannot be resolved are dropped only under documented predicates — redundant 2023 truncated charter-container aggregates and cataloged source gaps — with per-year counts in the transform manifest. State rows have NULL district_code and school_code; district rows have NULL school_code.","null_semantics":{"suppressed_to_null":true,"zero_is_real":true},"available_years":[2018,2019,2020,2021,2022,2023,2024],"schema_hash":"35a0950217777a14172f8158bc092343fe305e6e0558fd83a6ce487a3203db8f","tags":["education","governor's office of student achievement","educator_qualifications_out_of_field_teachers"],"granularity_description":"One row per year, district_code, school_code, poverty_subgroup (geography columns are NULL at higher aggregation levels).","example_queries":[{"description":"Latest year (2024), schools detail","query":"SELECT * FROM educator_qualifications_out_of_field_teachers WHERE year = 2024 LIMIT 100"},{"description":"District 601 in 2024","query":"SELECT * FROM educator_qualifications_out_of_field_teachers WHERE district_code = '601' AND year = 2024 LIMIT 100"},{"description":"Filter by poverty_subgroup = total","query":"SELECT * FROM educator_qualifications_out_of_field_teachers WHERE poverty_subgroup = 'total' 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":"poverty_subgroup","kind":"categorical","column":"poverty_subgroup","type":"string","multi_value":true,"enum_enforced":true,"values":["high_poverty","low_poverty","total"],"has_total":true,"total_value":"total","requires_single_value":false},{"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":[]}