BI Project• Background Information In business since 1997, SetFocus is the global leader in selecting, training, placing, and supporting
Microsoft professionals worldwide. Through strategic relationships, SetFocus develops programs that directly source skilled professionals to meet the immediate hiring needs of its partners.
• Business Problem After each course week, an administrator uses a windows application to generate evaluations that are
sent to the students via email. Students fill out the evaluations and submit them using a web based application. The data generated by the evaluations is tracked and used to tune and improve performance in an array of areas. The main categories that are evaluated are lecture week, project week, room rental, and career development. Some of the areas that are evaluated within the main categories are instructor performance, course materials, curriculum, infrastructure, and support. A grading scale is used and a cumulative grade is given for each specific area per class session.
The primary categories currently used are:•Lecture Week•Lab Week•Final Evaluation
And the subcategories include:•Trainer•Support•Materials•Curriculum•Infrastructure/grid•Career development
The end user will be able to select a grade for each individual question on the evaluation. The scale is based on the numbers 1 though 10 with 1 being the lowest grade and 10 being the highest. N/A = 11Currently, the training and support department uses a set of reports to measure and manage performance. As part of the performance improvement initiative, the training and support department would like to build various reports and dashboards.
Terminology
Reporting period / quarterRefers to calendar quarter. All courses with evaluation date sent falling within the calendar quarter will be reported.
DatabasesTwo primary databases that will be used for the source data are:NewSFCoursesSurveyEvaluation
Source Database: SurveyEvaluation
Source Database: NewSFCourses
Identify Facts/Measures
Based on the report mockups the primary facts from the source database were identified as:
ScoreEvaluations Sent/Evaluations ReceivedComments
Identify Dimensions/Hierarchies
We first identified the major dimension hierarchy:
TrackTimeOfDaySessionCourseQuestion
Identify Dimensions/Hierarchies
Date Dimension: We developed a Date Dimension to join to the Session Dates. We only wanted the dates down to the Day level.
Stored Proc: Populate DimDate
Data Warehouse – Data Diagram
Set Focus Evaluation Datawarehouse ETL Utilizing SSIS
Master Package
Dim Session Course Package
- This dimension will be the most active dimension.- This dimension will consolidate the SF Courses database- Several lookups to the data dimension are referenced and the course end date is the primary date reference in the database.
Fact Evaluation
The fact evaluation table will be used as a counter for completed vs. uncompleted evaluations.A validation was done on SessionID which creates an error data file.
Dim Question
Fact Score
SSAS Overview• No Stress Datasource
– Uniform design– Referential Integrity
• Three Dimensions– Dim Session Course– Dim Question– Dim Date
• Two Facts– Fact Evaluation– Fact Score
DSV Diagram
Dim Session Course
Dim Date
Dimension Usage
Calculations
Solution Explorer
Summary
• Perform bulk of calcs/member in Cube– Success
• Consolidated DW = Simpler Cube– Worked well
• Phase II changes will depend on DW and Reporting needs– Phase I stable and usable as is
Reports
• Summary Drill Down Scores by Track, Time of Day, Session.
• Primary dashboard Latest week and quarter-to-date scores by track & sub-category with KPIs.
• Trainer vs. Overall Scores for a specific instructor/trainer for the current quarter compared to the overall Scores for all instructors in the same period.
• Trainer Scores for the past iterations (up to 10) for that course for that trainer .
• Trainer Date Range Evaluation scores within a date range .
• Trainer Detail Detailed report of evaluation scores on last day/night class taught.
* User should be able to access Trainer Detail report from Trainer and Trainer Date Range reports.
Summary Drill Down Report
• Developed using SSRS.• Shows [Average Score] by
track, time of day (day and evening) and session.
• Can drill down on Track. • Can collapse on Time of Day to
hide sessions.
Summary Drill Down Report
• Developed using SSRS.• Shows [Average Score] by
track, time of day (day and evening) and session.
• Can drill down on Track. • Can collapse on Time of Day to
hide sessions.
Measures].[Score] / [Measures].[Valid Scores]
[Valid Scores] is a derived fact based on the count of records with scores not null. case when [Score] is null then 0 else 1end
[Average Score] is a calculated member.
Summary Drill Down Report
• Developed using SSRS.• Shows [Average Score] by
track, time of day (day and evening) and session.
• Can drill down on Track. • Can collapse on Time of Day to
hide sessions.
Measures].[Score] / [Measures].[Valid Scores]
[Valid Scores] is a derived fact based on the count of records with scores not null. case when [Score] is null then 0 else 1end
[Average Score] is a calculated member.
Primary Dashboard
• Developed in SSRS.• Shows [Average Score] “Value”
for the latest week and quarter-to-date “QTD Value” for Track & Sub-Category “Indicator”.
• The goal is 9.2. • >= 9.2 is green
>= 9 and < 9.2 is yellow< 9 is red.
• % Responded reflects percentage of evaluations completed for the latest week and quarter-to-date.
• >= 75% is green >= 50% and < 75% is yellow < 50% is red
Trainer vs. Overall
Trainer vs. Overall
• Developed using PPS.• Tracks the [Average Score] for
a specific instructor/trainer over the current quarter compared to the overall [Average Score] for all instructors over the same period.
• Instructor is a drop-down single-select parameter.
• Current quarter is defined as the most recent quarter with data.
Trainer vs. Overall
• Developed using PPS.• Tracks the [Average Score] for
a specific instructor/trainer over the current quarter compared to the overall [Average Score] for all instructors over the same period.
• Instructor is a drop-down single-select parameter.
• Current quarter is defined as the most recent quarter with data.
Trainer Report (Sharepoint View) , sample data for Instructor AA
Objective of this report is for a trainer to see his or her past scores for a course (up to 10 in a year).
Parameters: Instructor Course
DimSessionCourseCourse & DimSessionCourseInstructor
WITH MEMBER [Measures].[ParameterCaption] AS [Dim Session Course].[CourseName].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[ParameterValue] AS [Dim Session Course].[CourseName].CURRENTMEMBER.UNIQUENAME
MEMBER [Measures].[ParameterLevel] AS [Dim Session Course].[CourseName].CURRENTMEMBER.LEVEL.ORDINAL
SELECT {[Measures].[ParameterCaption], [Measures].[ParameterValue], [Measures].[ParameterLevel]} ON COLUMNS ,
filter([Dim Session Course].[CourseName].children, sum( [LastYear], [Measures].[Average Score] ) > 0) ON ROWS
FROM ( SELECT ( STRTOSET(@DimSessionCourseInstructor, CONSTRAINED) ) ON COLUMNS FROM [SF Course Eval DW])
dsTrainer
SELECT NON EMPTY { [Measures].[Average Score] } ON COLUMNS,
NON EMPTY { tail(filter([Course End Date].[Date].[Date].ALLMEMBERS,[Measures].[Average Score] >0 ),10) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM ( SELECT ( STRTOSET(@DimSessionCourseCourse, CONSTRAINED) ) ON COLUMNS FROM ( SELECT ( STRTOSET(@DimSessionCourseInstructor, CONSTRAINED) ) ON COLUMNS FROM [SF Course Eval DW])) WHERE ( IIF( STRTOSET(@DimSessionCourseInstructor, CONSTRAINED).Count = 1, STRTOSET(@DimSessionCourseInstructor, CONSTRAINED), [Dim Session Course].[Instructor].currentmember ), IIF( STRTOSET(@DimSessionCourseCourse, CONSTRAINED).Count = 1, STRTOSET(@DimSessionCourseCourse, CONSTRAINED), [Dim Session Course].[Course].currentmember ) ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
Action Tab of Series Properties allows us to link to other SSRS reports.
In this case we allow user to see the TrainerDetail Report by selecting any of the Markers on the chart.
Trainer Date Range Report (Sharepoint View) , sample data for Instructor AA
Parameters And Datasets
Parameters: Instructor Date Range (From : To)
FromCourseEndDateDate & ToCourseEndDateDate
WITH MEMBER [Measures].[ParameterCaption] AS [Course End Date].[Date].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[ParameterValue] AS [Course End Date].[Date].CURRENTMEMBER.UNIQUENAME
MEMBER [Measures].[ParameterLevel] AS [Course End Date].[Date].CURRENTMEMBER.LEVEL.ORDINAL
SELECT {[Measures].[ParameterCaption], [Measures].[ParameterValue], [Measures].[ParameterLevel]} ON COLUMNS ,
filter([Course End Date].[Date].children,[Measures].[Average Score] > 0) ON ROWS
FROM ( SELECT ( STRTOSET(@DimSessionCourseInstructor, CONSTRAINED) ) ON COLUMNS FROM [SF Course Eval DW])
Query Designer for Dataset dsTrainerRange
Here we are able to setup the parameters as a range .
Trainer Detail Report
This report shows trainer’s evaluation scores for last class, day or night. This Report Defaults to most recent date where there was an score.
=Fields!Session.Value & " " & Fields!Course.Value & " " & Fields!Date.Value
="Instructor: " & Parameters!Instructor.Label & " “ & Sum(Fields!CompletedFlagInt.Value, "dsEvals") & " Evals/" & Sum(Fields!FactEvaluationCount.Value, "dsEvals") & " Students"
=Sum(Fields!Score.Value)/Sum(Fields!Valid_Scores.Value)
SELECT NON EMPTY { [Measures].[Average Score], [Measures].[Score] , [Measures].[Valid Scores] } ON COLUMNS,
NON EMPTY { ( [Dim Session Course].[Course].[Course].ALLMEMBERS * [Dim Session Course].[Session].[Session].ALLMEMBERS * Tail( Filter([Course End Date].[Date].[Date].ALLMEMBERS, [Measures].[Average Score] >0 ), 1) * [Dim Session Course].[Track].[Track] * [Dim Question].[Question].[Question].ALLMEMBERS * [Dim Question].[Sub Category].children ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM [SF Course Eval DW] Where (STRTOMEMBER(@Instructor) ,STRTOMEMBER(@TimeOfDay)) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
SELECT NON EMPTY { [Measures].[Fact Evaluation Count], [Measures].[Completed Flag Int] } ON COLUMNS,
NON EMPTY { ( [Dim Session Course].[Course].[Course].ALLMEMBERS * [Dim Session Course].[Session].[Session].ALLMEMBERS * Tail( Filter([Course End Date].[Date].[Date].ALLMEMBERS, [Measures].[Average Score] >0 ), 1) * [Dim Session Course].[Track].[Track] )} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM [SF Course Eval DW] Where (STRTOMEMBER(@Instructor) ,STRTOMEMBER(@TimeOfDay)) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
SELECT DimQuestion.Question, FactScore.CommentsFROM FactScore INNER JOIN DimSessionCourse ON FactScore.SessionCourseID = DimSessionCourse.SessionCourseID INNER JOIN DimQuestion ON FactScore.QuestionID = DimQuestion.QuestionID INNER JOIN DimDate ON DimSessionCourse.CourseEndDateID = DimDate.DateIDWHERE (FactScore.Comments IS NOT NULL) AND (DimSessionCourse.InstructorName = @Instructor) AND (DimSessionCourse.TimeOfDay = @DayEvening) AND (DimDate.Date = (SELECT MAX(DD.Date) AS Expr1 FROM DimDate AS DD INNER JOIN DimSessionCourse AS DSC ON DD.DateID = DSC.CourseEndDateID WHERE (DSC.InstructorName = DimSessionCourse.InstructorName)
Created a datasource to access DW relational database to extract Comments
="[Dim Session Course].[Day-Evening].[Day]"
Additional Attribute [Day-Evening] added to DimSessionCourse to declare Time of day filter .
The End
Top Related