Descriptor Mapping

Introduction

This section discusses descriptor mapping, which is an essential part of the Analytics Middle Tier setup and configuration. The instructions below can be followed immediately after installation and/or revisited at any time in the future.

Some views in the Analytics Middle Tier need to filter data by a string value. For example, a query on the attendance events table looking only for the excused absences uses a string value to represent the concept of excused absences. This is because the Ed-Fi ODS database provides enumerations such as "Excused Absence" and "Unexcused Absence" via Ed-Fi Descriptors. Descriptors are customizable, and so each installation of the Ed-Fi ODS may have different descriptor values for the same "universal" concept. Therefore, the views cannot simply include a preset, static filter for the concepts expressed by a Descriptor value.

To get around this variability, the Analytics Middle Tier introduces a DescriptorConstant table to represent those universal values. Each installation of the Analytics Middle Tier must then map its Descriptors to the DescriptorConstants as appropriate for the situation, via the DescriptorMap table.

An example: Let's say there is a Descriptor value "Absent due to band trip". Should this be mapped to the constant "AttendanceEvent.ExcusedAbsence"? At first glance this might seem appropriate. However, it is important to know that "Excused Absence" is used to calculate attendance rates. For the purpose of an early warning system, if the student who is on a band trip should be treated the same as the student who is sitting in the classroom, then the two values should not be linked via the DescriptorMap table. On the other hand, a Descriptor value of "Excused absence" really should be mapped to the constant AttendanceEvent.ExcusedAbsence.

For Data Standard v2.2 support, there is similarly a TypeMap table for queries that must refer to the various "Type" tables. In theory, the "Type" tables were supposed to be universal; in practice they were not, which is why they were removed from Data Standard v3.x.

List of Descriptor Constants

ConstantName

Collection

Purpose

Address.Home BaseLooking up ContactPerson's Home address.
Address.Mailing BaseLooking up ContactPerson's Mailing address.
Address.Physical BaseLooking up ContactPerson's Physical address.
Address.TemporaryBaseLooking up ContactPerson's Temporary address.
Address.Work BaseLooking up ContactPerson's Work address.
Email.Personal BaseLooking up ContactPerson's home or personal e-mail address.
Email.WorkBaseLooking up ContactPerson's work e-mail address.  
Foodservice.FullPriceBaseDetermines if a student is eligible for school food service.
TelephoneNumber.HomeBaseLooking up ContactPerson's Home phone number.
TelephoneNumber.MobileBaseLooking up ContactPerson's Mobile phone number.
TelephoneNumber.WorkBaseLooking up ContactPerson's Work phone number.
AttendanceEvent.ExcusedAbsenceEWS

Looking up student attendance events (either section or school related) that should be treated as an "Excused Absences" in an Early Warning System.

As an example, an Ed-Fi installation might have an attendance event descriptor value of "Field Trip". When calculating attendance in the Early Warning System Collection, should the student be counted as absent or present on that day? If treated an Excused Absence, then the student's attendance rate will go down for every field trip. This is probably not the desired effect. Therefore "Field Trip" would b e mapped to "AttendanceEvent.IsPresent" instead of "AttendanceEvent.ExcusedAbsence."

AttendanceEvent.UnexcusedAbsenceEWSLooking up student attendance events that should be treated as "Unexcused Absences" in an Early Warning System.
AttendanceEvent.TardyEWSLooking up student attendance events that should be treated as "Tardy" in an Early Warning System.
AttendanceEvent.IsPresentEWS

Looking up student attendance events that should be treated as "Is Present" in an Early Warning System.

If the local education agency does not track "presence", instead only tracking absence events, then there would not be any descriptors to map to "IsPresent".

Behavior.StateOffenseEWSLooking up discipline incidents that are deemed state-level offenses (criminal).
Behavior.SchoolCodeOfConductOffenseEWSLooking up discipline incidents that are deemed to be violations of the school code of conduct.
InstructionalDayEWSDetermining if a given calendar event date corresponds with an instructional day.
GradingPeriodEWSLooking up the Grade records by the most granular period, which by default is "Grading Period". Some implementations might instead use terms like "Quarter" or "Six Weeks".
AuthorizationScope.SectionRLSSupports creation of row-level authorization data.
AuthorizationScope.SchoolRLSSupports creation of row-level authorization data.
AuthorizationScope.DistrictRLSSupports creation of row-level authorization data.

Default Mappings

The installation process will attempt to install the following mappings by default. If the descriptor (or type value in v2.2) does not exist, then the installation tool will ignore it. For example, if your installation does not have a school food service descriptor with code value "FullPrice", then the default mapping of "FullPrice" will be ignored.

Data Standard v3.x

DescriptorConstant.ConstantNameDescriptor.CodeValue
Address.HomeHome
Address.PhysicalPhysical
Address.MailingMailing
Address.WorkWork
Address.TemporaryTemporary
Telephone.HomeHome
Telephone.MobileMobile
Telephone.WorkWork
Email.PersonalHome/Personal
Email.WorkWork
AttendanceEvent.ExcusedAbsenceExcused Absence
AttendanceEvent.UnexcusedAbsenceUnexcused Absence
AttendanceEvent.TardyTardy
AttendanceEvent.PresentIn Attendance
InstructionalDayInstructional day
InstructionalDayMake-up day
Behavior.StateOffenseState Offense
Behavior.SchoolCodeOfConductOffenseSchool Code of Conduct
GradingPeriodGrading Period
AuthorizationScope.DistrictSuperintendent
AuthorizationScope.SchoolPrincipal
AuthorizationScope.SectionTeacher

Data Standard v2.2

Descriptors

ConstantNameDescriptor TableCodeValue
Foodservice.FullPrice
FullPrice
AttendanceEvent.ExcusedAbsence
Excused Absence
AttendanceEvent.UnexcusedAbsence
Unexcused Absence
AttendanceEvent.Tardy
Tardy
AttendanceEvent.Present
In Attendance
InstructionalDayCalendarEventDescriptorInstructional day
InstructionalDayCalendarEventDescriptorMake-up day
Behavior.StateOffenseBehaviorDescriptor01 (State Offense)
Behavior.StateOffenseBehaviorDescriptor46 (Aggravated Robbery)
Behavior.SchoolCodeOfConductOffenseBehaviorDescriptor04 (School Code of Conduct)
Behavior.SchoolCodeOfConductOffenseBehaviorDescriptor21 (Violation of Student Code of Conduct)
AuthorizationScope.District
Superintendent
AuthorizationScope.School
Principal
AuthorizationScope.Section
Teacher

Types

DescriptorConstant.ConstantNameType TableCodeValue
Address.HomeAddressTypeHome
Address.PhysicalAddressTypePhysical
Address.MailingAddressTypeMailing
Address.WorkAddressTypeWork
Address.TemporaryAddressTypeTemporary
Telephone.HomeTelephoneNumberTypeHome
Telephone.MobileTelephoneNumberTypeMobile
Telephone.WorkTelephoneNumberTypeWork
Email.PersonalElectronicMailTypeHome/Personal
Email.WorkElectronicMailTypeWork
GradingPeriodGradeTypeGrading Period

Review, Manage, and Save Updates

Review each descriptor constant carefully for your installation to see if there are additional mappings or changes that should be applied. We recommend that you write changes via INSERT, UPDATE, and DELETE SQL statements — and save the file in source control or another secure location, so that you can easily recreate your mappings if you need to create a fresh ODS database / Analytics Middle Tier installation.

The samples directory in the source code repository has three SQL files that can be helpful when reviewing your mappings and trying to choose values that might be applicable in your situation:

  • For Data Standard v3.x: descriptor-maps-DS3.sql 
  • For Data Standard v2.2: descriptor-maps-DS22.sql  and type-maps.sql.

Contents