SlideShare a Scribd company logo
Presented by: Bryan Mack
Colorado Community College System
April 7, 2014
Session ID 2502
ODS Data Sleuth
Tracking Down Calculated
Fields in Banner
Session Rules of Etiquette
• Please turn off your cell phone/pager
• If you must leave the session early, please
do so as discreetly as possible
• Please avoid side conversation during the
session
Thank you for your cooperation!
2
About CCCS
• Comprised of 13 community colleges & a
central system office
• 162K active students
• VPD/MEP environment
• ODS 8.4.1 – Streams
• BI team includes our Director, a Cognos
Admin, a DBA, and 4 developers
3
Introduction
• This presentation is technical; it involves
extending the ODS in a more involved way
than a simple ETL customization.
• The goal of the actions of this presentation
are to allow for reporting upon complex
data subjects which are not delivered to
the ODS.
4
Agenda
• Do’s and Don'ts
• Walk through of two CCCS cases
1) Using basic calculations
2) Creating new database objects
a) Composite View/Table & Reporting View +
ETL
b) Packages/Functions
5
Do’s and Don’ts
DO
Trust what the code says
DON’T
Trust what a user thinks without facts to
back it up
6
Do’s and Don’ts
DO
Use your fellow developers outside of ODS-
land. Use project managers who completely
understand your data.
DON’T
Trust what a user thinks without facts to
back it up
7
Do’s and Don’ts
DO
Use the ODS metadata,Oracle’s DBA views,
and other resources to help you track fields
down
DON’T
Trust what a user thinks without facts to
back it up
8
Case 1 – Using Basic Calculations
The Original User Request
“Hi! Can you make me a Cognos report
about employment benefits? Do you need
any more information than this? Can I have
it by tomorrow?”
9
Initial Report Requst
Ok – maybe it wasn’t that bad. Here’s the
real request:
This report will identify all optional deductions an employee
can elect during open enrollment. HR Administrators verify
the data entry with this report and run it multiple times
during open enrollment. They currently have to request
this from the PM and it has to be parsed out to the
produpdate folder for each school.
10
The Problem
This user required the END_DATE to be populated in the report. The
END_DATE is not stored in the database as it appears on the form.
It displays on the form 
There is no end date field in the table 
11
Solving The Problem
A project manager with Banner access provided us this info
from NBAJOBS regarding this field:
NBAJOBS.CANCEL_DATE
12
Discovering a Calculated Value
• As basic Banner/ODS knowledge tells us,
“CANCEL_DATE” is not a stored value
within a Banner table as the field name
does not begin with a 7-character table
name
• This indicates a calculated value.
• We must reverse-engineer this field to
reproduce the calculation in the ODS
13
The solution is obviously quite simple
Step 1: Ask the user for the calculation
behind the field. They know this 100% of
the time and will never, ever, under any
circumstances, give you an answer which
could even be misconstrued as incorrect in
any way, shape or form.
14
TRY AGAIN!
15
Tracking down a calculated field
Step 1: Ask someone with Banner form
access for the code behind the form. In this
case, the form is NBAJOBS.
16
Tracking down a calculated field
We determined the cancel_date is really the (effective_date
– 1) of another row.
When an earning code on NBAJOBS is set to end, a user
manually types in an end date into the end-date field of the
row. This then creates a new row in NBREARN (row 2) with
the effective date equal to the date they just typed in + 1.
This new “effective_date” for row 2 is stored in the
database (if the form is saved after entering the new row);
the end date which was typed in is not stored in the
database. We need to calculate the end date in the same
manner.*
*There is a bit more to it than this, but we are just going high-level in this presentation
17
Huh?
To be honest, that previous slide doesn’t matter and you
don’t need to understand it. That might be a cop out since I
barely understand it.
The point is, that logic found in the Banner packages needs
to be reproduced in the ODS.
18
Tracking down a calculated field
We can place the following code right into our report
without the need to create a database object to store the
data.
(lead(effective_date,1) over (partition by person_uid, (CASE
WHEN earn_code IN ('BDF','BDS') then 'Dental'
WHEN earn_code IN ('BHF','BHS','BEO') then 'Health'
WHEN earn_code IN ('BLS') then 'Life'
ELSE null
END)
order by effective_date asc, earn_code, active_ind desc)-1) as
end_date
19
The Point
The point to take home from this case is to
trust the code behind the Banner form rather
than to play the guessing game or use what
works in most cases. The code will work
100% of the time.
20
Case 2 – Using Database Objects
The Original User Request
The user needs to report the financial aid
field “Unmet Need”
The user reported this field to simply be:
RORSTAT_UNMET_NEED
21
Finding the field
Our first way of finding this
field is to check the metadata
to see if it is delivered to the
ODS.
Search the metadata for
RORSTAT_UNMET_NEED
It doesn’t appear to be there.
22
Finding the field
Don’t always trust the metadata, it’s best to check dba_source and/or
dba_dependencies to see where this field may be hidden in case it
has weaseled its way into the ODS:
select * from dba_dependencies where referenced_name =
'RORSTAT';
select * from dba_source where lower(text) like
'%rorstat_unmet_need%‘;
It can’t hurt to check the source code of any source views these
queries return to see if the object already exists in the ODS.
23
Finding the field
Let’s assume the last slide returned nothing. Which is a safe
assumption, because it didn’t.
We have a few options to get this into a report in the ODS:
1) Join your data directly to RORSTAT or write a function to bring this
field in directly from RORSTAT
Technically a possibility, but a bad idea to join real-time
(streamed) data to day-old ODS data
2) Create new custom versions of a composite view, composite table,
and reporting view which contain the new field you wish to report upon.
Getting warmer here, but this isn’t the real answer in this case. Why?
24
Finding the field
In my example, I set up the custom database objects to get
RORSTAT_UNMET_NEED into the ODS and thus, on the
report. That field is what the user requested, and I didn’t
listen to my own rules about backing things up with facts.
Shortly after the report was developed, we ran into this:
Total Award and Unmet Need is not displayed for most in the spreadsheet. I did find a
student who had the Total Award showing, but it was calculated incorrectly. The student
is S######## and the Total Award = EFC plus Private scholarship. The Unmet Need is
showing too. It is negative due to private scholarship. For S########, it looks like the
total offered aid and the EFC (or budget) were added together to get the Total Award
number and haven’t a clue how to guess where the Unmet Need calculated (it is negative
the whole financial aid package total).
25
So why is the data wrong?
The user requested RORSTAT_UNMET_NEED
erroneously.
Remember the rule of “don’t trust what a user thinks
without facts to back it up”. Well, I didn’t obey.
Email: “I checked them all for aid year 1213, in both PROD and TEST, and I see no
values for unmet need. Where are you getting the numbers you have on the excel sheet
you attached? Per the report request specs, I have been using rorstat_unmet_need.
I have a feeling that unmet need might be a calculated field rather than stored in the
database.”
26
Mistake #1
This case presents a bad assumption on my part.
I assumed the user was correct in suggesting we
use RORSTAT_UNMET_NEED. Thus, I wasted
much time creating a custom composite view,
composite table, and reporting view – then
creating and scheduling a new ETL refresh…. Only
to find out this was the wrong field.
27
Mistake #2
I next took the user’s word for it when given
a formula:
“We’ll have to take the Student Budget, subtract the EFC.
That will give you GROSS NEED. To get UNMET NEED
you will need to them subtract awarded aid (with the
exception of unsubsidized Stafford loans)”… etc. etc. etc.
28
Learning from Mistake #2
This still didn’t correct this issue, as we
determined “The unmet need formula he/she
gave me works only when an individual has
EFC = $0”
This is getting silly…. Let’s get this done
correctly once and for all.
29
The Solution
Work with a Banner developer to find the code
behind the form. They usually charge you a bag of
Skittles for their services. In this case, it turned out
we needed several functions out of the Banner
package RNKNEED. The final formula we derived
from this was:
(BUDGET-EFC-RESOURCES) – FUNDS THAT REDUCE
NEED – MAX[(Funds that replace EFC – EFC),0] =
UNMET NEED
30
Translating Functions
There were several functions within
RNKNEED that we needed to bring over to
the ODS for this calculation. We store them
in a package called ZRKFUNC. This mimics
the ODS package-naming scheme, only
CCCS uses “Z” as the first character for
custom packages.
31
Translating Functions
Using the delivered metadata, we are going to translate all fields in the
RNKNEED functions to use ODS fields so that data is all in synch (ODS data
mixed with current Banner data). For example, within
RNKNEED.F_CALC_CONTRACTS, there is a cursor
CALC_CONTRACT_AMT_C:
SELECT SUM(NVL(DECODE(f_calc_contract_payment(TBBCSTU_STU_PIDM,
-- 60400
TBBCSTU_CONTRACT_PIDM,
TBBCSTU_CONTRACT_NUMBER,
TBBCSTU_TERM_CODE),
'',DECODE(assume_full_time_ind_v,
Look up each banner field name in the metadata to translate to ODS fields:
32
Translating Functions
Break down the entire function this way until you’re left with
a version of the function that has replaced all Banner field
names with ODS field names.
NOTE: Your joins may change slightly based on cardinality
33
So this….. Becomes this….
SELECT ’43-8'
FROM RPRCONT,
TBBCSTU
<joins>
WHERE
NVL(TBBCSTU_DEL_IND,'X') <>
'D‘
SELECT ’43-8'
FROM mtt_contract m
WHERE
NVL(m.student_inactivated_ind,'X')
<> 'Y‘
Translating Functions
We ended up writing 12 functions in order to calculate
Unmet Need the exact way it is calculated within Banner:
f_calc_awd_reduce_need
f_calc_coa
f_calc_contracts
f_calc_gross_need
f_calc_load
f_calc_oth_resource
f_calc_pell_efc
f_calc_pell_replacement
f_calc_total_awards
f_calc_total_non_need
f_calc_total_resource
f_calc_unmet_need
34
ZRKFUNC
35
Simple Report Code
36
Select zrkfunc.f_calc_unmet_need(person_uid, aid_year,
multi_source) as unmet_need
FROM <whatever I’m selecting from>
Questions & Answers
??
37
Thank You!
Bryan Mack
Bryan.Mack@cccs.edu
Please complete the online session evaluation form
Session ID 2502
.
© 2014 Ellucian. All rights reserved.
38

More Related Content

What's hot

Object diagram
Object diagramObject diagram
@elemorfaruk
@elemorfaruk@elemorfaruk
@elemorfaruk
Elemor Faruk
 
Parameter Estimation User Guide
Parameter Estimation User GuideParameter Estimation User Guide
Parameter Estimation User GuideAndy Salmon
 
Communication Diagram
Communication DiagramCommunication Diagram
Communication Diagram
University of Texas at Dallas
 
Combinator Pattern in Java 8
Combinator Pattern in Java 8Combinator Pattern in Java 8
Combinator Pattern in Java 8
Gregor Trefs
 
Rrelational algebra in dbms overview
Rrelational algebra in dbms overviewRrelational algebra in dbms overview
Rrelational algebra in dbms overview
gourav kottawar
 
Cis 336 final exam 2
Cis 336 final exam 2Cis 336 final exam 2
Cis 336 final exam 2
prasaaanna2
 
Final project report
Final project reportFinal project report
Final project reportssuryawanshi
 
Package Diagram
Package DiagramPackage Diagram
Composite Structure Diagram
Composite Structure DiagramComposite Structure Diagram
Composite Structure Diagram
University of Texas at Dallas
 
Understanding advanced blind sqli attack
Understanding advanced blind sqli attackUnderstanding advanced blind sqli attack
Understanding advanced blind sqli attack
Nguyễn Đoàn
 
Lecture 2 - Classes, Fields, Parameters, Methods and Constructors
Lecture 2 - Classes, Fields, Parameters, Methods and ConstructorsLecture 2 - Classes, Fields, Parameters, Methods and Constructors
Lecture 2 - Classes, Fields, Parameters, Methods and Constructors
Syed Afaq Shah MACS CP
 
FP304 DATABASE SYSTEM PAPER FINAL EXAM AGAIN
FP304 DATABASE SYSTEM  PAPER FINAL EXAM AGAINFP304 DATABASE SYSTEM  PAPER FINAL EXAM AGAIN
FP304 DATABASE SYSTEM PAPER FINAL EXAM AGAIN
Syahriha Ruslan
 
Accessing non static members from the main
Accessing non static members from the mainAccessing non static members from the main
Accessing non static members from the main
Tutors On Net
 
C04701019027
C04701019027C04701019027
C04701019027
ijceronline
 
Murach: ASP.NET Core MVC, How To Work With Razor Views
Murach: ASP.NET Core MVC, How To Work With Razor ViewsMurach: ASP.NET Core MVC, How To Work With Razor Views
Murach: ASP.NET Core MVC, How To Work With Razor Views
MahmoudOHassouna
 
Handling SQL Server Null Values
Handling SQL Server Null ValuesHandling SQL Server Null Values
Handling SQL Server Null Values
Duncan Greaves PhD
 

What's hot (20)

Object diagram
Object diagramObject diagram
Object diagram
 
@elemorfaruk
@elemorfaruk@elemorfaruk
@elemorfaruk
 
Parameter Estimation User Guide
Parameter Estimation User GuideParameter Estimation User Guide
Parameter Estimation User Guide
 
Communication Diagram
Communication DiagramCommunication Diagram
Communication Diagram
 
Combinator Pattern in Java 8
Combinator Pattern in Java 8Combinator Pattern in Java 8
Combinator Pattern in Java 8
 
Rrelational algebra in dbms overview
Rrelational algebra in dbms overviewRrelational algebra in dbms overview
Rrelational algebra in dbms overview
 
Cis 336 final exam 2
Cis 336 final exam 2Cis 336 final exam 2
Cis 336 final exam 2
 
Final project report
Final project reportFinal project report
Final project report
 
Package Diagram
Package DiagramPackage Diagram
Package Diagram
 
Composite Structure Diagram
Composite Structure DiagramComposite Structure Diagram
Composite Structure Diagram
 
Understanding advanced blind sqli attack
Understanding advanced blind sqli attackUnderstanding advanced blind sqli attack
Understanding advanced blind sqli attack
 
Lecture 2 - Classes, Fields, Parameters, Methods and Constructors
Lecture 2 - Classes, Fields, Parameters, Methods and ConstructorsLecture 2 - Classes, Fields, Parameters, Methods and Constructors
Lecture 2 - Classes, Fields, Parameters, Methods and Constructors
 
FP304 DATABASE SYSTEM PAPER FINAL EXAM AGAIN
FP304 DATABASE SYSTEM  PAPER FINAL EXAM AGAINFP304 DATABASE SYSTEM  PAPER FINAL EXAM AGAIN
FP304 DATABASE SYSTEM PAPER FINAL EXAM AGAIN
 
Ex
ExEx
Ex
 
Accessing non static members from the main
Accessing non static members from the mainAccessing non static members from the main
Accessing non static members from the main
 
C04701019027
C04701019027C04701019027
C04701019027
 
Murach: ASP.NET Core MVC, How To Work With Razor Views
Murach: ASP.NET Core MVC, How To Work With Razor ViewsMurach: ASP.NET Core MVC, How To Work With Razor Views
Murach: ASP.NET Core MVC, How To Work With Razor Views
 
Handling SQL Server Null Values
Handling SQL Server Null ValuesHandling SQL Server Null Values
Handling SQL Server Null Values
 
Input output
Input outputInput output
Input output
 
Interaction overview & Timing diagram
Interaction overview & Timing diagramInteraction overview & Timing diagram
Interaction overview & Timing diagram
 

Similar to ODS Data Sleuth: Tracking Down Calculated Fields in Banner

DataFlowDiagram.ppt
DataFlowDiagram.pptDataFlowDiagram.ppt
DataFlowDiagram.ppt
Chinnu Chinnu
 
Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory optionStar Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
Franck Pachot
 
Sql Lab 4 Essay
Sql Lab 4 EssaySql Lab 4 Essay
Sql Lab 4 Essay
Lorie Harris
 
Week10 Analysing Client Requirements
Week10 Analysing Client RequirementsWeek10 Analysing Client Requirements
Week10 Analysing Client Requirementshapy
 
Notes how to work with variables, constants and do calculations
Notes how to work with variables, constants and do calculationsNotes how to work with variables, constants and do calculations
Notes how to work with variables, constants and do calculations
William Olivier
 
Dba2 spec
Dba2 specDba2 spec
Dba2 spec
Sandeep Ratnam
 
Dynamics gp insights to manufacturing
Dynamics gp insights to manufacturingDynamics gp insights to manufacturing
Dynamics gp insights to manufacturing
Steve Chapman
 
Sq lite module2
Sq lite module2Sq lite module2
Sq lite module2
Highervista
 
Grounded Pointers
Grounded PointersGrounded Pointers
Grounded Pointers
Andrey Karpov
 
Customer Data Cleansing Project.pptx
Customer Data Cleansing Project.pptxCustomer Data Cleansing Project.pptx
Customer Data Cleansing Project.pptx
Nat O
 
ADBMS ASSIGNMENT
ADBMS ASSIGNMENTADBMS ASSIGNMENT
ADBMS ASSIGNMENT
Lori Moore
 
1 Exploratory Data Analysis (EDA) by Melvin Ott, PhD.docx
1 Exploratory Data Analysis (EDA) by Melvin Ott, PhD.docx1 Exploratory Data Analysis (EDA) by Melvin Ott, PhD.docx
1 Exploratory Data Analysis (EDA) by Melvin Ott, PhD.docx
honey725342
 
Inventory management system
Inventory management systemInventory management system
Inventory management system
pavanwalecha
 
inventory management system
 inventory management system inventory management system
inventory management system
Barbara Onwutalobi
 
City of Lakeland - Rapid Process Improvement - Pension Claims
City of Lakeland - Rapid Process Improvement - Pension ClaimsCity of Lakeland - Rapid Process Improvement - Pension Claims
City of Lakeland - Rapid Process Improvement - Pension Claims
Jennifer Kerr, MBA
 
32 BitOrgchart for Visio Setup.msi32 Bitsetup.exe64 Bi.docx
32 BitOrgchart for Visio Setup.msi32 Bitsetup.exe64 Bi.docx32 BitOrgchart for Visio Setup.msi32 Bitsetup.exe64 Bi.docx
32 BitOrgchart for Visio Setup.msi32 Bitsetup.exe64 Bi.docx
gilbertkpeters11344
 
Using pandas library for data analysis in python
Using pandas library for data analysis in pythonUsing pandas library for data analysis in python
Using pandas library for data analysis in python
Bruce Jenks
 
208 dataflowdgm
208 dataflowdgm208 dataflowdgm
208 dataflowdgm
TCT
 
Data flow
Data flowData flow
Data flow
Hady Saeed
 

Similar to ODS Data Sleuth: Tracking Down Calculated Fields in Banner (20)

DataFlowDiagram.ppt
DataFlowDiagram.pptDataFlowDiagram.ppt
DataFlowDiagram.ppt
 
BusinessIntelligence
BusinessIntelligenceBusinessIntelligence
BusinessIntelligence
 
Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory optionStar Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
Star Transformation, 12c Adaptive Bitmap Pruning and In-Memory option
 
Sql Lab 4 Essay
Sql Lab 4 EssaySql Lab 4 Essay
Sql Lab 4 Essay
 
Week10 Analysing Client Requirements
Week10 Analysing Client RequirementsWeek10 Analysing Client Requirements
Week10 Analysing Client Requirements
 
Notes how to work with variables, constants and do calculations
Notes how to work with variables, constants and do calculationsNotes how to work with variables, constants and do calculations
Notes how to work with variables, constants and do calculations
 
Dba2 spec
Dba2 specDba2 spec
Dba2 spec
 
Dynamics gp insights to manufacturing
Dynamics gp insights to manufacturingDynamics gp insights to manufacturing
Dynamics gp insights to manufacturing
 
Sq lite module2
Sq lite module2Sq lite module2
Sq lite module2
 
Grounded Pointers
Grounded PointersGrounded Pointers
Grounded Pointers
 
Customer Data Cleansing Project.pptx
Customer Data Cleansing Project.pptxCustomer Data Cleansing Project.pptx
Customer Data Cleansing Project.pptx
 
ADBMS ASSIGNMENT
ADBMS ASSIGNMENTADBMS ASSIGNMENT
ADBMS ASSIGNMENT
 
1 Exploratory Data Analysis (EDA) by Melvin Ott, PhD.docx
1 Exploratory Data Analysis (EDA) by Melvin Ott, PhD.docx1 Exploratory Data Analysis (EDA) by Melvin Ott, PhD.docx
1 Exploratory Data Analysis (EDA) by Melvin Ott, PhD.docx
 
Inventory management system
Inventory management systemInventory management system
Inventory management system
 
inventory management system
 inventory management system inventory management system
inventory management system
 
City of Lakeland - Rapid Process Improvement - Pension Claims
City of Lakeland - Rapid Process Improvement - Pension ClaimsCity of Lakeland - Rapid Process Improvement - Pension Claims
City of Lakeland - Rapid Process Improvement - Pension Claims
 
32 BitOrgchart for Visio Setup.msi32 Bitsetup.exe64 Bi.docx
32 BitOrgchart for Visio Setup.msi32 Bitsetup.exe64 Bi.docx32 BitOrgchart for Visio Setup.msi32 Bitsetup.exe64 Bi.docx
32 BitOrgchart for Visio Setup.msi32 Bitsetup.exe64 Bi.docx
 
Using pandas library for data analysis in python
Using pandas library for data analysis in pythonUsing pandas library for data analysis in python
Using pandas library for data analysis in python
 
208 dataflowdgm
208 dataflowdgm208 dataflowdgm
208 dataflowdgm
 
Data flow
Data flowData flow
Data flow
 

More from Bryan L. Mack

Custom Star Creation for Ellucain's Enterprise Data Warehouse
Custom Star Creation for Ellucain's Enterprise Data WarehouseCustom Star Creation for Ellucain's Enterprise Data Warehouse
Custom Star Creation for Ellucain's Enterprise Data Warehouse
Bryan L. Mack
 
Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Perform...
Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Perform...Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Perform...
Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Perform...
Bryan L. Mack
 
Oracle's Listagg Function - Uses and Duplicate Removal
Oracle's Listagg Function - Uses and Duplicate RemovalOracle's Listagg Function - Uses and Duplicate Removal
Oracle's Listagg Function - Uses and Duplicate Removal
Bryan L. Mack
 
EDW PK Violation Troubleshooting Made Easy
EDW PK Violation Troubleshooting Made EasyEDW PK Violation Troubleshooting Made Easy
EDW PK Violation Troubleshooting Made Easy
Bryan L. Mack
 
SRP Implementation Success in a Complex Environment
SRP Implementation Success in a Complex EnvironmentSRP Implementation Success in a Complex Environment
SRP Implementation Success in a Complex Environment
Bryan L. Mack
 
Oracle's ListAgg Function & Pertinent Use
Oracle's ListAgg Function & Pertinent UseOracle's ListAgg Function & Pertinent Use
Oracle's ListAgg Function & Pertinent Use
Bryan L. Mack
 

More from Bryan L. Mack (6)

Custom Star Creation for Ellucain's Enterprise Data Warehouse
Custom Star Creation for Ellucain's Enterprise Data WarehouseCustom Star Creation for Ellucain's Enterprise Data Warehouse
Custom Star Creation for Ellucain's Enterprise Data Warehouse
 
Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Perform...
Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Perform...Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Perform...
Extending the Admin UI: Proactively Preventing Poor BPRA Load/Refresh Perform...
 
Oracle's Listagg Function - Uses and Duplicate Removal
Oracle's Listagg Function - Uses and Duplicate RemovalOracle's Listagg Function - Uses and Duplicate Removal
Oracle's Listagg Function - Uses and Duplicate Removal
 
EDW PK Violation Troubleshooting Made Easy
EDW PK Violation Troubleshooting Made EasyEDW PK Violation Troubleshooting Made Easy
EDW PK Violation Troubleshooting Made Easy
 
SRP Implementation Success in a Complex Environment
SRP Implementation Success in a Complex EnvironmentSRP Implementation Success in a Complex Environment
SRP Implementation Success in a Complex Environment
 
Oracle's ListAgg Function & Pertinent Use
Oracle's ListAgg Function & Pertinent UseOracle's ListAgg Function & Pertinent Use
Oracle's ListAgg Function & Pertinent Use
 

Recently uploaded

Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 

Recently uploaded (20)

Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 

ODS Data Sleuth: Tracking Down Calculated Fields in Banner

  • 1. Presented by: Bryan Mack Colorado Community College System April 7, 2014 Session ID 2502 ODS Data Sleuth Tracking Down Calculated Fields in Banner
  • 2. Session Rules of Etiquette • Please turn off your cell phone/pager • If you must leave the session early, please do so as discreetly as possible • Please avoid side conversation during the session Thank you for your cooperation! 2
  • 3. About CCCS • Comprised of 13 community colleges & a central system office • 162K active students • VPD/MEP environment • ODS 8.4.1 – Streams • BI team includes our Director, a Cognos Admin, a DBA, and 4 developers 3
  • 4. Introduction • This presentation is technical; it involves extending the ODS in a more involved way than a simple ETL customization. • The goal of the actions of this presentation are to allow for reporting upon complex data subjects which are not delivered to the ODS. 4
  • 5. Agenda • Do’s and Don'ts • Walk through of two CCCS cases 1) Using basic calculations 2) Creating new database objects a) Composite View/Table & Reporting View + ETL b) Packages/Functions 5
  • 6. Do’s and Don’ts DO Trust what the code says DON’T Trust what a user thinks without facts to back it up 6
  • 7. Do’s and Don’ts DO Use your fellow developers outside of ODS- land. Use project managers who completely understand your data. DON’T Trust what a user thinks without facts to back it up 7
  • 8. Do’s and Don’ts DO Use the ODS metadata,Oracle’s DBA views, and other resources to help you track fields down DON’T Trust what a user thinks without facts to back it up 8
  • 9. Case 1 – Using Basic Calculations The Original User Request “Hi! Can you make me a Cognos report about employment benefits? Do you need any more information than this? Can I have it by tomorrow?” 9
  • 10. Initial Report Requst Ok – maybe it wasn’t that bad. Here’s the real request: This report will identify all optional deductions an employee can elect during open enrollment. HR Administrators verify the data entry with this report and run it multiple times during open enrollment. They currently have to request this from the PM and it has to be parsed out to the produpdate folder for each school. 10
  • 11. The Problem This user required the END_DATE to be populated in the report. The END_DATE is not stored in the database as it appears on the form. It displays on the form  There is no end date field in the table  11
  • 12. Solving The Problem A project manager with Banner access provided us this info from NBAJOBS regarding this field: NBAJOBS.CANCEL_DATE 12
  • 13. Discovering a Calculated Value • As basic Banner/ODS knowledge tells us, “CANCEL_DATE” is not a stored value within a Banner table as the field name does not begin with a 7-character table name • This indicates a calculated value. • We must reverse-engineer this field to reproduce the calculation in the ODS 13
  • 14. The solution is obviously quite simple Step 1: Ask the user for the calculation behind the field. They know this 100% of the time and will never, ever, under any circumstances, give you an answer which could even be misconstrued as incorrect in any way, shape or form. 14
  • 16. Tracking down a calculated field Step 1: Ask someone with Banner form access for the code behind the form. In this case, the form is NBAJOBS. 16
  • 17. Tracking down a calculated field We determined the cancel_date is really the (effective_date – 1) of another row. When an earning code on NBAJOBS is set to end, a user manually types in an end date into the end-date field of the row. This then creates a new row in NBREARN (row 2) with the effective date equal to the date they just typed in + 1. This new “effective_date” for row 2 is stored in the database (if the form is saved after entering the new row); the end date which was typed in is not stored in the database. We need to calculate the end date in the same manner.* *There is a bit more to it than this, but we are just going high-level in this presentation 17
  • 18. Huh? To be honest, that previous slide doesn’t matter and you don’t need to understand it. That might be a cop out since I barely understand it. The point is, that logic found in the Banner packages needs to be reproduced in the ODS. 18
  • 19. Tracking down a calculated field We can place the following code right into our report without the need to create a database object to store the data. (lead(effective_date,1) over (partition by person_uid, (CASE WHEN earn_code IN ('BDF','BDS') then 'Dental' WHEN earn_code IN ('BHF','BHS','BEO') then 'Health' WHEN earn_code IN ('BLS') then 'Life' ELSE null END) order by effective_date asc, earn_code, active_ind desc)-1) as end_date 19
  • 20. The Point The point to take home from this case is to trust the code behind the Banner form rather than to play the guessing game or use what works in most cases. The code will work 100% of the time. 20
  • 21. Case 2 – Using Database Objects The Original User Request The user needs to report the financial aid field “Unmet Need” The user reported this field to simply be: RORSTAT_UNMET_NEED 21
  • 22. Finding the field Our first way of finding this field is to check the metadata to see if it is delivered to the ODS. Search the metadata for RORSTAT_UNMET_NEED It doesn’t appear to be there. 22
  • 23. Finding the field Don’t always trust the metadata, it’s best to check dba_source and/or dba_dependencies to see where this field may be hidden in case it has weaseled its way into the ODS: select * from dba_dependencies where referenced_name = 'RORSTAT'; select * from dba_source where lower(text) like '%rorstat_unmet_need%‘; It can’t hurt to check the source code of any source views these queries return to see if the object already exists in the ODS. 23
  • 24. Finding the field Let’s assume the last slide returned nothing. Which is a safe assumption, because it didn’t. We have a few options to get this into a report in the ODS: 1) Join your data directly to RORSTAT or write a function to bring this field in directly from RORSTAT Technically a possibility, but a bad idea to join real-time (streamed) data to day-old ODS data 2) Create new custom versions of a composite view, composite table, and reporting view which contain the new field you wish to report upon. Getting warmer here, but this isn’t the real answer in this case. Why? 24
  • 25. Finding the field In my example, I set up the custom database objects to get RORSTAT_UNMET_NEED into the ODS and thus, on the report. That field is what the user requested, and I didn’t listen to my own rules about backing things up with facts. Shortly after the report was developed, we ran into this: Total Award and Unmet Need is not displayed for most in the spreadsheet. I did find a student who had the Total Award showing, but it was calculated incorrectly. The student is S######## and the Total Award = EFC plus Private scholarship. The Unmet Need is showing too. It is negative due to private scholarship. For S########, it looks like the total offered aid and the EFC (or budget) were added together to get the Total Award number and haven’t a clue how to guess where the Unmet Need calculated (it is negative the whole financial aid package total). 25
  • 26. So why is the data wrong? The user requested RORSTAT_UNMET_NEED erroneously. Remember the rule of “don’t trust what a user thinks without facts to back it up”. Well, I didn’t obey. Email: “I checked them all for aid year 1213, in both PROD and TEST, and I see no values for unmet need. Where are you getting the numbers you have on the excel sheet you attached? Per the report request specs, I have been using rorstat_unmet_need. I have a feeling that unmet need might be a calculated field rather than stored in the database.” 26
  • 27. Mistake #1 This case presents a bad assumption on my part. I assumed the user was correct in suggesting we use RORSTAT_UNMET_NEED. Thus, I wasted much time creating a custom composite view, composite table, and reporting view – then creating and scheduling a new ETL refresh…. Only to find out this was the wrong field. 27
  • 28. Mistake #2 I next took the user’s word for it when given a formula: “We’ll have to take the Student Budget, subtract the EFC. That will give you GROSS NEED. To get UNMET NEED you will need to them subtract awarded aid (with the exception of unsubsidized Stafford loans)”… etc. etc. etc. 28
  • 29. Learning from Mistake #2 This still didn’t correct this issue, as we determined “The unmet need formula he/she gave me works only when an individual has EFC = $0” This is getting silly…. Let’s get this done correctly once and for all. 29
  • 30. The Solution Work with a Banner developer to find the code behind the form. They usually charge you a bag of Skittles for their services. In this case, it turned out we needed several functions out of the Banner package RNKNEED. The final formula we derived from this was: (BUDGET-EFC-RESOURCES) – FUNDS THAT REDUCE NEED – MAX[(Funds that replace EFC – EFC),0] = UNMET NEED 30
  • 31. Translating Functions There were several functions within RNKNEED that we needed to bring over to the ODS for this calculation. We store them in a package called ZRKFUNC. This mimics the ODS package-naming scheme, only CCCS uses “Z” as the first character for custom packages. 31
  • 32. Translating Functions Using the delivered metadata, we are going to translate all fields in the RNKNEED functions to use ODS fields so that data is all in synch (ODS data mixed with current Banner data). For example, within RNKNEED.F_CALC_CONTRACTS, there is a cursor CALC_CONTRACT_AMT_C: SELECT SUM(NVL(DECODE(f_calc_contract_payment(TBBCSTU_STU_PIDM, -- 60400 TBBCSTU_CONTRACT_PIDM, TBBCSTU_CONTRACT_NUMBER, TBBCSTU_TERM_CODE), '',DECODE(assume_full_time_ind_v, Look up each banner field name in the metadata to translate to ODS fields: 32
  • 33. Translating Functions Break down the entire function this way until you’re left with a version of the function that has replaced all Banner field names with ODS field names. NOTE: Your joins may change slightly based on cardinality 33 So this….. Becomes this…. SELECT ’43-8' FROM RPRCONT, TBBCSTU <joins> WHERE NVL(TBBCSTU_DEL_IND,'X') <> 'D‘ SELECT ’43-8' FROM mtt_contract m WHERE NVL(m.student_inactivated_ind,'X') <> 'Y‘
  • 34. Translating Functions We ended up writing 12 functions in order to calculate Unmet Need the exact way it is calculated within Banner: f_calc_awd_reduce_need f_calc_coa f_calc_contracts f_calc_gross_need f_calc_load f_calc_oth_resource f_calc_pell_efc f_calc_pell_replacement f_calc_total_awards f_calc_total_non_need f_calc_total_resource f_calc_unmet_need 34
  • 36. Simple Report Code 36 Select zrkfunc.f_calc_unmet_need(person_uid, aid_year, multi_source) as unmet_need FROM <whatever I’m selecting from>
  • 38. Thank You! Bryan Mack Bryan.Mack@cccs.edu Please complete the online session evaluation form Session ID 2502 . © 2014 Ellucian. All rights reserved. 38