{
  "_about": "Shape map for every domain in mcps_consolidated.parquet (the full-fidelity EAV warehouse \u2014 audit layer). 'eav' domains melt one source record into sibling rows sharing record_id and need the pivot in example_sql; 'flat' domains are already one fact per row. dimension_metrics carry labels in value_text (value is null); fact_metrics map to their share of rows with a numeric value (the rest are suppressed or text). Classification is mechanical, so a numeric-valued dimension (e.g. mcap's 'Grade') lands under fact_metrics \u2014 pivot it like any other. dimension_year_gaps is domain-wide; gaps scoped to one level/source (e.g. mcap 'Student Group' missing from 2019 DISTRICT records only \u2014 QUERYING.md recipe 1) do not appear here. Generated mechanically from the warehouse \u2014 regenerate, never hand-edit.",
  "source": "/data/mcps_consolidated.parquet",
  "n_domains": 43,
  "eav_domains": [
    "accountability",
    "attendance",
    "climate_survey",
    "college_readiness",
    "directory",
    "educators",
    "english_proficiency",
    "enrollment",
    "enrollment_by_grade",
    "finance",
    "graduation",
    "kindergarten_readiness",
    "mcap",
    "mcap_alt",
    "mcap_participation",
    "mobility",
    "special_services",
    "staff_roster",
    "swd_participation"
  ],
  "flat_domains": [
    "algebra2",
    "ap_ib",
    "ccr",
    "class_size",
    "dibels_lectura",
    "discipline_incidents",
    "drills",
    "enrollment_subgroup",
    "lre",
    "map_r",
    "msde_performance",
    "on_track_grad",
    "programs",
    "safety_events",
    "sat",
    "sped_ap_ib",
    "sped_diploma",
    "sped_enrollment_subgroup",
    "sped_lre",
    "sped_msde_performance",
    "sped_sat",
    "sped_staff_services",
    "staff_positions",
    "suspension_rate"
  ],
  "domains": {
    "accountability": {
      "kind": "eav",
      "row_count": 90194,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Accountability Span",
        "Additional Targeted Support and Improvement Schools",
        "Annual Target Met Flag",
        "Comprehensive Support and Improvement Schools",
        "Grade Span",
        "Improvement Flag",
        "Indicator Name",
        "Measure Name",
        "NonAssessed-Paired School",
        "SDS Span Code",
        "School Type",
        "Student Group",
        "Subject Title",
        "Summary Group Title"
      ],
      "fact_metrics": {
        "Indicator Earned Pct": 1.0,
        "Indicator Earned Points": 1.0,
        "Indicator Possible Points": 1.0,
        "Measure Earned Points": 1.0,
        "Measure Possible Points": 1.0,
        "Measure Result": 0.996,
        "Percentile Rank Elementary": 0.652,
        "Percentile Rank High": 0.13,
        "Percentile Rank Middle": 0.208,
        "Rating": 1.0,
        "School Identification Year": 1.0,
        "Total Points Earned Percentage": 0.985
      },
      "n_shapes": 7,
      "dimension_year_gaps": {
        "Additional Targeted Support and Improvement Schools": [
          2022,
          2024,
          2025
        ],
        "Comprehensive Support and Improvement Schools": [
          2022,
          2024,
          2025
        ],
        "Grade Span": [
          2019
        ],
        "Measure Name": [
          2019
        ],
        "NonAssessed-Paired School": [
          2019,
          2022,
          2023
        ],
        "Subject Title": [
          2019
        ],
        "Summary Group Title": [
          2019
        ]
      },
      "gap_note": "these dimension metrics are absent in the listed years \u2014 coalesce() them when pivoting or those vintages silently drop (the 2019 mcap 'Student Group' trap, QUERYING.md recipe 1)",
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Indicator Name' THEN value_text END) AS indicator_name,\n       max(CASE WHEN metric='Grade Span' THEN value_text END) AS grade_span,\n       max(CASE WHEN metric='Measure Name' THEN value_text END) AS measure_name,\n       max(CASE WHEN metric='Subject Title' THEN value_text END) AS subject_title,\n       max(CASE WHEN metric='Measure Earned Points' THEN value END) AS measure_earned_points,\n       max(CASE WHEN metric='Measure Possible Points' THEN value END) AS measure_possible_points,\n       max(CASE WHEN metric='Measure Result' THEN value END) AS measure_result,\n       max(CASE WHEN metric='Percentile Rank Elementary' THEN value END) AS percentile_rank_elementary\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='accountability'\nGROUP BY record_id, year"
    },
    "algebra2": {
      "kind": "flat",
      "row_count": 1143,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "group",
        "subgroup",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "percent_met": 0.951
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='algebra2' AND metric='percent_met'"
    },
    "ap_ib": {
      "kind": "flat",
      "row_count": 102,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "graduates": 0.824,
        "met_ap3_ib4": 0.824,
        "percent_met": 0.824
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='ap_ib' AND metric='graduates'"
    },
    "attendance": {
      "kind": "eav",
      "row_count": 15888,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "School Type"
      ],
      "fact_metrics": {
        "Attend Rate Pct": 0.703,
        "Chronic Absentee Cnt": 0.952,
        "Chronic Absentee Denom": 0.952,
        "Chronic Absentee Pct": 0.952,
        "Days Attended Cnt": 0.703,
        "Days Member Cnt": 0.703,
        "Fewer 5 Cnt": 0.977,
        "Fewer 5 Pct": 0.977,
        "More 20 Cnt": 0.878,
        "More 20 Pct": 0.878,
        "More 90 Member Cnt": 0.993
      },
      "n_shapes": 1,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='School Type' THEN value_text END) AS school_type,\n       max(CASE WHEN metric='Attend Rate Pct' THEN value END) AS attend_rate_pct,\n       max(CASE WHEN metric='Chronic Absentee Cnt' THEN value END) AS chronic_absentee_cnt,\n       max(CASE WHEN metric='Chronic Absentee Denom' THEN value END) AS chronic_absentee_denom,\n       max(CASE WHEN metric='Chronic Absentee Pct' THEN value END) AS chronic_absentee_pct\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='attendance'\nGROUP BY record_id, year"
    },
    "ccr": {
      "kind": "flat",
      "row_count": 2116,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "group",
        "subgroup",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "percent_met": 0.716
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='ccr' AND metric='percent_met'"
    },
    "class_size": {
      "kind": "flat",
      "row_count": 3175,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "avg_class_size": 0.506
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='class_size' AND metric='avg_class_size'"
    },
    "climate_survey": {
      "kind": "eav",
      "row_count": 92987,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Accountability Span",
        "Domain Name",
        "SDS Span Code",
        "Topic Name"
      ],
      "fact_metrics": {
        "Educator Count": 1.0,
        "Score Average": 1.0,
        "Student Count": 1.0
      },
      "n_shapes": 2,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Domain Name' THEN value_text END) AS domain_name,\n       max(CASE WHEN metric='SDS Span Code' THEN value_text END) AS sds_span_code,\n       max(CASE WHEN metric='Topic Name' THEN value_text END) AS topic_name,\n       max(CASE WHEN metric='Accountability Span' THEN value_text END) AS accountability_span,\n       max(CASE WHEN metric='Score Average' THEN value END) AS score_average,\n       max(CASE WHEN metric='Educator Count' THEN value END) AS educator_count,\n       max(CASE WHEN metric='Student Count' THEN value END) AS student_count\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='climate_survey'\nGROUP BY record_id, year"
    },
    "college_readiness": {
      "kind": "eav",
      "row_count": 17059,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "AP Subject Group",
        "Collection Type Title",
        "Student Group"
      ],
      "fact_metrics": {
        "% Exams with Grades 3-5": 0.836,
        "Composite Score Mean": 0.872,
        "English Score Mean": 0.872,
        "Enrolled Count": 0.992,
        "Enrolled Percentage": 0.992,
        "Evidence-Based Reading and Writing Score Mean": 0.939,
        "Exams per Student": 0.887,
        "Exams with Grades 3-5": 0.836,
        "Math Score Mean": 0.907,
        "Mean Grade per Exam": 0.887,
        "Number of Exams": 0.887,
        "Reading Score Mean": 0.872,
        "Science Score Mean": 0.872,
        "Student Count": 0.992,
        "Students Tested": 0.891,
        "Total Score Mean": 0.939
      },
      "n_shapes": 7,
      "dimension_year_gaps": {
        "Collection Type Title": [
          2025
        ],
        "Student Group": [
          2021
        ]
      },
      "gap_note": "these dimension metrics are absent in the listed years \u2014 coalesce() them when pivoting or those vintages silently drop (the 2019 mcap 'Student Group' trap, QUERYING.md recipe 1)",
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='AP Subject Group' THEN value_text END) AS ap_subject_group,\n       max(CASE WHEN metric='Student Group' THEN value_text END) AS student_group,\n       max(CASE WHEN metric='Collection Type Title' THEN value_text END) AS collection_type_title,\n       max(CASE WHEN metric='Students Tested' THEN value END) AS students_tested,\n       max(CASE WHEN metric='% Exams with Grades 3-5' THEN value END) AS exams_with_grades_3_5,\n       max(CASE WHEN metric='Exams per Student' THEN value END) AS exams_per_student,\n       max(CASE WHEN metric='Exams with Grades 3-5' THEN value END) AS exams_with_grades_3_5\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='college_readiness'\nGROUP BY record_id, year"
    },
    "dibels_lectura": {
      "kind": "flat",
      "row_count": 4837,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "group",
        "subgroup",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "percent_met": 0.955
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='dibels_lectura' AND metric='percent_met'"
    },
    "directory": {
      "kind": "eav",
      "row_count": 24675,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025,
        2026
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Address",
        "City",
        "Grade Span",
        "School Type",
        "State"
      ],
      "fact_metrics": {
        "Comparison Group Number": 1.0,
        "Comparison Overall": 1.0,
        "Comparison_Academic Achievement": 1.0,
        "Comparison_Academic Progress": 0.862,
        "Comparison_English Language Proficiency": 0.966,
        "Comparison_Graduation": 0.125,
        "Comparison_Readiness Postsecondary": 0.132,
        "Comparison_School Quality Student Success": 1.0,
        "NCES Number": 1.0,
        "Phone": 1.0,
        "School Overall": 1.0,
        "School Star Rating": 1.0,
        "School_Academic Achievement": 1.0,
        "School_Academic Progress": 0.862,
        "School_English Language Proficiency": 0.966,
        "School_Graduation": 0.125,
        "School_Readiness Postsecondary": 0.132,
        "School_School Quality Student Success": 1.0,
        "Zip": 1.0
      },
      "n_shapes": 5,
      "dimension_year_gaps": {
        "Grade Span": [
          2019,
          2021
        ]
      },
      "gap_note": "these dimension metrics are absent in the listed years \u2014 coalesce() them when pivoting or those vintages silently drop (the 2019 mcap 'Student Group' trap, QUERYING.md recipe 1)",
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Grade Span' THEN value_text END) AS grade_span,\n       max(CASE WHEN metric='Address' THEN value_text END) AS address,\n       max(CASE WHEN metric='City' THEN value_text END) AS city,\n       max(CASE WHEN metric='State' THEN value_text END) AS state,\n       max(CASE WHEN metric='Phone' THEN value END) AS phone,\n       max(CASE WHEN metric='Zip' THEN value END) AS zip,\n       max(CASE WHEN metric='NCES Number' THEN value END) AS nces_number,\n       max(CASE WHEN metric='Comparison Group Number' THEN value END) AS comparison_group_number\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='directory'\nGROUP BY record_id, year"
    },
    "discipline_incidents": {
      "kind": "flat",
      "row_count": 62965,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "group",
        "subgroup",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='discipline_incidents' AND metric='count'"
    },
    "drills": {
      "kind": "flat",
      "row_count": 10312,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "group",
        "subgroup",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='drills' AND metric='count'"
    },
    "educators": {
      "kind": "eav",
      "row_count": 36311,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Poverty Level",
        "Students of Color Percent"
      ],
      "fact_metrics": {
        "Educators Count": 1.0,
        "Inexperienced Educators Count": 1.0,
        "Inexperienced Educators Pct": 1.0,
        "Inexperienced Teachers Count": 1.0,
        "Inexperienced Teachers Pct": 1.0,
        "Out-of-field Teachers Count": 1.0,
        "Out-of-field Teachers Pct": 1.0,
        "Teachers Count": 1.0,
        "Teachers Teaching with Emergency or Provisional Credentials Count": 1.0,
        "Teachers Teaching with Emergency or Provisional Credentials Pct": 1.0
      },
      "n_shapes": 2,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Poverty Level' THEN value_text END) AS poverty_level,\n       max(CASE WHEN metric='Students of Color Percent' THEN value_text END) AS students_of_color_percent,\n       max(CASE WHEN metric='Educators Count' THEN value END) AS educators_count,\n       max(CASE WHEN metric='Inexperienced Educators Count' THEN value END) AS inexperienced_educators_count,\n       max(CASE WHEN metric='Inexperienced Educators Pct' THEN value END) AS inexperienced_educators_pct,\n       max(CASE WHEN metric='Inexperienced Teachers Count' THEN value END) AS inexperienced_teachers_count\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='educators'\nGROUP BY record_id, year"
    },
    "english_proficiency": {
      "kind": "eav",
      "row_count": 9930,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "School Name",
        "Student Group"
      ],
      "fact_metrics": {
        "Proficient Count": 0.469,
        "Proficient Percent": 0.469,
        "Tested Count": 0.732
      },
      "n_shapes": 2,
      "dimension_year_gaps": {
        "School Name": [
          2019
        ]
      },
      "gap_note": "these dimension metrics are absent in the listed years \u2014 coalesce() them when pivoting or those vintages silently drop (the 2019 mcap 'Student Group' trap, QUERYING.md recipe 1)",
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Student Group' THEN value_text END) AS student_group,\n       max(CASE WHEN metric='School Name' THEN value_text END) AS school_name,\n       max(CASE WHEN metric='Proficient Count' THEN value END) AS proficient_count,\n       max(CASE WHEN metric='Proficient Percent' THEN value END) AS proficient_percent,\n       max(CASE WHEN metric='Tested Count' THEN value END) AS tested_count\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='english_proficiency'\nGROUP BY record_id, year"
    },
    "enrollment": {
      "kind": "eav",
      "row_count": 20466,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025,
        2026
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Grade",
        "Race"
      ],
      "fact_metrics": {
        "Enrolled Count": 0.844
      },
      "n_shapes": 2,
      "dimension_year_gaps": {
        "Grade": [
          2021,
          2022,
          2023,
          2024,
          2025,
          2026
        ],
        "Race": [
          2019
        ]
      },
      "gap_note": "these dimension metrics are absent in the listed years \u2014 coalesce() them when pivoting or those vintages silently drop (the 2019 mcap 'Student Group' trap, QUERYING.md recipe 1)",
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Race' THEN value_text END) AS race,\n       max(CASE WHEN metric='Grade' THEN value_text END) AS grade,\n       max(CASE WHEN metric='Enrolled Count' THEN value END) AS enrolled_count\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='enrollment'\nGROUP BY record_id, year"
    },
    "enrollment_by_grade": {
      "kind": "eav",
      "row_count": 24183,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2021,
        2022,
        2023,
        2024,
        2025,
        2026
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "grade",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Grade"
      ],
      "fact_metrics": {
        "Enrolled Count": 0.967,
        "count": 1.0,
        "percent": 1.0
      },
      "n_shapes": 1,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Grade' THEN value_text END) AS grade,\n       max(CASE WHEN metric='Enrolled Count' THEN value END) AS enrolled_count,\n       max(CASE WHEN metric='count' THEN value END) AS count,\n       max(CASE WHEN metric='percent' THEN value END) AS percent\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='enrollment_by_grade'\nGROUP BY record_id, year"
    },
    "enrollment_subgroup": {
      "kind": "flat",
      "row_count": 28845,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "group",
        "subgroup",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "percent": 0.422
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='enrollment_subgroup' AND metric='percent'"
    },
    "finance": {
      "kind": "eav",
      "row_count": 3758,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "School Comment"
      ],
      "fact_metrics": {
        "Federal Amount": 1.0,
        "State/Local Amount": 1.0,
        "Total Amount": 1.0
      },
      "n_shapes": 2,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='School Comment' THEN value_text END) AS school_comment,\n       max(CASE WHEN metric='Federal Amount' THEN value END) AS federal_amount,\n       max(CASE WHEN metric='State/Local Amount' THEN value END) AS state_local_amount,\n       max(CASE WHEN metric='Total Amount' THEN value END) AS total_amount\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='finance'\nGROUP BY record_id, year"
    },
    "graduation": {
      "kind": "eav",
      "row_count": 11452,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Cohort"
      ],
      "fact_metrics": {
        "Adjusted Cohort Count": 0.9,
        "CTE Requirements Count": 0.137,
        "CTE Requirements Pct": 0.137,
        "Certificate Count": 0.016,
        "Certificate Pct": 0.016,
        "Diploma Count": 0.016,
        "Diploma Pct": 0.016,
        "Diplomas Earned": 0.606,
        "Dropout Rate": 0.291,
        "Dropout Rate Denom": 0.291,
        "Dropout Rate Numer": 0.291,
        "Dropouts": 0.668,
        "Four Year Adjusted Cohort Dropout Rate": 0.668,
        "Grad Rate": 0.606,
        "Grade": 1.0,
        "Met Rigorous Indicator Count": 0.857,
        "Met Rigorous Indicator Pct": 0.857,
        "Non-Promotion Rate": 0.731,
        "Number Not Promoted": 0.731,
        "Number Promoted": 0.731,
        "Promotion Rate": 0.731,
        "Rigorous Foreign Language Count": 0.89,
        "Rigorous Foreign Language Pct": 0.89,
        "Rigorous GPA Count": 0.912,
        "Rigorous GPA Pct": 0.912,
        "Rigorous Math Count": 0.885,
        "Rigorous Math Pct": 0.885,
        "Rigorous SAT OR ACT Count": 0.808,
        "Rigorous SAT OR ACT Pct": 0.808,
        "Rigorous Science Count": 0.863,
        "Rigorous Science Pct": 0.863,
        "Rigorous Tech Ed Count": 0.0,
        "Rigorous Tech Ed Pct": 0.0,
        "Total HS Completers": 0.918,
        "Total Students Enrolled": 0.731,
        "USM Requirements Count": 0.885,
        "USM Requirements Pct": 0.885,
        "USM and CTE Requirements Count": 0.648,
        "USM and CTE Requirements Pct": 0.648
      },
      "n_shapes": 5,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Cohort' THEN value_text END) AS cohort,\n       max(CASE WHEN metric='Grade' THEN value END) AS grade,\n       max(CASE WHEN metric='Non-Promotion Rate' THEN value END) AS non_promotion_rate,\n       max(CASE WHEN metric='Number Not Promoted' THEN value END) AS number_not_promoted,\n       max(CASE WHEN metric='Number Promoted' THEN value END) AS number_promoted\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='graduation'\nGROUP BY record_id, year"
    },
    "kindergarten_readiness": {
      "kind": "eav",
      "row_count": 5333,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2022,
        2023,
        2024,
        2026
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Assessment",
        "Student Group",
        "Test Type",
        "Type"
      ],
      "fact_metrics": {
        "Beginning Pct": 0.847,
        "Demonstrating Count": 0.798,
        "Demonstrating Pct": 0.798,
        "Developing Pct": 0.816,
        "Established Pct": 0.858,
        "High Risk Pct": 0.404,
        "Low Risk Pct": 0.954,
        "Participant Count": 0.954,
        "Some Risk Pct": 0.921,
        "Tested Count": 0.83
      },
      "n_shapes": 4,
      "dimension_year_gaps": {
        "Assessment": [
          2023,
          2024,
          2026
        ],
        "Test Type": [
          2022,
          2023,
          2024
        ],
        "Type": [
          2022,
          2023,
          2024
        ]
      },
      "gap_note": "these dimension metrics are absent in the listed years \u2014 coalesce() them when pivoting or those vintages silently drop (the 2019 mcap 'Student Group' trap, QUERYING.md recipe 1)",
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Student Group' THEN value_text END) AS student_group,\n       max(CASE WHEN metric='Test Type' THEN value_text END) AS test_type,\n       max(CASE WHEN metric='Type' THEN value_text END) AS type,\n       max(CASE WHEN metric='Assessment' THEN value_text END) AS assessment,\n       max(CASE WHEN metric='Tested Count' THEN value END) AS tested_count,\n       max(CASE WHEN metric='Demonstrating Count' THEN value END) AS demonstrating_count,\n       max(CASE WHEN metric='Demonstrating Pct' THEN value END) AS demonstrating_pct,\n       max(CASE WHEN metric='Beginning Pct' THEN value END) AS beginning_pct\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='kindergarten_readiness'\nGROUP BY record_id, year"
    },
    "lre": {
      "kind": "flat",
      "row_count": 2552,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "subgroup",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "percent": 0.606
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='lre' AND metric='percent'"
    },
    "map_r": {
      "kind": "flat",
      "row_count": 4841,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "group",
        "subgroup",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "percent_met": 0.977
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='map_r' AND metric='percent_met'"
    },
    "mcap": {
      "kind": "eav",
      "row_count": 1303838,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025,
        2026
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "group",
        "subgroup",
        "grade",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Assessment",
        "Student Group"
      ],
      "fact_metrics": {
        "Grade": 1.0,
        "Level 1 Pct": 0.474,
        "Level 2 Pct": 0.621,
        "Level 3 Pct": 0.541,
        "Level 4 Pct": 0.207,
        "Level 5 Pct": 0.533,
        "Pass Count": 0.938,
        "Pass Pct": 0.938,
        "Proficient Count": 0.663,
        "Proficient Pct": 0.527,
        "Tested Count": 0.69,
        "count": 1.0,
        "percent_met": 0.85
      },
      "n_shapes": 10,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Assessment' THEN value_text END) AS assessment,\n       max(CASE WHEN metric='Student Group' THEN value_text END) AS student_group,\n       max(CASE WHEN metric='Proficient Pct' THEN value END) AS proficient_pct,\n       max(CASE WHEN metric='Level 2 Pct' THEN value END) AS level_2_pct,\n       max(CASE WHEN metric='Level 3 Pct' THEN value END) AS level_3_pct,\n       max(CASE WHEN metric='Level 1 Pct' THEN value END) AS level_1_pct\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='mcap'\nGROUP BY record_id, year"
    },
    "mcap_alt": {
      "kind": "eav",
      "row_count": 40797,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025,
        2026
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Assessment",
        "Student Group"
      ],
      "fact_metrics": {
        "Grade": 0.143,
        "Level 1 Pct": 0.21,
        "Level 2 Pct": 0.206,
        "Level 3 Pct": 0.128,
        "Level 4 Pct": 0.064,
        "Proficient Count": 0.181,
        "Proficient Pct": 0.181,
        "Tested Count": 0.213
      },
      "n_shapes": 5,
      "dimension_year_gaps": {
        "Student Group": [
          2019
        ]
      },
      "gap_note": "these dimension metrics are absent in the listed years \u2014 coalesce() them when pivoting or those vintages silently drop (the 2019 mcap 'Student Group' trap, QUERYING.md recipe 1)",
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Assessment' THEN value_text END) AS assessment,\n       max(CASE WHEN metric='Student Group' THEN value_text END) AS student_group,\n       max(CASE WHEN metric='Level 1 Pct' THEN value END) AS level_1_pct,\n       max(CASE WHEN metric='Level 2 Pct' THEN value END) AS level_2_pct,\n       max(CASE WHEN metric='Level 3 Pct' THEN value END) AS level_3_pct,\n       max(CASE WHEN metric='Proficient Count' THEN value END) AS proficient_count\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='mcap_alt'\nGROUP BY record_id, year"
    },
    "mcap_participation": {
      "kind": "eav",
      "row_count": 356929,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2021,
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Assessment",
        "Student Group"
      ],
      "fact_metrics": {
        "Alternate Assessment Participant Pct": 0.087,
        "Count of recently arrived English learners exempted from the ELA assessment": 0.027,
        "General Assessment Participant Pct": 0.188,
        "Total Non-Participant Pct": 0.099,
        "Total Participant Pct": 0.099
      },
      "n_shapes": 2,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Assessment' THEN value_text END) AS assessment,\n       max(CASE WHEN metric='Student Group' THEN value_text END) AS student_group,\n       max(CASE WHEN metric='Alternate Assessment Participant Pct' THEN value END) AS alternate_assessment_participant_pct,\n       max(CASE WHEN metric='General Assessment Participant Pct' THEN value END) AS general_assessment_participant_pct,\n       max(CASE WHEN metric='Total Non-Participant Pct' THEN value END) AS total_non_participant_pct,\n       max(CASE WHEN metric='Total Participant Pct' THEN value END) AS total_participant_pct\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='mcap_participation'\nGROUP BY record_id, year"
    },
    "mobility": {
      "kind": "eav",
      "row_count": 10592,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "School Type"
      ],
      "fact_metrics": {
        "Average Daily Member Count": 0.826,
        "Entrants Count": 0.311,
        "Entrants Rate": 0.311,
        "Mobility Count": 0.824,
        "Mobility Rate": 0.824,
        "Withdrawals Count": 0.561,
        "Withdrawals Rate": 0.561
      },
      "n_shapes": 1,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='School Type' THEN value_text END) AS school_type,\n       max(CASE WHEN metric='Average Daily Member Count' THEN value END) AS average_daily_member_count,\n       max(CASE WHEN metric='Entrants Count' THEN value END) AS entrants_count,\n       max(CASE WHEN metric='Entrants Rate' THEN value END) AS entrants_rate,\n       max(CASE WHEN metric='Mobility Count' THEN value END) AS mobility_count\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='mobility'\nGROUP BY record_id, year"
    },
    "msde_performance": {
      "kind": "flat",
      "row_count": 5223,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "rate": 0.505
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='msde_performance' AND metric='rate'"
    },
    "on_track_grad": {
      "kind": "flat",
      "row_count": 1236,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "group",
        "subgroup",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "percent_met": 0.855
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='on_track_grad' AND metric='percent_met'"
    },
    "programs": {
      "kind": "flat",
      "row_count": 5437,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "school_type",
        "group",
        "subgroup",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "program_offered": 1.0
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='programs' AND metric='program_offered'"
    },
    "safety_events": {
      "kind": "flat",
      "row_count": 51114,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "group",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='safety_events' AND metric='count'"
    },
    "sat": {
      "kind": "flat",
      "row_count": 341,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "pct_tested": 1.0,
        "score": 0.914
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='sat' AND metric='score'"
    },
    "special_services": {
      "kind": "eav",
      "row_count": 36546,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2021,
        2022,
        2023,
        2024,
        2025,
        2026
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "School Type"
      ],
      "fact_metrics": {
        "Ada504 Cnt": 0.269,
        "Ada504 Pct": 0.269,
        "Economically Disadvantaged Cnt": 0.889,
        "Economically Disadvantaged Pct": 0.889,
        "FARMS Cnt": 0.937,
        "FARMS Pct": 0.937,
        "Foster Care Cnt": 0.0,
        "Foster Care Pct": 0.0,
        "Gifted Talented Cnt": 0.721,
        "Gifted Talented Pct": 0.721,
        "Homeless Cnt": 0.001,
        "Homeless Pct": 0.001,
        "Migrant Cnt": 0.0,
        "Migrant Pct": 0.0,
        "Military Connected Cnt": 0.002,
        "Military Connected Pct": 0.002,
        "Multilingual Learner Cnt": 0.879,
        "Multilingual Learner Pct": 0.879,
        "Students with Disabilities Cnt": 0.93,
        "Students with Disabilities Pct": 0.93,
        "Title1 Cnt": 0.012,
        "Title1 Pct": 0.012,
        "Total Student Cnt": 0.972
      },
      "n_shapes": 2,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='School Type' THEN value_text END) AS school_type,\n       max(CASE WHEN metric='Ada504 Cnt' THEN value END) AS ada504_cnt,\n       max(CASE WHEN metric='Ada504 Pct' THEN value END) AS ada504_pct,\n       max(CASE WHEN metric='Economically Disadvantaged Cnt' THEN value END) AS economically_disadvantaged_cnt,\n       max(CASE WHEN metric='Economically Disadvantaged Pct' THEN value END) AS economically_disadvantaged_pct\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='special_services'\nGROUP BY record_id, year"
    },
    "sped_ap_ib": {
      "kind": "flat",
      "row_count": 234,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2022,
        2023,
        2024
      ],
      "id_columns": [
        "source",
        "dataset",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "graduates": 1.0,
        "met_ap3_ib4": 1.0,
        "percent_met": 0.756
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='sped_ap_ib' AND metric='graduates'"
    },
    "sped_diploma": {
      "kind": "flat",
      "row_count": 500,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2022,
        2023,
        2024
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "subgroup",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "percent": 0.787
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='sped_diploma' AND metric='percent'"
    },
    "sped_enrollment_subgroup": {
      "kind": "flat",
      "row_count": 22477,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "group",
        "subgroup",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "percent": 0.683
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='sped_enrollment_subgroup' AND metric='percent'"
    },
    "sped_lre": {
      "kind": "flat",
      "row_count": 2552,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "subgroup",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "percent": 0.551
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='sped_lre' AND metric='percent'"
    },
    "sped_msde_performance": {
      "kind": "flat",
      "row_count": 4163,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2022,
        2023,
        2024
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "rate": 0.531
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='sped_msde_performance' AND metric='rate'"
    },
    "sped_sat": {
      "kind": "flat",
      "row_count": 324,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2022,
        2023,
        2024
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "category",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "pct_tested": 1.0,
        "score": 1.0
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='sped_sat' AND metric='score'"
    },
    "sped_staff_services": {
      "kind": "flat",
      "row_count": 1191,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "group",
        "subgroup",
        "year"
      ],
      "dimension_metrics": [
        "service_offered"
      ],
      "fact_metrics": {
        "fte": 1.0
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='sped_staff_services' AND metric='fte'"
    },
    "staff_positions": {
      "kind": "flat",
      "row_count": 23859,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "group",
        "subgroup",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "staff_count": 1.0
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='staff_positions' AND metric='staff_count'"
    },
    "staff_roster": {
      "kind": "eav",
      "row_count": 594181,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2019,
        2022,
        2023,
        2024,
        2025,
        2026
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "1st Subject",
        "2nd Subject",
        "3rd Subject",
        "4th Subject",
        "5th Subject",
        "6th Subject",
        "Degree",
        "Location",
        "Position",
        "Type of Experience (New Hires)",
        "Where Previously Employed (New Hires)"
      ],
      "fact_metrics": {
        "Years Experience": 1.0
      },
      "n_shapes": 22,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Location' THEN value_text END) AS location,\n       max(CASE WHEN metric='Position' THEN value_text END) AS position,\n       max(CASE WHEN metric='Degree' THEN value_text END) AS degree,\n       max(CASE WHEN metric='1st Subject' THEN value_text END) AS 1st_subject,\n       max(CASE WHEN metric='Years Experience' THEN value END) AS years_experience\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='staff_roster'\nGROUP BY record_id, year"
    },
    "suspension_rate": {
      "kind": "flat",
      "row_count": 23702,
      "grain": "one row per school x year x metric \u2014 filter, no pivot needed",
      "years": [
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "school_type",
        "population",
        "group",
        "subgroup",
        "year"
      ],
      "dimension_metrics": [],
      "fact_metrics": {
        "count": 1.0,
        "pct_suspended": 0.635
      },
      "example_sql": "-- no pivot needed: each row is already one fact\nSELECT school_code_str, year, population, subgroup, category, value\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='suspension_rate' AND metric='pct_suspended'"
    },
    "swd_participation": {
      "kind": "eav",
      "row_count": 12070,
      "grain": "one source record melts into sibling rows sharing record_id \u2014 pivot with GROUP BY record_id",
      "years": [
        2022,
        2023,
        2024,
        2025
      ],
      "id_columns": [
        "source",
        "dataset",
        "level",
        "category",
        "year"
      ],
      "dimension_metrics": [
        "Assessment",
        "Student Group"
      ],
      "fact_metrics": {
        "Count Participating in Regular Assessments": 0.891,
        "Count Provided with Accommodations": 0.633,
        "Percent Provided Accommodations": 0.633
      },
      "n_shapes": 1,
      "example_sql": "SELECT year,\n       max(CASE WHEN metric='Assessment' THEN value_text END) AS assessment,\n       max(CASE WHEN metric='Student Group' THEN value_text END) AS student_group,\n       max(CASE WHEN metric='Count Participating in Regular Assessments' THEN value END) AS count_participating_in_regular_assessments,\n       max(CASE WHEN metric='Count Provided with Accommodations' THEN value END) AS count_provided_with_accommodations,\n       max(CASE WHEN metric='Percent Provided Accommodations' THEN value END) AS percent_provided_accommodations\nFROM read_parquet('https://mocoparents.org/data/mcps_consolidated.parquet')\nWHERE domain='swd_participation'\nGROUP BY record_id, year"
    }
  }
}
