Plugging in new fact & dimension tables to Ellucain's EDW product can be a daunting task. This presentation is an example of a custom star I've created to track employee benefit deductions at a detailed level for trend analysis. The purpose of this presentation is a guideline of how to plug any star into their product using 100% custom code.
2. This is a step-by-step high-level, yet technical guide
discussing how to plug a new star schema into Ellucian’s
EDW software.
This presentation can be used to model a new star, design
a new star, and plug in a new star.
If you aren’t technical, this isn’t for you. This presentation
also does not discuss the business requirements; this is
simply the technical side which was created to support the
business requirements.
3. • Develop a new snapshot analytical star for Human
resources
which will store payroll benefit deduction data
• Star will be made visible by way of:
• New fact table (ZFT_*)
• New dimension table (ZDT_*)
• Other dimension tables used in other pre-existing stars
Note: Our naming convention is to use Z for the first
character for all custom database objects
4. • Not modifying any delivered objects*
• Using some delivered dimensions while adding custom
dimensions
• Can use the initial design from one star to develop future
stars
• Database Package
• Mappings
• Tables
• Etc.
*if you choose to name custom objects as Z*, a slight modification to a
procedure is necessary; if you begin objects with W*, no objects need
to be modified.
5. The Employee & Employee Position stars aggregate all
deductions but do not allow for reporting of:
• Aggregates of specific deductions over time
• Aggregates of specific “types” of deductions
• Health Insurance deductions
• Life Insurance deductions
• Taxes
• Etc.
• Aggregates of specific carriers over time (ie: Kaiser vs.
BCBS)
6. • New Tables (Input/clean/wkeys/fact/dimension)
• Indexes & Keys
• New Sequence for DIM table
• Trigger for sequence on DIM table
• New Extract package (or table function)
• New cleansing rules & data element
• New mappings (input/clean/wkeys/fact/each dimension)
• New Cognos model (or modification to existing model)
….…and don’t forget your synonyms and grants!
8. Fact Measures:
Age (non-additive)
Years of Service (non-additive)
Employee Deduction Amount
Employer Deduction Amount
Dimension Attributes:
Carrier Code (and description)
Coverage Option (and description)
Deduction Category (Health, Life, Dental, Tax, etc.)
9. • New Tables (Input/clean/wkeys/fact/dimension)
• Indexes & Keys
• New Sequence for DIM table
• Trigger for sequence on DIM table
• New Extract package (or table function)
• New cleansing rules & data element
• New mappings (input/clean/wkeys/fact/each dimension)
• New Cognos model (or modification to existing model)
….…and don’t forget your synonyms and grants!
10. Due to the length of the code, I will only include screen
shots of some blurbs of code. For my full source code &
mapping dump, visit my GitHub page:
https://github.com/fleetmack/personal/tree/master/hr_deduc
tion_star
Note: Every piece of code in that Git repo was written by
me; I have not included a single piece of code provided by
Ellucian as that is not my intellectual property.
11. Name: ZTT_EMPLOYEE_DEDN_INPUT
enable NoLogging within Oracle
What it is: Temp table before we clean & pivot the data
Fields: Every field need to populate each of the dimension
& fact tables
…….
12. Name: ZTT_EMPLOYEE_DEDN_CLEAN
What it is: pulls in standardized descriptions that must
conform to pre-defined cleansing rules, used to populate
facts & dims
Fields: Everything in INPUT table
Descriptions of all attributes (sd, ld, etc.)
……
15. Name: ZFT_EMPLOYEE_DEDUCTION
Note: My source code has a final column, mif_value_vc; this is a virtual column
populated by a separate function, which I’ve included in my GIT repo. This is
custom to our institution as we use a virtual private database, it is not applicable to
most schools
16. • New Tables (Input/clean/wkeys/fact/dimension)
• Indexes & Keys
• New Sequence for DIM table
• Trigger for sequence on DIM table
• New Extract package (or table function)
• New cleansing rules & data element
• New mappings (input/clean/wkeys/fact/each dimension)
• New Cognos model (or modification to existing model)
….…and don’t forget your synonyms and grants!
17. This will be used to populate
ZDT_DEDUCTION.DEDUCTION_KEY
18. • New Tables (Input/clean/wkeys/fact/dimension)
• Indexes & Keys
• New Sequence for DIM table
• Trigger for sequence on DIM table
• New Extract package (or table function)
• New cleansing rules & data element
• New mappings (input/clean/wkeys/fact/each dimension)
• New Cognos model (or modification to existing model)
….…and don’t forget your synonyms and grants!
19. We will use a trigger to insert the deduction_key to the
dimension table:
Note: source code for this is within the zdt_deduction table
DDL in my Git repo
20. • New Tables (Input/clean/wkeys/fact/dimension)
• Indexes & Keys
• New Sequence for DIM table
• Trigger for sequence on DIM table
• New Extract package (or table function)
• New cleansing rules & data element
• New mappings (input/clean/wkeys/fact/each dimension)
• New Cognos model (or modification to existing model)
….…and don’t forget your synonyms and grants!
21. Don’t judge me, we’ll get back on track after these
synonyms & grants!
22. Aside from obvious reasons, your OWB/ODI CLEAN
mappings will fail without these:
23. Need these grants for all tables (input, clean,
wkeys, dim, fact) in order for your mappings to
work:
grant ALTER on ztt_employee_deduction_clean to IA_ADMIN;
grant DELETE on ztt_employee_deduction_clean to IA_ADMIN;
grant INDEX on ztt_employee_deduction_clean to IA_ADMIN;
grant INSERT on ztt_employee_deduction_clean to IA_ADMIN;
grant SELECT on ztt_employee_deduction_clean to EDWMGR;
grant SELECT on ztt_employee_deduction_clean to IA_ADMIN;
grant UPDATE on ztt_employee_deduction_clean to IA_ADMIN;
grant REFERENCES on ztt_employee_deduction_clean to IA_ADMIN;
grant ON COMMIT REFRESH on ztt_employee_deduction_clean to
IA_ADMIN;
grant QUERY REWRITE on ztt_employee_deduction_clean to IA_ADMIN;
grant DEBUG on ztt_employee_deduction_clean to IA_ADMIN;
grant FLASHBACK on ztt_employee_deduction_clean to IA_ADMIN;
24. • New Tables (Input/clean/wkeys/fact/dimension)
• Indexes & Keys
• New Sequence for DIM table
• Trigger for sequence on DIM table
• New Extract package (or table function)
• New cleansing rules & data element
• New mappings (input/clean/wkeys/fact/each dimension)
• New Cognos model (or modification to existing model)
….…and don’t forget your synonyms and grants!
26. Contains:
• Table Function
• Population of all values for dimensions
• Population of all values for fact table
Package code on GitHub
27. • New Tables (Input/clean/wkeys/fact/dimension)
• Indexes & Keys
• New Sequence for DIM table
• Trigger for sequence on DIM table
• New Extract package (or table function)
• New cleansing rules & data element
• New mappings (input/clean/wkeys/fact/each dimension)
• New Cognos model (or modification to existing model)
….…and don’t forget your synonyms and grants!
28. Admin UI tool -> Options -> Set Up and Maintain Cleansing
Processes -> Set up and Maintain Cleansing Rules
Note: You’ll need to do this for all detail record in your
dimensions
29.
30. Admin UI tool -> Options -> Set Up and Maintain Cleansing
Processes -> Set Up and Maintain Cleansing Data
Elements
Associate the fields in your dimension with the proper
cleansing rule:
31. • New Tables (Input/clean/wkeys/fact/dimension)
• Indexes & Keys
• New Sequence for DIM table
• Trigger for sequence on DIM table
• New Extract package (or table function)
• New cleansing rules & data element
• New mappings (input/clean/wkeys/fact/each dimension)
• New Cognos model (or modification to existing model)
….…and don’t forget your synonyms and grants!
32. Input Parameters call your table function:
Table Function populates the Input table:
33. Ensure you set the Input table to truncate/insert so that you
start fresh each time you snap the data:
34.
35. P_CLEANSE_INPUT procedure will do most of the work for
you:
Constant.Tablename: ‘EMPLOYEE_DEDN’
Constant.Source: ‘O’
P_CELANSE_INPUT source:
MGKFUNC.P_CLEANSE_INPUT
36. Remember when I said we may need to modify 1 piece of
delivered code? This is ONLY if you choose to name your
custom objects beginning with Z …..
37.
38. Target dimension table (ex: WDT_ADMINISTRATION)
needs it’s PK (ex: administration_key) to have its loading
properties set as such:
Dimension ETL Mapping Info Tidbits
39. Target table (ex: WDT_ADMINISTRATION) codes (exs:
employer_code, home_organization, etc.) need to have
loading properties set as such:
Target table descriptions (exs: employer_code_sd,
employer_code_ld) have loading properties as such:
40. Target table (ex: WDT_ADMINISTRATION) needs its
system_load_tmstmp loading properties set as such:
Dimension ETL Mapping Info Tidbits
47. Used in case you are replacing a particular Snapshot, will
delete the old rows before you replace them.
48. Joiner Condition:
This ‘Y’ is an input parameter when scheduling the star. Are
you replacing data, or not? If you are not replacing data,
this mapping will be skipped.
51. MDL file with mappings and all dependent objects are
stored on GitHub
52. Let’s modify some parameters in our MTVPARM table by
way of Ellucian’s Administrative utility (Admin UI) to allow
us to run these jobs through the GUI ….
53.
54.
55.
56.
57.
58.
59.
60.
61.
62. • Add a second internal code group to handle all the
dimensions for a wide load of the dimensions
67. We now have data in our star’s tables.
We still need to build a custom Cognos model & data
descriptions for our users to utilize self-service reporting,
but that will be covered in another presentation coming
soon ….