Você está na página 1de 351

The University of Arizona - Chart of Accounts and General Ledger ETL Specs This worksheet has brief explanations

of our approach to help understand the rest of the worksheets.


This is how we recorded our ETL specs for the dimension tables from the Chart of Accounts. As of this writing (November 25, 2009) these have been prototyped with SQL scripts that do not implement the SCD type, incremental loading, error handling, etc. We have also begun implementing production-ready ETL jobs in IBM DataStage. I would be very happy to get any feedback, suggestions, questions, etc. Source Tables When we copy the KFS tables into the warehouse, we record ALL the changes we have found into history tables with similar names. (The KFS table CA_ACCOUNT_T becomes KF_H_CA_ACCOUNT.) The rows in these history tables have effective date ranges recorded in the columns EFFDT_FROM and EFFDT_TO. The history tables are then used as the source for our dimensional tables and the effective dates are used in the joins to ensure that we capture all valid states for the target dimension table. A few of our source tables also come Column Names We are integrating our KFS data into a PeopleSoft EPM warehouse. Our column names are based on the naming conventions used there. Audit Columns We are integrating our KFS data into a PeopleSoft EPM warehouse. As part of doing that, we included the same set of audit columns that the EPM dimension tables have. These columns are SRC_SYS_ID, EFF_START_DT, EFF_END_DT, CURRENT_IND, DATA_ORIGIN, CREATED_EW_DTTM, LASTUPD_EW_DTTM, and BATCH_SID. The column SRC_SYS_ID is part of the business key of each of these tables. I would have used a Null Values We do not allow NULL values in our dimension tables so that people writing queries do not need to remember to do NULL handling. The default values we are using in place of NULLs were picked to match the values used in PeopleSoft EPM. We do allow NULLs in measure columns of fact tables. This is to ensure that aggregate SCD Types We have assigned SCD types to each attribute independently, rather than to the table as a whole. In doing so we have applied the following general rules of thumb when assigning the SCD types: 1. If the column is a code, set it to Type II. This is because the codes (e.g. object level code) classify the row and we want the transactions to stay in the classification they had at the time they were created. 2. If the column is a description of a code in the dimension, set it to Type I. The description changes we have seen in our existing systems have been rewordings of the same idea. We want to avoid having multiple rows in our reports each time a code description is reworded. Also our operational people assure us that they will create new codes rather than repurposing the existing ones. 3. If the column is a sort code, set it to Type I. This is to ensure consistent sorting when pulling data from different time periods. 4. If the column is a responsible party (e.g. account supervisor), set it to Type I. This is so that people always have the up-to-date contact for questions.

5. If the column is something that is only changed as a correction of the exisiting data (e.g. birth date) or our users only want to see the current value, set it to Type I. We applied these rules of thumb and tweaked them with input from our KFS functional implementation team, however, we expect to need to make changes as more and more people start looking at the data. We will be able to do this because we're holding a history of all the changes from KFS in our staging area and we will have little enough data in the beginning that rebuilds are feasible. If you have received requirements that require different SCD types than what we currently have, I would be very interested in hearing about those. Note that implementing SCDs this way is not entirely for the faint of heart if you do not have experience with them. For example with chart code set as a Type 2 SCD and chart description set as a Type 1 SCD in the project dimension, the updates of chart description need to be based on chart code not project code. Contact Feel free to contact Dylan Cooper (dacooper@email.arizona.edu) with comments, suggestions, questions, etc.

Driving Table: KF_H_CA_ACCOUNT Grain: sub-account (including - for NULL sub-account)


Name Description Data Type

ACCOUNT_SID CHART_CD CHART_LD ACCOUNT_NBR ACCOUNT_LD SUB_ACCOUNT_NBR

NUMBER(10,0) VARCHAR2(2) VARCHAR2(40) VARCHAR2(7) VARCHAR2(40) VARCHAR2(7)

SUB_ACCOUNT_LD

VARCHAR2(40)

VARCHAR2(40) ACCOUNT_FISCAL_OFFICER_ID ACCOUNT_FISCAL_OFFICER_USER_ID ACCOUNT_FISCAL_OFFICER_NM ACCOUNT_FISCAL_OFFICER_DEPT_CD ACCOUNT_SUPERVISOR_ID ACCOUNT_SUPERVISOR_USER_ID ACCOUNT_SUPERVISOR_NM ACCOUNT_SUPERVISOR_DEPT_CD ACCOUNT_MANAGER_ID ACCOUNT_MANAGER_USER_ID ACCOUNT_MANAGER_NM ACCOUNT_MANAGER_DEPT_CD ACCOUNT_ORGANIZATION_CD ACCOUNT_ORGANIZATION_NM ACCOUNT_ORGANIZATION_TYPE_CD ACCOUNT_ORGANIZATION_TYPE_LD ACCOUNT_ORGANIZATION_SORT_CD ACCOUNT_PARENT_ORG_CHART_CD ACCOUNT_PARENT_ORG_CHART_LD ACCOUNT_PARENT_ORG_CD VARCHAR2(40) VARCHAR2(160) VARCHAR2(40) VARCHAR2(40) VARCHAR2(40) VARCHAR2(160) VARCHAR2(40) VARCHAR2(40) VARCHAR2(40) VARCHAR2(160) VARCHAR2(40) VARCHAR2(4) VARCHAR2(40) VARCHAR2(1) VARCHAR2(40) VARCHAR2(2) VARCHAR2(2) VARCHAR2(40) VARCHAR2(4)

VARCHAR2(40) ACCOUNT_PARENT_ORG_NM ACCOUNT_TYPE_CD ACCOUNT_TYPE_LD ACCOUNT_PHYSICAL_CAMPUS_CD ACCOUNT_PHYSICAL_CAMPUS_LD VARCHAR2(2) VARCHAR2(40) VARCHAR2(2) VARCHAR2(40) VARCHAR2(1) SUB_ACCOUNT_ACTIVE_FLG VARCHAR2(2) SUB_ACCOUNT_REPORT_CHART_CD VARCHAR2(40) SUB_ACCOUNT_REPORT_CHART_LD VARCHAR2(4) SUB_ACCOUNT_REPORT_ORG_CD VARCHAR2(40) SUB_ACCOUNT_REPORT_ORG_NM VARCHAR2(10) SUB_ACCOUNT_REPORT_CD ACCOUNT_FUND_GROUP_CD ACCOUNT_FUND_GROUP_LD ACCOUNT_FUND_GROUP_SORT_CD ACCOUNT_SUB_FUND_CD ACCOUNT_SUB_FUND_LD ACCOUNT_SUB_FUND_ACTIVE_FLG ACCOUNT_SUB_FUND_TYPE_CD ACCOUNT_SUB_FUND_TYPE_LD ACCOUNT_SUB_FUND_TYPE_ACTV_FLG ACCOUNT_SUB_FUND_WAGE_FLG ACCOUNT_SUB_FUND_SORT_CD ACCOUNT_FRINGE_BENEFIT_CD ACCOUNT_HIGHER_ED_FUNCTION_CD ACCOUNT_HIGHER_ED_FUNCTION_LD ACCOUNT_RESTRICTION_STATUS_CD ACCOUNT_RESTRICTION_STATUS_SD ACCOUNT_RESTRICTION_STATUS_DT ACCOUNT_CITY_NM VARCHAR2(2) VARCHAR2(40) VARCHAR2(2) VARCHAR2(6) VARCHAR2(40) VARCHAR(1) VARCHAR2(1) VARCHAR2(40) VARCHAR2(1) VARCHAR2(1) VARCHAR2(2) VARCHAR2(1) VARCHAR2(4) VARCHAR2(40) VARCHAR2(1) VARCHAR2(20) DATE VARCHAR2(25)

ACCOUNT_STATE_CD ACCOUNT_STREET_ADDR ACCOUNT_ZIP_CD ACCOUNT_REPORT_CHART_CD ACCOUNT_REPORT_CHART_LD ACCOUNT_REPORT_ACCOUNT_NBR

VARCHAR2(2) VARCHAR2(30) VARCHAR2(11) VARCHAR2(2) VARCHAR2(40) VARCHAR2(7) VARCHAR2(40)

ACCOUNT_REPORT_ACCOUNT_LD ACCOUNT_CREATE_DT ACCOUNT_EFFECTIVE_DT ACCOUNT_EXPIRATION_DT ACCOUNT_CONTINU_CHART_CD ACCOUNT_CONTINU_CHART_LD ACCOUNT_CONTINU_ACCOUNT_NBR

DATE DATE DATE VARCHAR2(2) VARCHAR2(40) VARCHAR2(7) VARCHAR2(40)

ACCOUNT_CONTINU_ACCOUNT_LD ACCOUNT_ENDOWMENT_CHART_CD ACCOUNT_ENDOWMENT_CHART_LD ACCOUNT_ENDOWMENT_ACCOUNT_NBR

VARCHAR2(2) VARCHAR2(40) VARCHAR2(7) VARCHAR2(40)

ACCOUNT_ENDOWMENT_ACCOUNT_LD ACCOUNT_CONTRACT_CHART_CD ACCOUNT_CONTRACT_CHART_LD ACCOUNT_CONTRACT_ACCOUNT_NBR

VARCHAR2(2) VARCHAR2(40) VARCHAR2(7) VARCHAR2(40)

ACCOUNT_CONTRACT_ACCOUNT_LD ACCOUNT_INCOME_CHART_CD ACCOUNT_INCOME_CHART_LD ACCOUNT_INCOME_ACCOUNT_NBR

VARCHAR2(2) VARCHAR2(40) VARCHAR2(7) VARCHAR2(40)

ACCOUNT_INCOME_ACCOUNT_LD ACCOUNT_INDIRECT_TYPE_CD ACCOUNT_INDIRECT_TYPE_LD ACCOUNT_INDIRECT_EXCLUSION_CD ACCOUNT_SERIES_ID ACCOUNT_INDIRECT_CHART_CD ACCOUNT_INDIRECT_CHART_LD ACCOUNT_INDIRECT_ACCOUNT_NBR

VARCHAR2(2) VARCHAR2(40) VARCHAR2(1) VARCHAR2(3) VARCHAR2(2) VARCHAR2(40) VARCHAR2(7)

VARCHAR2(40) ACCOUNT_INDIRECT_ACCOUNT_LD ACCOUNT_IN_FP_CD ACCOUNT_BUDGET_RECORD_LEVEL_CD ACCOUNT_BUDGET_RECORD_LEVEL_LD ACCOUNT_SUF_FUNDS_CD ACCOUNT_SUF_FUNDS_LD ACCOUNT_SUF_FUNDS_PROCESS_FLG ACCOUNT_SUF_FUNDS_EXTERNAL_FLG ACCOUNT_SUF_FUNDS_INTERNAL_FLG ACCOUNT_SUF_FUNDS_PRE_ENC_FLG ACCOUNT_OBJECT_PRESENCE_FLG ACCOUNT_CONTRACT_CFDA_NBR ACCOUNT_OFF_CAMPUS_FLG ACCOUNT_CLOSED_FLG ACCOUNT_CAMPUS_LD ACCOUNT_ORGANIZATION_LD ACCOUNT_RESP_CENTER_LD ACCOUNT_CAMPUS_CD ACCOUNT_BUILDING_CD ACCOUNT_EXPENSE_GUIDELINE_LD ACCOUNT_INCOME_GUIDELINE_LD ACCOUNT_PURPOSE_LD ACCOUNT_FUNDS_TYPE_CD ACCOUNT_TAX_REGION_CD ACCOUNT_COST_SUBCATEGORY_CD VARCHAR2(1) VARCHAR2(1) VARCHAR2(40) VARCHAR2(1) VARCHAR2(40) VARCHAR2(1) VARCHAR2(1) VARCHAR2(1) VARCHAR2(1) VARCHAR2(1) VARCHAR2(6) VARCHAR2(1) VARCHAR2(1) VARCHAR2(40) VARCHAR2(40) VARCHAR2(40) VARCHAR2(2) VARCHAR2(10) VARCHAR2(400) VARCHAR2(400) VARCHAR2(400) VARCHAR2(3) VARCHAR2(10) VARCHAR2(3)

ACCOUNT_YEAR_END_PROCESS_CD_UA EFF_START_DT

create a flag that can be VARCHAR2(1) used to determine if this is an ITD (Inception To Date) project style account or a regular fiscal year style account DATE

EFF_END_DT

DATE

CURRENT_IND SRC_SYS_ID LOAD_ERROR DATA_ORIGIN CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID

CHAR(1) VARCHAR2(5 BYTE) VARCHAR2(1 BYTE) VARCHAR2(1 BYTE) DATE DATE NUMBER(10,0)

FAILED LOOKUP ERROR TABLES : Table Name KF_H_CA_ACCOUNT KF_H_CA_CHART

Alias AL1 AL2

Order

KF_H_CA_ORG KF_H_CA_ACCOUNT_TYPE KF_H_CA_HIGHR_ED_FUNC KF_H_CA_RESTRICT_STAT KF_H_CA_ICR_TYPE KF_H_CA_BDGT_REC_LVL KF_H_CA_ACCT_SF

AL6 AL10 AL15 AL16 AL27 AL30 AL31

KF_H_CA_ACCT_DESC

AL32

KF_H_CA_ACCT_GDLNPRPS KF_H_KRNS_CAMPUS

AL33 AL35

KF_H_CA_ACCOUNT_EXT KF_H_CA_SUB_FND_GRP

AL80 AL12

KF_H_CA_SUB_FND_GRP_TYP KF_H_CA_FUND_GRP KF_H_CA_ORG_TYPE KF_H_CA_CHART

AL14 AL13 AL7 AL8

KF_H_CA_ORG

AL9

KF_H_CA_ACCOUNT

AL18

KF_H_CA_ACCOUNT

AL20

KF_H_CA_ACCOUNT

AL22

KF_H_CA_ACCOUNT

AL24

KF_H_CA_ACCOUNT

AL26

KF_H_CA_ACCOUNT KF_H_CA_CHART KF_H_CA_CHART KF_H_CA_CHART KF_H_CA_CHART

AL29 AL21 AL23 AL25 AL28

KF_H_CA_CHART AL19 SELECT CG.FUND_GROUP_DENOTES_CG_IND, CG.CG_DENOTING_VALUE, ITD.TXT AS SUB_FUND_GROUPS_FOR_ITD, GREATEST( CG.EFFDT_FROM, IDTD.EFFDT_FROM ) AS EFFDT_FROM LEAST( CG.EFFDT_TO, ITD.EFFDT_TO ) AS EFFDT_TO, CG.SRC_SYS_ID FROM ( SELECT IND.TEXT AS FUND_GROUP_DENOTES_CG_IND, VAL.TXT AS CG_DENOTING_VALUE, GREATEST( IND.EFFDT_FROM, VAL.EFFDT_FROM ) AS EFFDT_FROM, LEAST( IND.EFFDT_TO, VAL.EFFDT_TO ) AS EFFDT_TO, IND.SRC_SYS_ID FROM KF_H_KRNS_PARM IND INNER JOIN KF_H_KRNS_PARM VAL ON IND.EFFDT_FROM <= VAL.EFFDT_TO AND IND.EFFDT_TO >= VAL.EFFDT_FROM AND IND.SRC_SYS_ID = VAL.SRC_SYS_ID WHERE IND.PARM_NM = 'FUND_GROUP_DENOTES_CG_IND' AND VAL.PARM_NM = 'CG_DENOTING_VALUE' AL90

select uaid, first_name, last_name, emplid from sysadm.ps_ua_eds_data a where effdt = ( select max(effdt) from sysadm.ps_ua_eds_data b where a.uaid = b.uaid and effdt < SYSDATE AL50 select uaid, first_name, last_name, emplid from sysadm.ps_ua_eds_data a where effdt = ( select max(effdt) from sysadm.ps_ua_eds_data b where a.uaid = b.uaid and effdt < SYSDATE AL60 select uaid, first_name, last_name, emplid from sysadm.ps_ua_eds_data a where effdt = ( select max(effdt) from sysadm.ps_ua_eds_data b where a.uaid = b.uaid and effdt < SYSDATE AL70

select emplid, dept_id from sysadm.ps_ua_ee_job_vw a where daily_snapshot_dt = ( select max(daily_snapshot_dt) from sysadm.ps_ua_ee_job_vw b where a.emplid = b.emplid and daily_snapshot_dt < SYSDATE ) select emplid, dept_id from sysadm.ps_ua_ee_job_vw a where daily_snapshot_dt = ( select max(daily_snapshot_dt) from sysadm.ps_ua_ee_job_vw b where a.emplid = b.emplid and daily_snapshot_dt < SYSDATE ) select emplid, dept_id from sysadm.ps_ua_ee_job_vw a where daily_snapshot_dt = ( select max(daily_snapshot_dt) from sysadm.ps_ua_ee_job_vw b where a.emplid = b.emplid and daily_snapshot_dt < SYSDATE )

AL61

AL51

AL71

KF_H_CA_SUB_ACCT KF_H_CA_CHART

AL34 AL100

KF_H_CA_ORG_EXT

AL81

* all lookup conditions not referencing PS tables also include "<driving table>.SRC_SYS_ID = <lookup table>.SRC_SYS_ID AND * all lookup conditons return NULLs when lookup fails (aka outer-join logic) * all lookup conditions allow multiple rows to be returned from lookup

Replace NULL With

Constraints

SCD Function

2147483646 -

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Surrogate Key Business Key Type I Business Key Type I

NOT NULL NOT NULL

Business Key Type I

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type I Type I Type I Type I Type I Type I Type I Type I Type I Type I Type I Type II Type I Type II Type I Type I Type II Type I Type II

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type II Type I Type II Type I

NOT NULL

Type II

NOT NULL

Type II

NOT NULL

Type I

NOT NULL

Type II

NOT NULL

Type I

1-Jan-90 -

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Type II Type II Type I Type I Type II Type I Type II Type II Type I Type II Type II Type I Type II Type II Type I Type II Type I Type I Type I

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type I Type I Type II Type I Type II

1-Jan-90 1-Jan-90 31-Dec-99 -

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type I Type I Type I Type II Type I Type II

NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type II Type I Type II

NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type II Type I Type II

NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type II Type I Type II

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type II Type I Type II Type II Type II Type I Type II

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type II Type II Type I Type II Type I Type II Type II Type II Type II Type II Type II Type II Type II Type II Type II Type II Type II Type II Type II Type II Type II Type II Type II Type II

01-JAN-1753 00:00:00

NOT NULL NOT NULL

Type II Effective Date

NOT NULL

31-DEC-9999 23:59:59 Y KFS N E Start time of ETL job Start time of ETL job Start time of ETL job

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Effective Date Effective Flag Business Key Insert Only Insert Only Insert Only Insert Only Insert Only

Join Logic* AL2.FIN_COA_CD=AL1.FIN_COA_ CD AL1.FIN_COA_CD=AL6.FIN_COA_ CD AND AL1.ORG_CD=AL6.ORG_CD AL1.ACCT_TYP_CD = AL10.ACCT_TYP_CD AL1.FIN_HGH_ED_FUNC_CD=AL1 5.FIN_HGH_ED_FUNC_CD AL1.ACCT_RSTRC_STAT_CD = AL16.ACCT_RSTRC_STAT_CD AL1.ACCT_ICR_TYP_CD = AL27.ACCT_ICR_TYP_CD AL1.BDGT_REC_LVL_CD=AL30.BD GT_REC_LVL_CD AL1.ACCT_SF_CD=AL31.ACCT_SF _CD

Failed Lookup Error Table

KF_E_CA_ACCOUNT

KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT

AL1.FIN_COA_CD = AL32.FIN_COA_CD AND AL1.ACCOUNT_NBR = AL32.ACCOUNT_NBR AL1.FIN_COA_CD = AL33.FIN_COA_CD AND AL1.ACCOUNT_NBR = AL33.ACCOUNT_NBR A1.ACCT_PHYS_CMP_CD = AL35.CAMPUS_CD AL1.FIN_COA_CD = AL80.FIN_COA_CD AND AL1.ACCOUNT_NBR = AL80.ACCOUNT_NBR AL1.SUB_FUND_GRP_CD=AL12.S UB_FUND_GRP_CD AL12.SUB_FUNDGRP_TYP_CD=AL 14.SUB_FUNDGRP_TYP_CD AL12.FUND_GRP_CD=AL13.FUND _GRP_CD AL6.ORG_TYP_CD=AL7.ORG_TYP _CD AL6.RPTS_TO_FIN_COA_CD=AL8. FIN_COA_CD AL6.RPTS_TO_FIN_COA_CD=AL9. FIN_COA_CD AND AL6.RPTS_TO_ORG_CD=AL9.ORG _CD AL1.RPTS_TO_ACCT_NBR = AL18.ACCOUNT_NBR AND AL1.RPTS_TO_FIN_COA_CD = AL18.FIN_COA_CD AL1.CONT_FIN_COA_CD = AL20.FIN_COA_CD AND AL1.CONT_ACCOUNT_NBR = AL20.ACCOUNT_NBR AL1.ENDOW_FIN_COA_CD = AL22.FIN_COA_CD AND AL1.ENDOW_ACCOUNT_NBR = AL22.ACCOUNT_NBR AL1.CONTR_CTRL_FCOA_CD = AL24.FIN_COA_CD AND AL1.CONTR_CTRLACCT_NBR = AL24.ACCOUNT_NBR

KF_E_CA_ACCOUNT

KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT

KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT

KF_E_CA_SUB_FUND_GRP_TYP KF_E_CA_SUB_FUND_GRP_TYP KF_E_CA_ORG KF_E_CA_ORG

KF_E_CA_ORG

KF_E_CA_ACCOUNT

KF_E_CA_ACCOUNT

KF_E_CA_ACCOUNT

KF_E_CA_ACCOUNT

AL1.INCOME_FIN_COA_CD = AL26.FIN_COA_CD AND AL1.INCOME_ACCOUNT_NBR = AL26.ACCOUNT_NBR AL1.ICR_ACCOUNT_NBR = AL29.ACCOUNT_NBR AND AL1.ICR_FIN_COA_CD = AL29.FIN_COA_CD AL1.ENDOW_FIN_COA_CD = AL21.FIN_COA_CD AL1.CONTR_CTRL_FCOA_CD = AL23.FIN_COA_CD AL1.INCOME_FIN_COA_CD = AL25.FIN_COA_CD AL1.ICR_FIN_COA_CD = AL28.FIN_COA_CD AL1.CONT_FIN_COA_CD=AL19.FI N_COA_CD

KF_E_CA_ACCOUNT

KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT KF_E_CA_ACCOUNT

Only returns one row per date range, so just do the lookups based on src_sys_id and effective dates NONE

AL1.ACCT_FSC_OFC_UID = AL50.UAID

KF_E_CA_ACCOUNT

AL1.ACCT_SPVSR_UNVL_ID = AL60.UAID

KF_E_CA_ACCOUNT

AL1.ACCT_MGR_UNVL_ID = AL70.UAID

KF_E_CA_ACCOUNT

AL60.EMPLID = AL61.EMPLID

NONE

AL50.EMPLID = AL51.EMPLID

NONE

AL70.EMPLID = AL71.EMPLID AL1.FIN_COA_CD = AL34.FIN_COA_CD AND AL1.ACCOUNT_NBR = AL34.ACCOUNT_NBR AL34.FIN_RPT_CHRT_CD = AL100.FIN_COA_CD AL1.FIN_COA_CD=AL81.FIN_COA _CD AND AL1.ORG_CD=AL81.ORG_CD

NONE

KF_E_CA_SUB_ACCT KF_E_CA_SUB_ACCT

KF_E_CA_ORG_EXT

kup table>.SRC_SYS_ID AND <main data stream>.EFFDT_FROM <= <lookup table>.EFFDT_TO AND <main data stream>.EFFDT_TO >= <look

Type 1 SCD Dependence

Source Type

Source Table

N/A N/A CHART_CD N/A Main Type 1 SCD stage

Generated Copy Copy Copy Copy

N/A KF_H_CA_ACCOUNT KF_H_CA_CHART KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT

N/A Main Type 1 SCD stage

Generated Transform Generated Transform

N/A KF_H_CA_SUB_ACCT N /A KF_H_CA_SUB_ACCT

Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage N/A ACCOUNT_ORGANIZATION_CD, CHART_CD N/A

Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Copy Copy Copy

KF_H_CA_ACCOUNT

select distinct EMPLID, NETID_OPRID, UAID, NAME from PS_UA_E select distinct EMPLID, NETID_OPRID, UAID, NAME from PS_UA_E PS_UA_EE_JOB_VW KF_H_CA_ACCOUNT select distinct EMPLID, NETID_OPRID, UAID, NAME from PS_UA_E select distinct EMPLID, NETID_OPRID, UAID, NAME from PS_UA_E PS_UA_EE_JOB_VW KF_H_CA_ACCOUNT select distinct EMPLID, NETID_OPRID, UAID, NAME from PS_UA_E select distinct EMPLID, NETID_OPRID, UAID, NAME from PS_UA_E PS_UA_EE_JOB_VW KF_H_CA_ACCOUNT KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG_TYPE KF_H_CA_ORG_EXT KF_H_CA_ORG KF_H_CA_CHART KF_H_CA_ORG

ACCOUNT_ORGANIZATION_TYPE_CD Copy ACCOUNT_ORGANIZATION_CD, CHART_CD Copy N/A Copy ACCOUNT_PARENT_ORG_CHART_CD Copy N/A Copy

ACCOUNT_PARENT_ORG_CD, ACCOUNT_PARENT_ORG_CHART_CD N/A ACCOUNT_TYPE_CD N/A ACCOUNT_PHYSICAL_CAMPUS_CD

Transform Transform Transform Transform Transform Generated Copy Generated Copy

KF_H_CA_ORG KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT_TYPE KF_H_CA_ACCOUNT KF_H_KRNS_CAMPUS N/A KF_H_CA_SUB_ACCT N/A KF_H_CA_SUB_ACCT N/A KF_H_CA_CHART N/A KF_H_CA_SUB_ACCT N/A KF_H_CA_ORG N/A KF_H_CA_SUB_ACCT KF_H_CA_SUB_FND_GRP KF_H_CA_FUND_GRP KF_H_CA_FUND_GRP KF_H_CA_SUB_FND_GRP_TYP KF_H_CA_SUB_FUND_GRP KF_H_CA_SUB_FND_GRP_TYP KF_H_CA_SUB_FND_GRP_TYP KF_H_CA_SUB_FND_GRP_TYP KF_H_CA_SUB_FND_GRP_TYP KF_H_CA_SUB_FND_GRP_TYP KF_H_CA_SUB_FND_GRP_TYP KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_HIGHR_ED_FUNC KF_H_CA_ACCOUNT KF_H_CA_RESTRICT_STAT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT

N/A

N/A

Generated SUB_ACCOUNT_REPORT_CHART_CD Copy Generated Copy

N/A

SUB_ACCOUNT_REPORT_ORG_CD, Generated SUB_ACCOUNT_REPORT_CHART_CD Copy Generated Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Transform Copy

N/A N/A ACCOUNT_FUND_GROUP_CD ACCOUNT_FUND_GROUP_CD N/A ACCOUNT_SUB_FUND_CD N/A N/A ACCOUNT_SUB_FUND_TYPE_CD N/A N/A ACCOUNT_SUB_FUND_CD N/A N/A ACCOUNT_HIGHER_ED_FUNCTION_C D Copy N/A Transform ACCOUNT_RESTRICTION_STATUS_CD Transform Main Type 1 SCD stage Copy Main Type 1 SCD stage Transform

Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage N/A ACCOUNT_REPORT_CHART_CD N/A ACCOUNT_REPORT_CHART_CD, ACCOUNT_REPORT_ACCOUNT_NBR Main Type 1 SCD stage Main Type 1 SCD stage Main Type 1 SCD stage N/A ACCOUNT_CONTINU_CHART_CD N/A

Transform Transform Transform Transform Transform Transform

KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_CHART KF_H_CA_ACCOUNT

Transform Copy Copy Copy Transform Transform Transform

KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_CHART KF_H_CA_ACCOUNT

ACCOUNT_CONTINU_CHART_CD,ACC OUNT_CONTINU_ACCOUNT_NBR Transform N/A Transform ACCOUNT_ENDOWMENT_CHART_CD N/A ACCOUNT_ENDOWMENT_CHART_CD , ACCOUNT_ENDOWMENT_ACCOUNT_ NBR N/A ACCOUNT_CONTRACT_CHART_CD N/A ACCOUNT_CONTRACT_CHART_CD, ACCOUNT_CONTRACT_ACCOUNT_NB R N/A ACCOUNT_INCOME_CHART_CD N/A ACCOUNT_INCOME_CHART_CD, ACCOUNT_INCOME_ACCOUNT_NBR N/A ACCOUNT_INDIRECT_TYPE_CD N/A N/A N/A ACCOUNT_INDIRECT_CHART_CD N/A Transform Transform

KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_CHART KF_H_CA_ACCOUNT

Transform Transform Transform Transform

KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_CHART KF_H_CA_ACCOUNT

Transform Transform Transform Transform

KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_CHART KF_H_CA_ACCOUNT

Transform Transform Transform Transform Transform Transform Transform Transform

KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ICR_TYPE KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_CHART KF_H_CA_ACCOUNT

ACCOUNT_INDIRECT_CHART_CD, ACCOUNT_INDIRECT_ACCOUNT_NBR N/A N/A ACCOUNT_BUDGET_RECORD_LEVEL_ CD N/A ACCOUNT_SUF_FUNDS_CD N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A

Transform Transform Copy Copy Copy Copy Copy Copy Copy Copy Copy Transform Copy Copy Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform

KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_BDGT_REC_LVL KF_H_CA_ACCOUNT KF_H_CA_ACCT_SF KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCOUNT KF_H_CA_ACCT_DESC KF_H_CA_ACCT_DESC KF_H_CA_ACCT_DESC KF_H_CA_ACCT_DESC KF_H_CA_ACCT_DESC KF_H_CA_ACCT_GDLNPRPS KF_H_CA_ACCT_GDLNPRPS KF_H_CA_ACCT_GDLNPRPS KF_H_CA_ACCOUNT_EXT KF_H_CA_ACCOUNT_EXT KF_H_CA_ACCOUNT_EXT

N/A N/A

Transform Transform

Multiple Multiple

N/A N/A N/A N/A N/A N/A N/A N/A

Transform Generated Copy Generated Generated Generated Generated Generated

Multiple N/A KF_H_CA_ACCOUNT N/A N/A N/A N/A N/A

ND <main data stream>.EFFDT_TO >= <lookup table>.EFFDT_FROM"

Source Column

Transform Logic

N/A AL1.FIN_COA_CD AL2.FIN_COA_DESC AL1.ACCOUNT_NBR AL1.ACCOUNT_NM

Surrogate key generator starting at 1 N/A N/A N/A N/A Generate one row with value of - for each chart of account, account number and source system id N/A Generate one row with value of - for each chart of account, account number and source system id N/A

N/A AL34.SUB_ACCT_NBR N/A AL34.SUB_ACCT_NM

AL1.ACCT_FSC_OFC_UID AL50.NETID_OPRID AL50.NAME AL51.DEPT_ID AL1.ACCT_SPVSR_UNVL_ID AL60.NETID_OPRID AL60.NAME AL61.DEPT_ID AL1.ACCT_MGR_UNVL_ID AL70.NETID_OPRID AL70.NAME AL71.DEPT_ID AL1.ORG_CD AL6.ORG_NM AL6.ORG_TYP_CD AL7.ORG_TYP_NM AL81.REPORT_ORDER_CD AL6.RPTS_TO_FIN_COA_CD AL8.FIN_COA_DESC AL6.RPTS_TO_ORG_CD

N/A UPPER(AL50.NETID_OPRID) replace(AL50.NAME, ' - ', ' ') N/A N/A UPPER(AL60.NETID_OPRID) replace(AL50.NAME, ' - ', ' ') N/A N/A UPPER(AL70.NETID_OPRID) replace(AL50.NAME, ' - ', ' ') N/A N/A N/A N/A N/A N/A N/A N/A N/A

AL9.ORG_NM AL1.ACCT_TYP_CD AL10.ACCT_TYP_NM AL1.ACCT_PHYS_CMP_CD CAMPUS_NM

N/A N/A N/A N/A

N/A Generate one row with value of - for each chart of account, account number and source system id N/A N/A SUB_ACCT_ACTV_CD Generate one row with value of - for each chart of account, account number and source system id N/A N/A FIN_RPT_CHRT_CD Generate one row with value of - for each chart of account, account number and source system id N/A N/A FIN_COA_DESC Generate one row with value of - for each chart of account, account number and source system id N/A N/A FIN_RPT_ORG_CD Generate one row with value of - for each chart of account, account number and source system id N/A N/A ORG_NM Generate one row with value of - for each chart of account, account number and source system id N/A N/A FIN_RPT_CD N/A AL12.FUND_GRP_CD N/A AL13.FUNG_GRP_NM N/A AL13.FIN_REPORT_SORT_CD N/A AL12.SUB_FUND_GRP_CD N/A AL12.SUB_FUND_GRP_DESC AL12.SUBFUNDGRP_ACTV_CD N/A AL12.SUB_FUNDGRP_TYP_CD N/A AL14.SUB_FND_GRP_TYP_DESC N/A N/A AL14.SUB_FND_GRP_TYP_ACTV_IND N/A AL12.SUB_FUND_GRP_WAGE_IND N/A AL12.FIN_REPORT_SORT_CD N/A AL1.ACCT_FRNG_BNFT_CD N/A AL1.FIN_HGH_ED_FUNC_CD AL15.FIN_HGH_ED_FUNC_NM AL1.ACCT_RSTRC_STAT_CD AL16.ACCT_RSTRC_STAT_NM AL1.ACCT_RSTRC_STAT_DT AL1.ACCT_CITY_NM N/A N/A N/A N/A N/A

AL1.ACCT_STATE_CD AL1.ACCT_STREET_ADDR AL1.ACCT_ZIP_CD AL1.RPTS_TO_FIN_COA_CD AL17.FIN_COA_DESC AL1.RPTS_TO_ACCT_NBR

N/A N/A N/A N/A N/A N/A

AL18.ACCOUNT_NM AL1.ACCT_CREATE_DT AL1.ACCT_EFFECT_DT AL1.ACCT_EXPIRATION_DT AL1.CONT_FIN_COA_CD AL19.FIN_COA_DESC AL1.CONT_ACCOUNT_NBR

N/A N/A N/A N/A N/A N/A N/A

AL20.ACCOUNT_NM AL1.ENDOW_FIN_COA_CD AL21.FIN_COA_DESC AL1.ENDOW_ACCOUNT_NBR

N/A N/A N/A N/A

AL22.ACCOUNT_NM AL1.CONTR_CTRL_FCOA_CD AL23.FIN_COA_DESC AL1.CONTR_CTRLACCT_NBR

N/A N/A N/A N/A

AL24.ACCOUNT_NM AL1.INCOME_FIN_COA_CD AL25.FIN_COA_DESC AL1.INCOME_ACCOUNT_NBR

N/A N/A N/A N/A

AL26.ACCOUNT_NM AL1.ACCT_ICR_TYP_CD AL27.ACCT_ICR_TYP_DESC AL1.AC_CSTM_ICREXCL_CD AL1.FIN_SERIES_ID AL1.ICR_FIN_COA_CD AL28.FIN_COA_DESC AL1.ICR_ACCOUNT_NBR

N/A N/A N/A N/A N/A N/A N/A N/A

AL29.ACCOUNT_NM AL1.ACCT_IN_FP_CD AL1.BDGT_REC_LVL_CD AL30.BDGT_REC_LVL_NM AL1.ACCT_SF_CD AL31.ACCT_SF_NM AL1.ACCT_PND_SF_CD AL1.FIN_EXT_ENC_SF_CD AL1.FIN_INT_ENC_SF_CD AL1.FIN_PRE_ENC_SF_CD AL1.FIN_OBJ_PRSCTRL_CD AL1.CG_CFDA_NBR AL1.ACCT_OFF_CMP_IND AL1.ACCT_CLOSED_IND AL32.CAMPUS_DESC AL32.ORG_DESC AL32.RC_DESC AL32.CAMPUS_CD AL32.BLDG_CD AL33.ACCT_EXP_GDLN_TXT AL33.ACCT_INC_GDLN_TXT AL33.ACCT_PURPOSE_TXT AL80.FUNDS_TYPE_CD AL80.TAX_REGION_CD AL80.FA_COST_SUBCAT_CD

N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A IF INSTR( ';' || AL90.SUB_FUND_GROUPS_FOR_ITD || ';', ';' || AL12.SUB_FUND_GRP_CD || ';' ) <> 0 THEN 'P' ELSIF TRIM(AL90.FUND_GROUP_DENOTES_CG_IND) = 'Y' AND AL12.FUND_GRP_CD = TRIM(AL90.CG_DENOTING_VALUE) THEN 'P' ELSIF TRIM(AL90.FUND_GROUP_DENOTES_CG_IND) = 'N' AND AL12.SUB_FUND_GRP_CD = RTRIM(AL90.CG_DENOTING_VALUE) THEN 'P' ELSE 'F' This is the max EFFDT_FROM value from all the tables joined to make this record.

Multiple Multiple

Multiple N/A SRC_SYS_ID N/A N/A N/A N/A N/A

This is the min EFFDT_TO value from all the tables joined to make this record. Y for initial value N for expire value N/A If an error occurs when creating this row (e.g. a lookup error) this is Y otherwise it is N Passed as a variable to the ETL job. Should be E for EPM-sourced data and S for source-system-sourced data. Start time of ETL job Start time of ETL job Batch ID of highest level ETL job that called this one.

Purpose

Comment

Currently need to hard-code in SCD stage to intiial value to the Replace Nulls With value due to DataStage limitation.

Driving Table: KF_GL_ENTRY Driving Table Filter: Include only balance type AC. Exclude fiscal periods BB, CB, AB and 13. Driving Table Aggregation: Fiscal year, fiscal period, chart code, account number, object_code, src_sys_id Load Strategy: do destructive first. Then when needed (probably right away) change to incremental to re-calculate any fisca

Name

Name Length

Description

ACCOUNT_STATISTICS_SID 22 the following rows are business keys and their text transactions FISCAL_YEAR 11 FISCAL_PERIOD_CD 16 CHART_CD 8 CHART_LD ACCOUNT_NBR 8 11

ACCOUNT_LD OBJECT_CD

10 9

OBJECT_LD

OBJECT_SD the following rows are fiscal period measures ACCTSTAT_MINIMUM_AMT_UA ACCTSTAT_MAXIMUM_AMT_UA ACCTSTAT_MEAN_AMT_UA

23 Should we allow this to be null? 23 Should we allow this to be null? 20 Should we allow this to be null?

ACCTSTAT_MEDIAN_AMT_UA 22 Should we allow this to be null? ACCTSTAT_STAND_DEV_AMT_UA 25 Should we allow this to be null? the following rows are year-to-date measures, up to the fiscal period for this row so they need to be aggregated correctly. No ACCTSTAT_YTD_MINIMUM_AMT_UA ACCTSTAT_YTD_MAXIMUM_AMT_UA ACCTSTAT_YTD_MEAN_AMT_UA ACCTSTAT_YTD_MEDIAN_AMT_UA ACCTSTAT_YTD_STAND_DEV_AMT_UA the following rows are audit columns EFF_START_DT 27 Should we allow this to be null? 27 Should we allow this to be null? 24 Should we allow this to be null? 26 Should we allow this to be null? 29 Should we allow this to be null?

12

EFF_END_DT CURRENT_IND SRC_SYS_ID LOAD_ERROR 10 10 11 10

DATA_ORIGIN CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID 11 15 15 9

* All joins also include SRC_SYS_ID and KF_GL_ENTRY.TRN_POST_DT BETWEEN <lookup table>.EFFDT_FROM AND <lookup ta

object_code, src_sys_id nge to incremental to re-calculate any fiscal period that had a new actuals transaction.

Data Type

Replace NULL With Constraints

SCD Function Type 1 SCD Update

NUMBER(10) NUMBER(4,0) VARCHAR2(2) VARCHAR2(2) VARCHAR2(40) VARCHAR2(7)

High value SID

primary key 0 not null not null not null not null not null

Surrogate Key Business Key Business Key Business Key Type 1 Business Key

N/A N/A N/A N/A Main SCD Type 1 Stage N/A

VARCHAR2(40)

VARCHAR2(4)

not null not null

Type 1 Business Key

Main SCD Type 1 Stage N/A

VARCHAR2(160) -

not null

Type 1

Main SCD Type 1 Stage

VARCHAR2(48)

not null

Type 1

Main SCD Type 1 Stage

NUMBER(19,2) NUMBER(19,2) NUMBER(19,2)

0 not null 0 not null 0 not null

Type 1 Type 1 Type 1

Main SCD Type 1 Stage Main SCD Type 1 Stage Main SCD Type 1 Stage

NUMBER(19,2) 0 not null Type 1 Main SCD Type 1 Stage NUMBER(19,2) 0 not null Type 1 Main SCD Type 1 Stage o they need to be aggregated correctly. Note that they do not include beginning balance or year close transactions becasu we are excludin NUMBER(19,2) NUMBER(19,2) NUMBER(19,2) NUMBER(19,2) NUMBER(19,2) DATE 0 not null 0 not null 0 not null 0 not null 0 not null NOT NULL Type 1 Type 1 Type 1 Type 1 Type 1 Main SCD Type 1 Stage Main SCD Type 1 Stage Main SCD Type 1 Stage Main SCD Type 1 Stage Main SCD Type 1 Stage

01-JAN-1753 00:00:00

Effective Date

N/A

DATE CHAR(1) VARCHAR2(5) VARCHAR2(1) 31-DEC-9999 23:59:59 Y KFS N

NOT NULL NOT NULL NOT NULL NOT NULL Insert Only N/A Effective Date Effective Flag Business Key N/A N/A N/A

VARCHAR2(1) DATE DATE NUMBER(10,0)

E Start time of ETL job Start time of ETL job Start time of ETL job

NOT NULL NOT NULL NOT NULL NOT NULL Insert Only Insert Only Insert Only Insert Only N/A N/A N/A N/A

okup table>.EFFDT_FROM AND <lookup table>.EFFDT_TO

Source Type

Source Table

Source Column

Lookup Logic*

Generate Copy Copy Copy Copy Copy

N/A KF_GL_ENTRY KF_GL_ENTRY KF_GL_ENTRY KF_H_CA_CHART KF_GL_ENTRY

N/A

N/A

N/A UNIV_FISCAL_YR UNIV_FISCAL_PRD_CD N/A N/A FIN_COA_CD KF_H_CA_CHART.FIN_COA_CD=KF _GL_ENTRY.FIN_COA_CD FIN_COA_DESC N/A ACCOUNT_NBR

Copy Copy

KF_H_CA_ACCOUNT KF_GL_ENTRY

ACCOUNT_NM FIN_OBJECT_CD

KF_H_CA_ACCOUNT.FIN_COA_CD = KF_GL_ENTRY.FIN_COA_CD AND KF_H_CA_ACCOUNT.ACCOUNT_N BR = KF_GL_ENTRY.ACCOUNT_NBR N/A KF_H_CA_OBJECT_CODE.UNIV_FIS CAL_YR = KF_GL_ENTRY.UNIV_FISCAL_YR AND KF_CA_OBJECT_CODE.FIN_COA_C D = KF_GL_ENTRY.FIN_COA_CD AND KF_CA_OBJECT_CODE.FIN_OBJECT _CD = KF_GL_ENTRY.FIN_OBJECT_CD

Copy

KF_H_CA_OBJECT_CODE FIN_OBJ_CD_NM

Copy

KF_H_CA_OBJECT_CODE.UNIV_FIS CAL_YR = KF_GL_ENTRY.UNIV_FISCAL_YR AND KF_CA_OBJECT_CODE.FIN_COA_C D = KF_GL_ENTRY.FIN_COA_CD AND KF_CA_OBJECT_CODE.FIN_OBJECT _CD = KF_H_CA_OBJECT_CODE FIN_OBJ_CD_SHRT_NMKF_GL_ENTRY.FIN_OBJECT_CD

Transform Transform Transform

KF_GL_ENTRY KF_GL_ENTRY KF_GL_ENTRY

TRN_LDGR_ENTR_AMT N/A TRN_LDGR_ENTR_AMT N/A TRN_LDGR_ENTR_AMT N/A

Transform KF_GL_ENTRY TRN_LDGR_ENTR_AMT N/A Transform KF_GL_ENTRY TRN_LDGR_ENTR_AMT N/A nsactions becasu we are excluding fiscal periods AB, BB, CB and 13. Transform Transform Transform Transform Transform KF_GL_ENTRY KF_GL_ENTRY KF_GL_ENTRY KF_GL_ENTRY KF_GL_ENTRY TRN_LDGR_ENTR_AMT N/A TRN_LDGR_ENTR_AMT N/A TRN_LDGR_ENTR_AMT N/A TRN_LDGR_ENTR_AMT N/A TRN_LDGR_ENTR_AMT N/A

N/A

Transform

Multiple

Multiple

N/A N/A N/A

Transform Generated Copy Generated

Multiple N/A KF_GL_ENTRY N/A

Multiple N/A SRC_SYS_ID N/A

N/A

Generated N/A N/A N/A N/A Generated Generated Generated N/A N/A N/A N/A N/A N/A N/A N/A

Transform Logic

Purpose

Comment

N/A N/A N/A N/A N/A

N/A N/A

N/A

N/A

MIN( ABS(TRN_LDGR_ENTR_AMT) ) MAX( ABS(TRN_LDGR_ENTR_AMT) ) ROUND( AVG( ABS(TRN_LDGR_ENTR_AMT) ), 2 ) MEDIAN( ABS(TRN_LDGR_ENTR_AMT) ) ROUND(STDDEV(ABS(TRN_LDGR_ENTR_AMT) ) ,2)

MIN( ABS(TRN_LDGR_ENTR_AMT) ) MAX( ABS(TRN_LDGR_ENTR_AMT) ) ROUND( AVG( ABS(TRN_LDGR_ENTR_AMT) ), 2 ) MEDIAN( ABS(TRN_LDGR_ENTR_AMT) ) ROUND(STDDEV(ABS(TRN_LDGR_ENTR_AMT) ) ,2) This is the max EFFDT_FROM value from all the tables joined to make this record. Currently need to hard-code in SCD stage to This is the min EFFDT_TO value from all the intiial value to the Replace Nulls With value tables joined to make this record. due to DataStage limitation. Y for initial value N for expire value N/A If an error occurs when creating this row (e.g. a lookup error) this is Y otherwise it is N

Passed as a variable to the ETL job. Should be E for EPM-sourced data and S for sourcesystem-sourced data. Start time of ETL job Start time of ETL job Batch ID of highest level ETL job that called this one.

Driving Table: KF_H_CA_BALANCE_TYPE Grain: balance type


Name Description Data Type

BALANCE_TYPE_SID BALANCE_TYPE_CD BALANCE_TYPE_LD BALANCE_TYPE_SD BALANCE_TYPE_OFFSET_FLG BALANCE_TYPE_ENCUMBRANCE_FLG BALANCE_TYPE_ACTIVE_FLG EFF_START_DT

NUMBER(10,0) VARCHAR2(2) VARCHAR2(40) VARCHAR2(12) VARCHAR2(1) VARCHAR2(1) VARCHAR2(1) DATE

EFF_END_DT

DATE

CURRENT_IND SRC_SYS_ID LOAD_ERROR

CHAR(1) VARCHAR2(5 BYTE) VARCHAR2(1 BYTE)

DATA_ORIGIN CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID

VARCHAR2(1 BYTE) DATE DATE NUMBER(10)

* all lookup conditions also include "<driving table>.SRC_SYS_ID = <lookup table>.SRC_SYS_ID AND <current>.EFFDT_FROM < * all lookup conditons return NULLs when lookup fails (aka outer-join logic) * all lookup conditions allow multiple rows to be returned from lookup

Replace NULL With

Constraints

SCD Function

Source Type

2147483646 -

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Surrogate Key Business Key Type I Type I Type II Type II Type II

Generated Copy Copy Copy Copy Copy Copy

01-JAN-1753 00:00:00 NOT NULL 31-DEC-9999 23:59:59 Y KFS N NOT NULL NOT NULL NOT NULL

Effective Date

Transform

Effective Date Effective Flag Business Key

Transform Generated Copy Generated

Insert Only E Start time of ETL job Start time of ETL job Start time of ETL job NOT NULL NOT NULL NOT NULL NOT NULL Insert Only Insert Only Insert Only Insert Only Generated Generated Generated Generated

S_ID AND <current>.EFFDT_FROM <= <lookup table>.EFFDT_TO AND <current>.EFFDT_TO >= <lookup table>.EFFDT_FROM"

Source Table

Source Column

Lookup Logic*

N/A KF_H_CA_BALANCE_TYPE KF_H_CA_BALANCE_TYPE KF_H_CA_BALANCE_TYPE KF_H_CA_BALANCE_TYPE KF_H_CA_BALANCE_TYPE KF_H_CA_BALANCE_TYPE

N/A FIN_BALANCE_TYP_CD FIN_BALANCE_TYP_NM FIN_BALTYP_SHRT_NM FIN_OFFST_GNRTN_CD FIN_BALTYP_ENC_CD ROW_ACTV_IND

N/A N/A N/A N/A N/A N/A N/A

Multiple

Multiple

N/A

Multiple N/A KF_H_CA_BALANCE_TYPE N/A

Multiple N/A SRC_SYS_ID N/A

N/A N/A N/A

N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A

table>.EFFDT_FROM"

Transform Logic

Purpose

Comment

Surrogate key generator starting at 1 N/A N/A N/A N/A N/A N/A This is the max EFFDT_FROM value from all the tables joined to make this record. Currently need to hard-code in SCD This is the min EFFDT_TO value from stage to intiial value to the Replace all the tables joined to make this Nulls With value due to DataStage record. limitation. Y for initial value N for expire value N/A If an error occurs when creating this row (e.g. a lookup error) this is Y otherwise it is N Passed as a variable to the ETL job. Should be E for EPM-sourced data and S for source-system-sourced data. Start time of ETL job Start time of ETL job Batch ID of highest level ETL job that called this one.

Driving Table: PS_D_DAY Grain: Day Note: Exclude columns in RED. Leaving them in spreadsheet in case we need to put them in afterall. Note: This table is created with a DESTRUCTIVE load. No dates involved in the lookups. Note: No error tables in this job.
Name Name Length Description

DAY_SID
Regular calendar columns

8 7 8 7 7 15 16 17 16 10 10 8

DAY_DT
DAY_NBR

DAY_LD
DAY_SD

DAY_JULIAN_NBR
DAY_OF_WEEK_NBR

DAY_OF_MONTH_NBR DAY_OF_YEAR_NBR
WEEK_SID WEEK_NBR WEEK_LD

WEEK_SD_UA WEEK_OF_MONTH_NBR WEEK_OF_YEAR_NBR MONTH_SID MONTH_NBR MONTH_LD MONTH_SD MONTH_END_DT_UA MONTH_OF_QTR_NBR QUARTER_SID QUARTER_NBR QUARTER_LD QUARTER_SD QUARTER_OF_YR

11 19 18 11 12 10 10 16
18 13 12 11 11 14

YEAR_SID YEAR_NBR YEAR_LD FIRST_DAY_OF_WEEK_FLG LAST_DAY_OF_WEEK_FLG FIRST_DAY_OF_MONTH_FLG LAST_DAY_OF_MONTH_FLG


FIRST_DAY_OF_QTR_FLG

9 9 8 22 21 23 22
21

LAST_DAY_OF_QTR_FLG

20

FIRST_DAY_OF_YEAR_FLG LAST_DAY_OF_YEAR_FLG DAYS_IN_WEEK_UA DAYS_IN_MONTH_UA

22 21 16 17

DAYS_IN_YEAR_UA MONTH_ELAPSED_PCT_UA

16 21

YEAR_ELAPSED_PCT_UA
Pay calendar columns

20
20

DAY_OF_PAY_PERIOD_NBR_UA
PAY_PERIOD_START_DT

PAY_PERIOD_END_DT

25 20 18

PAY_PERIOD_OF_MONTH_NBR_UA
PAY_PERIOD_OF_YEAR_NBR_UA PAY_PERIOD_OF_FY_NBR_UA PAY_PERIOD_OF_FED_YEAR_NBR_UA

27 26 24 30

FIRST_DAY_OF_PAY_P_FLG_UA

26

LAST_DAY_OF_PAY_P_FLG_UA

25

DAY_FOR_PAY_TRANS_FLG_UA DAY_IS_WEEKEND_FLG

25 19

DAY_IS_UNIV_HOLIDAY_FLG DAY_IS_UNIV_HOLIDAY_LD

24 22

DAY_IS_UNIV_CLOSURE_FLG_UA

27

DAY_IS_REGULAR_WORKDAY_FLG_UA DAYS_IN_PAY_PERIOD_UA PAY_PERIOD_ELAPSED_PCT_UA REG_WORK_DAYS_IN_WEEK_UA REG_WORK_DAYS_IN_PAY_PERIOD_UA REG_WORK_DAYS_IN_MONTH_UA REG_WORK_DAYS_IN_FIS_QTR_UA REG_WORK_DAYS_IN_FED_QTR_UA

30 22 26 25 31 26 28 28

REG_WORK_DAYS_IN_YEAR_UA REG_WORK_DAYS_IN_FY_UA REG_WORK_DAYS_IN_FED_YEAR_UA


Fiscal calendar columns

25 23 29 23

DAY_OF_FISCAL_QUARTER_NBR_UA

28

DAY_OF_FISCAL_YEAR_NBR_UA WEEK_OF_FISCAL_YEAR_NBR_UA

26
27

WEEK_OF_FISCAL_YEAR_LD_UA WEEK_OF_FISCAL_YEAR_SD_UA

26 26

FISCAL_MONTH_NBR_UA

20

MONTH_OF_FISCAL_QUARTER_NBR_UA

31

FISCAL_QUARTER_NBR_UA

22

FISCAL_QUARTER_LD_UA

21

FISCAL_QUARTER_SD_UA

21

FISCAL_YEAR_SID

16

FISCAL_YEAR_NBR_UA

19

FISCAL_YEAR_LD_UA

18

FISCAL_YEAR_SD_UA

18

FISCAL_YEAR_START_DT_UA

24

FISCAL_YEAR_END_DT_UA

22

FIRST_DAY_OF_FISCAL_QTR_FLG_UA

31

LAST_DAY_OF_FISCAL_QTR_FLG_UA

30

FIRST_DAY_OF_FY_FLG_UA

23

LAST_DAY_OF_FY_FLG_UA

22

FIRST_MONTH_OF_FIS_QTR_FLG_UA

30

LAST_MONTH_OF_FIS_QTR_FLG_UA

29

FIRST_MONTH_OF_FY_FLG_UA

25

LAST_MONTH_OF_FY_FLG_UA

24

DAYS_IN_FISCAL_QUARTER_UA

26

DAYS_IN_FISCAL_YEAR_UA

23

FISCAL_QUARTER_ELAPSED_PCT_UA

29

FISCAL_YEAR_ELAPSED_PCT_UA
Federal fiscal year calendar columns

27 36

DAY_OF_FED_QUARTER_NBR_UA

25

DAY_OF_FED_YEAR_NBR_UA WEEK_OF_FED_YEAR_NBR_UA WEEK_OF_FED_YEAR_LD_UA WEEK_OF_FED_YEAR_SD_UA

23 24 23 23

FED_MONTH_NBR_UA

17

MONTH_OF_FED_QUARTER_NBR_UA

28

FED_QUARTER_NBR_UA

19

FED_QUARTER_LD_UA

18

FED_QUARTER_SD_UA

18

FED_YEAR_NBR_UA

16

FED_YEAR_LD_UA

15

FED_YEAR_SD_UA

15

FED_YEAR_START_DT_UA

21

FED_YEAR_END_DT_UA

19

FIRST_DAY_OF_FED_QTR_FLG_UA

27

LAST_DAY_OF_FED_QTR_FLG_UA

26

FIRST_DAY_OF_FED_YEAR_FLG_UA

29

LAST_DAY_OF_FED_YEAR_FLG_UA

28

FIRST_MONTH_OF_FED_QTR_FLG_UA

30

LAST_MONTH_OF_FED_QTR_FLG_UA

29

FIRST_MNTH_OF_FED_YEAR_FLG_UA

30

LAST_MONTH_OF_FED_YEAR_FLG_UA

30

DAYS_IN_FED_QUARTER_UA

22

DAYS_IN_FED_YEAR_UA

20

FED_QUARTER_ELAPSED_PCT_UA

26

FED_YEAR_ELAPSED_PCT_UA

24

LOAD_ERROR DATA_ORIGIN CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID

11 12 16 16 10

Table Join Logic


Table Name Order Lookup Logic

PS_D_DAY

1 N/A

PS_PAY_CALENDAR

PS_D_DAY.DAY_DT BETWEEN PS_PAY_CALENDAR.PAY_BEGIN_DT AND PS_PAY_CALENDAR.PAY_END_DT AND PS_PAY_CALENDAR.PAY_OFF_CYCLE = 'N' and PS_PAY_CALENDAR.PAYGROUP = 2 'CLE' UA_D_DAY.DAY_DT=PS_HOLIDAY_DATE. HOLIDAY AND PS_HOLIDAY_DATE.HOLIDAY_SCHEDULE ='HOL' AND 3 PS_HOLIDAY_DATE.SRC_SYS_ID = 'HCM' PS_D_DAY.DAY_DT = 4 UA_UNIV_CLOSURE.UNIV_CLOSURE_DT

PS_HOLIDAY_DATE

kuali_admin.UA_UNIV_CLOSURE

Data Type

Replace NULL With

Constraints

Source Type

NUMBER(38) DATE
NUMBER(38)

2147483646 Jan 1, 1990


0

NOT NULL NOT NULL


NOT NULL

Copy Copy
Copy

VARCHAR2(30)
VARCHAR2(3)

NOT NULL
NOT NULL

Copy
Copy

NUMBER(38) NUMBER(38) NUMBER(38) NUMBER(38)


NUMBER(38) NUMBER(38) VARCHAR2(30)

0 0 0 0
2147483646 0 -

NOT NULL NOT NULL NOT NULL NOT NULL


NOT NULL NOT NULL NOT NULL

Copy Copy Copy Copy


Copy Copy Copy

VARCHAR2(10) NUMBER(38) NUMBER(38) NUMBER(38) NUMBER(38) VARCHAR2(30) VARCHAR2(3) DATE NUMBER(38) NUMBER(38) NUMBER(38) VARCHAR2(30) VARCHAR2(5) NUMBER(38)

NOT NULL 0 NOT NULL 0 NOT NULL 2147483646 NOT NULL 0 NOT NULL NOT NULL NOT NULL 31-Dec-85 NOT NULL 0 NOT NULL 2147483646 NOT NULL 0 NOT NULL NOT NULL NOT NULL 0 NOT NULL

Generated Copy Copy Copy Copy Copy Copy Generated Copy Copy Copy Copy Copy Copy

NUMBER(38) NUMBER(38) VARCHAR2(30) VARCHAR2(1) VARCHAR2(1) VARCHAR2(1) VARCHAR2(1)


VARCHAR2(1)

2147483646 -

NOT NULL 0 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL
NOT NULL

Copy Copy Copy Copy Copy Copy Copy


Copy

VARCHAR2(1)

NOT NULL

Copy

VARCHAR2(1) VARCHAR2(1) NUMBER(1) NUMBER(2)

NOT NULL NOT NULL 0 NOT NULL 0 NOT NULL

Copy Copy Generated Generated

NUMBER(3) NUMBER(3)

0 NOT NULL 0 NOT NULL

Generated Generated

NUMBER(3) NUMBER(2)
DATE

0 NOT NULL 0 NOT NULL


31-Dec-85 NOT NULL

Generated Generated
Copy

DATE

31-Dec-85 NOT NULL

Copy

NUMBER(1)
NUMBER(2) NUMBER(2) NUMBER(2)

0 NOT NULL
0 NOT NULL 0 NOT NULL 0 NOT NULL

Generated
Generated Generated Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1) VARCHAR2(1)

NOT NULL NOT NULL

Generated Copy

VARCHAR2(1) VARCHAR2(30)

NOT NULL NOT NULL

Generated Copy

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1) NUMBER(2) NUMBER(3) NUMBER(1) NUMBER(2) NUMBER(2) NUMBER(2) NUMBER(32)

NOT NULL 0 NOT NULL 0 NOT NULL 0 NOT NULL 0 NOT NULL 0 NOT NULL 0 NOT NULL 0 NOT NULL

Generated Generated Generated Generated Generated Generated Generated Generated

NUMBER(3) NUMBER(3) NUMBER(3)

0 NOT NULL 0 NOT NULL 0 NOT NULL

Generated Generated Generated

NUMBER(2)

0 NOT NULL

Generated

NUMBER(3)
NUMBER(2)

NOT NULL
0 NOT NULL

Generated
Generated

VARCHAR2(30) VARCHAR2(15)

NOT NULL NOT NULL

Generated Generated

NUMBER(2)

0 NOT NULL

Generated

NUMBER(1)

0 NOT NULL

Generated

NUMBER(1)

0 NOT NULL

Generated

VARCHAR2(30)

NOT NULL

Generated

VARCHAR2(10)

NOT NULL

Generated

NUMBER(4)

2147483646

NOT NULL

Generated

NUMBER(4)

0 NOT NULL

Generated

VARCHAR2(30)

NOT NULL

Generated

VARCHAR2(10)

NOT NULL

Generated

DATE

31-Dec-85 NOT NULL

Generated

DATE

31-Dec-85 NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

NUMBER(2)

0 NOT NULL

Generated

NUMBER(3)

0 NOT NULL

Generated

NUMBER(3)

0 NOT NULL

Generated

NUMBER(3)

0 NOT NULL

Generated

NUMBER(2)

0 NOT NULL

Generated

NUMBER(3) NUMBER(3) VARCHAR2(30) VARCHAR2(15)

NOT NULL 0 NOT NULL

Generated Generated Generated Generated

NOT NULL NOT NULL

NUMBER(2)

0 NOT NULL

Generated

NUMBER(1)

0 NOT NULL

Generated

NUMBER(1)

0 NOT NULL

Generated

VARCHAR2(30)

NOT NULL

Generated

VARCHAR2(10)

NOT NULL

Generated

NUMBER(4)

0 NOT NULL

Generated

VARCHAR2(30)

NOT NULL

Generated

VARCHAR2(10)

NOT NULL

Generated

DATE

31-Dec-85 NOT NULL

Generated

DATE

31-Dec-85 NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

VARCHAR2(1)

NOT NULL

Generated

NUMBER(2)

0 NOT NULL

Generated

NUMBER(3)

0 NOT NULL

Generated

NUMBER(3)

0 NOT NULL

Generated

NUMBER(3)

0 NOT NULL

Generated

VARCHAR2(1) VARCHAR2(1) DATE DATE NUMBER(10)

N S

NOT NULL NOT NULL

Copy Copy Generated Generated Generated

Start Timestamp of ETL Job NOT NULL Start Timestamp of ETL Job NOT NULL

0 NOT NULL

Error Table

None

None

None

None

Source Table

PS_D_DAY PS_D_DAY
PS_D_DAY

Source Column DAY_SID DAY_DT DAY_NUM DAY_DESCR DAY_ABBR DAY_JULIAN

PS_D_DAY
PS_D_DAY

PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY


PS_D_DAY PS_D_DAY PS_D_DAY

DAY_WK_NUM DAY_MTH_NUM DAY_YR_NUM


WEEK_SID WEEK_NUM WEEK_DESCR

PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY

WEEK_DESCR WEEK_MTH_NUM WEEK_YR_NUM MONTH_SID MONTH_YR_NUM MONTH_DESCR MONTH_ABBR DAY_DT MONTH_QTR_NUM QUARTER_SID QUARTER_NUM QUARTER_DESC QUARTER_ABBR QUARTER_YR_NUM

PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY

PS_D_DAY

YEAR_SID, YEAR_NUM YEAR_DESCR FIRSTDAYWK_FLG LASTDAYWK_FLG FIRSTDAYMTH_FLG LASTDAYMTH_FLG


FIRST_DAY_QTR_FLG

PS_D_DAY

LASTDAYQTR_FLG

PS_D_DAY PS_D_DAY N/A PS_D_DAY

FIRSTDAYYR_FLG LASTDAYYR_FLG N/A DAY_DT

PS_D_DAY PS_D_DAY

YEAR_NUM

DAY_MTH_NUM, DAY_DT

PS_D_DAY
PS_D_DAY, PS_PAY_CALENDAR PS_PAY_CALENDAR

YEAR_NUM, DAY_YR_NUM DAY_DT, PAY_BEGIN_DT PAY_BEGIN_DT

PS_PAY_CALENDAR

PAY_END_DT

PS_PAY_CALENDAR
PS_PAY_CALENDAR PS_PAY_CALENDAR PS_PAY_CALENDAR

PAY_END_DT
PAY_END_DT PAY_END_DT PAY_END_DT

PS_D_DAY

DAY_DT, PAY_BEGIN_DT

PS_D_DAY

DAY_DT, PAY_END_DT

PS_D_DAY PS_D_DAY

DAY_DT, PAY_END_DT, LASTDAYMTH_FLG

DAY_WEEKEND_FLG

PS_HOLIDAY_DATE PS_HOLIDAY_DATE

HOLIDAY DESCR

UA_UNIV_CLOSURE

UNIV_CLOSURE_DT

PS_HOLIDAY_DATE, UA_UNIV_CLOSURE

PS_PAY_CALENDAR
PS_D_DAY, PS_PAY_CALENDAR

HOLIDAY, UNIV_CLOSURE_DT PAY_END_DT, PAY_BEGIN_DT DAY_DT, PAY_BEGIN_DT, PAY_END_DT

PS_D_DAY PS_D_DAY, PS_PAY_CALENDAR PS_D_DAY PS_D_DAY PS_D_DAY

N/A N/A N/A N/A N/A

PS_D_DAY PS_D_DAY PS_D_DAY

N/A N/A N/A

PS_D_DAY

N/A

PS_D_DAY
PS_D_DAY

DAY_YR_NUM, YEAR_NUM WEEK_YR_NUM, YEAR_NUM

PS_D_DAY PS_D_DAY

WEEK_YR_NUM, YEAR_NUM WEEK_YR_NUM, YEAR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

YEAR_SID

PS_D_DAY

YEAR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

FIRSTDAYMTH_FLG, MONTH_YR_NUM

PS_D_DAY

LASTDAYMTH_FLG, MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM, DAY_MTH_NUM

PS_D_DAY

MONTH_YR_NUM, DAY_MTH_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

YEAR_NUM, MONTH_YR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

PS_D_DAY

DAY_YR_NUM, YEAR_NUM

PS_D_DAY

YEAR_NUM, MONTH_YR_NUM

PS_D_DAY PS_D_DAY PS_D_DAY PS_D_DAY

DAY_YR_NUM, YEAR_NUM WEEK_YR_NUM, YEAR_NUM WEEK_YR_NUM, YEAR_NUM WEEK_YR_NUM, YEAR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

FIRSTDAYMTH_FLG, MONTH_YR_NUM

PS_D_DAY

LASTDAYMTH_FLG, MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM, DAY_MTH_NUM

PS_D_DAY

MONTH_YR_NUM, DAY_MTH_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

MONTH_YR_NUM

PS_D_DAY

YEAR_NUM, MONTH_YR_NUM

PS_D_DAY

YEAR_NUM

PS_D_DAY

YEAR_NUM, MONTH_YR_NUM

PS_D_DAY

PS_D_DAY PS_D_DAY
N/A

DAY_YR_NUM, YEAR_NUM LOAD_ERROR DATA_ORIGIN

N/A

N/A N/A

N/A N/A

Transform Logic

Purpose

N/A N/A
N/A

N/A
N/A

N/A N/A N/A N/A


N/A N/A N/A CASE WHEN PS_D_DAY.WEEK_DESCR = '-' THEN '-' ELSE INITCAP( SUBSTR( PS_D_DAY.WEEK_DESCR, 6 ) ) END N/A N/A N/A N/A N/A N/A LAST_DAY( PS_D_DAY.DAY_DT ) N/A N/A N/A N/A N/A N/A

N/A N/A N/A N/A N/A N/A N/A

N/A

N/A

N/A N/A 7 TO_NUMBER( TO_CHAR( LAST_DAY(PS_D_DAY.DAY_DT), 'DD' ) )


CASE WHEN PS_D_DAY.YEAR_NUM = 0 THEN 0 ELSE TO_NUMBER( TO_CHAR( TO_DATE( '31-DEC-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ), 'DDD' ) ) END ROUND( PS_D_DAY.DAY_MTH_NUM / TO_NUMBER( TO_CHAR( LAST_DAY(PS_D_DAY.DAY_DT), 'DD' ) ) * 100 ) CASE WHEN PS_D_DAY.YEAR_NUM = 0 THEN 0 ELSE ROUND( PS_D_DAY.DAY_YR_NUM / TO_NUMBER( TO_CHAR( TO_DATE( '31-DEC-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ), 'DDD' ) ) * 100 ) END

(PS_D_DAY.DAY_DT - PS_PAY_CALENDAR.PAY_BEGIN_DT) + 1
N/A

N/A 1 through 3 for first, second and third pay end date in the month. The first pay period in a month is the first one with a pay end date in that month. Days in a pay period that cross into the next month, still get the next number. But in the new month, start with 1 again.
1 through n for first, second, etc pay end date in the calendar year 1 through n for first, second, etc pay end date in the fiscal year 1 through n for first, second, etc pay end date in the federal fiscal year CASE WHEN PS_D_DAY.DAY_DT = PS_PAY_CALENDAR.PAY_BEGIN_DT THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.DAY_DT = PS_PAY_CALENDAR.PAY_END_DT THEN 'Y' ELSE 'N' END

CASE WHEN PS_D_DAY.DAY_DT = PS_PAY_CALENDAR.PAY_END_DT THEN 'Y' WHEN PS_D_DAY.LASTDAYMTH_FLG = 'Y' THEN 'Y' ELSE 'N' END

N/A
CASE WHEN fiscal year is less than min fiscal year in PS_HOLIDAY_DATE or greater than max fiscal year there THEN '-' ELSE WHEN PS_HOLIDAY_DATE.HOLIDAY IS NOT NULL THEN 'Y' ELSE 'N' END N/A CASE WHEN fiscal year is less than min fiscal year in UA_UNIV_CLOSURE or greater than max fiscal year there THEN '-' ELSE WHEN UA_UNIV_CLOSURE.UNIV_CLOSURE_DT IS NOT NULL THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.DAY_WEEKEND_FLG = 'Y' THEN 'N' ELSE WHEN a holiday or winter closure THEN 'N' ELSE 'Y' END (PS_PAY_CALENDAR.PAY_END_DT - PS_PAY_CALENDAR.PAY_BEGIN_DT) +1 ROUND( (PS_D_DAY.DAY_DT - PS_PAY_CALENDAR.PAY_BEGIN_DT + 1)/ (PS_PAY_CALENDAR.PAY_END_DT - PS_PAY_CALENDAR.PAY_BEGIN_DT + 1) * 100 )

The holiday table in HCM is not filled out very far in advance and is missing the historical information. Nargis is working with them to include historical data. HCM does not store the winter closure days!!!! We have a handcreated table in EPM to store those days. Nargis is looking into this more with the HCM people.

5 minus holidays minus university closure days Days in pay period minus weekends minus holidays minus university closure Days in month minus weekends minus holidays minus university closure Days in fiscal quarter minus weekends minus holidays minus university closure Days in federal fiscal quarter minus weekends minus holidays minus university closure

Days in year minus weekends minus holidays minus university closure Days in fiscal year minus weekends minus holidays minus university closure Days in federal fiscal year minus weekends minus holidays minus university closure CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 3 THEN PS_D_DAY.DAY_YR_NUM WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 4 AND 6 THEN PS_D_DAY.DAY_DT - TO_DATE( '01-04-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DDMM-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 9 THEN PS_D_DAY.DAY_DT - TO_DATE( '01-07-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DDMM-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN PS_D_DAY.DAY_DT - TO_DATE( '01-10-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DDMM-YYYY' ) + 1 ELSE 0 END CASE
WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN PS_D_DAY.DAY_YR_NUM + TO_CHAR( TO_DATE( '31-12-' || TO_CHAR(PS_D_DAY.YEAR_NUM - 1), 'DD-MM-YYYY' ), 'DDD' ) TO_CHAR( TO_DATE( '30-06-' || TO_CHAR(PS_D_DAY.YEAR_NUM - 1), 'DDMM-YYYY' ), 'DDD' ) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN PS_D_DAY.DAY_YR_NUM - TO_CHAR( TO_DATE( '30-06-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ), 'DDD' ) ELSE 0 END Start counting with first week that contains a Thursday? CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN PS_D_DAY.YEAR_NUM WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN PS_D_DAY.YEAR_NUM + 1 ELSE 0 END || ' Fiscal Week ' || <fiscal week number> 'Fiscal Week ' || <fiscal week number>

CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN PS_D_DAY.MONTH_YR_NUM + 6 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN PS_D_DAY.MONTH_YR_NUM - 6 ELSE 0 END CASE WHEN PS_D_DAY.MONTH_YR_NUM IN ( 7, 10, 1, 4 ) THEN 1 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 8, 11, 2, 5 ) THEN 2 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 9, 12, 3, 6 ) THEN 3 ELSE 0 END CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 3 THEN 3 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 4 AND 6 THEN 4 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 9 THEN 1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN 2 ELSE 0 END 'Fiscal Quarter ' || CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 3 THEN 3 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 4 AND 6 THEN 4 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 9 THEN 1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN 2 ELSE 0 END

FQtr ' || CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 3 THEN 3 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 4 AND 6 THEN 4 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 9 THEN 1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN 2 ELSE 0 END CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN PS_D_DAY.YEAR_SID WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN CASE WHEN PS_D_DAY.YEAR_SID = 0 THEN 0 ELSE PS_D_DAY.YEAR_SID + 1 END ELSE 0 END CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN PS_D_DAY.YEAR_NUM WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN PS_D_DAY.YEAR_NUM + 1 ELSE 0 END 'Fiscal Year ' || CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN TO_CHAR(PS_D_DAY.YEAR_NUM - 1) || ' - ' || TO_CHAR(PS_D_DAY.YEAR_NUM) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN TO_CHAR(PS_D_DAY.YEAR_NUM) || ' - ' || TO_CHAR(PS_D_DAY.YEAR_NUM + 1) ELSE '-' END AS

'FY ' || CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN TO_CHAR(PS_D_DAY.YEAR_NUM) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN TO_CHAR(PS_D_DAY.YEAR_NUM + 1) ELSE '-' END AS CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN TO_DATE( '01-07-' || TO_CHAR(PS_D_DAY.YEAR_NUM - 1), 'DD-MMYYYY' ) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN TO_DATE( '01-07-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) ELSE TO_DATE( '01-01-1900', 'DD-MM-YYYY' ) END CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN TO_DATE( '30-06-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN TO_DATE( '30-06-' || TO_CHAR(PS_D_DAY.YEAR_NUM + 1), 'DD-MMYYYY' ) ELSE TO_DATE( '01-01-1900', 'DD-MM-YYYY' ) END CASE WHEN PS_D_DAY.FIRSTDAYMTH_FLG = 'Y' AND PS_D_DAY.MONTH_YR_NUM IN ( 1, 4, 7, 10 ) THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.LASTDAYMTH_FLG = 'Y' AND PS_D_DAY.MONTH_YR_NUM IN ( 3, 6, 9, 12 ) THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.MONTH_YR_NUM = 7 AND PS_D_DAY.DAY_MTH_NUM = 1 THEN 'Y' ELSE 'N' END

CASE WHEN PS_D_DAY.MONTH_YR_NUM 30 THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.MONTH_YR_NUM 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.MONTH_YR_NUM 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.MONTH_YR_NUM 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.MONTH_YR_NUM 'Y' ELSE 'N' END

= 6 AND PS_D_DAY.DAY_MTH_NUM =

IN ( 1, 4, 7, 10 ) THEN

IN ( 3, 6, 9, 12 ) THEN

= 7 THEN

= 6 THEN

CASE WHEN PS_D_DAY.YEAR_NUM = 0 THEN 0 ELSE CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 3 THEN TO_DATE( '31-MAR-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MONYYYY' ) - TO_DATE( '01-JAN-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DDMON-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 4 AND 6 THEN TO_DATE( '30-JUN-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MONYYYY' ) - TO_DATE( '01-APR-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DDMON-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 9 THEN TO_DATE( '30-SEP-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MONYYYY' ) - TO_DATE( '01-JUL-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DDMON-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN TO_DATE( '31-DEC-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MONYYYY' ) - TO_DATE( '01-OCT-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DDMON-YYYY' ) + 1 ELSE 0 END CASE WHEN PS_D_DAY.YEAR_NUM = 0 THEN 0 ELSE CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN TO_NUMBER( TO_CHAR( TO_DATE( '30-JUN-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ), 'DDD' ) ) + TO_NUMBER( TO_CHAR( TO_DATE( '31-DEC-' || TO_CHAR( PS_D_DAY.YEAR_NUM - 1 ), 'DD-MON-YYYY' ), 'DDD' ) ) - TO_NUMBER( TO_CHAR( TO_DATE( '30-JUN-' || TO_CHAR( PS_D_DAY.YEAR_NUM - 1 ), 'DD-MON-YYYY' ), 'DDD' ) ) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN TO_NUMBER( TO_CHAR( TO_DATE( '30-JUN-' || TO_CHAR( PS_D_DAY.YEAR_NUM + 1 ), 'DD-MON-YYYY' ), 'DDD' ) ) + TO_NUMBER( TO_CHAR( TO_DATE( '31-DEC-' || TO_CHAR( PS_D_DAY.YEAR_NUM ), 'DDMON-YYYY' ), 'DDD' ) ) - TO_NUMBER( TO_CHAR( TO_DATE( '30-JUN-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ), 'DDD' ) ) ELSE 0 END END

CASE WHEN PS_D_DAY.YEAR_NUM = 0 THEN 0 ELSE CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 3 THEN ( PS_D_DAY.DAY_DT - TO_DATE( '01-JAN-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) / ( TO_DATE( '31MAR-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) - TO_DATE( '01-JAN-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) * 100 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 4 AND 6 THEN ( PS_D_DAY.DAY_DT - TO_DATE( '01-APR-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) / ( TO_DATE( '30JUN-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) - TO_DATE( '01-APR-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) * 100 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 9 THEN ( PS_D_DAY.DAY_DT - TO_DATE( '01-JUL-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) / ( TO_DATE( '30SEP-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) - TO_DATE( '01-JUL-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) * 100 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN ( PS_D_DAY.DAY_DT - TO_DATE( '01-OCT-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) / ( TO_DATE( '31DEC-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) - TO_DATE( '01-OCT-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) * 100 ELSE 0

CASE WHEN PS_D_DAY.YEAR_NUM = 0 THEN 0 ELSE ROUND( (CASE -- day of f year WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN PS_D_DAY.DAY_YR_NUM + TO_CHAR( TO_DATE( '31-12-' || TO_CHAR(PS_D_DAY.YEAR_NUM - 1), 'DD-MM-YYYY' ), 'DDD' ) TO_CHAR( TO_DATE( '30-06-' || TO_CHAR(PS_D_DAY.YEAR_NUM - 1), 'DDMM-YYYY' ), 'DDD' ) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN PS_D_DAY.DAY_YR_NUM - TO_CHAR( TO_DATE( '30-06-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ), 'DDD' ) ELSE 0 END) / (CASE -- days in f year WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 6 THEN TO_NUMBER( TO_CHAR( TO_DATE( '30-JUN-' || PS_D_DAY.YEAR_NUM, 'DD-MON-YYYY' ), 'DDD' ) ) + TO_NUMBER( TO_CHAR( TO_DATE( '31-DEC-' || TO_CHAR( PS_D_DAY.YEAR_NUM - 1 ), 'DD-MON-YYYY' ), 'DDD' ) ) TO_NUMBER( TO_CHAR( TO_DATE( '30-JUN-' || TO_CHAR( PS_D_DAY.YEAR_NUM - 1 ), 'DD-MON-YYYY' ), 'DDD' ) ) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 12 THEN TO_NUMBER( TO_CHAR( TO_DATE( '30-JUN-' || TO_CHAR( PS_D_DAY.YEAR_NUM + 1 ), 'DD-MON-YYYY' ), 'DDD' ) ) + TO_NUMBER( TO_CHAR( TO_DATE( '31-DEC-' || PS_D_DAY.YEAR_NUM, 'DD-MON-YYYY' ), 'DDD' ) ) - TO_NUMBER( TO_CHAR( TO_DATE( '30-JUN-' || PS_D_DAY.YEAR_NUM, 'DD-MON-YYYY' ), 'DDD' ) ) ELSE 0

ALL WRONG JUST COPIED FROM FISCAL CASE


WHEN PS_D_DAY.MONTH_YR_NUM IN (10, 11, 12) THEN PS_D_DAY.DAY_DT - TO_DATE( '01-10-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM IN (1, 2, 3) THEN PS_D_DAY.DAY_DT - TO_DATE( '01-01-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM IN (4, 5, 6) THEN PS_D_DAY.DAY_DT - TO_DATE( '01-04-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM IN (7, 8, 9) THEN PS_D_DAY.DAY_DT - TO_DATE( '01-07-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) + 1 ELSE 0 END

CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 9 THEN PS_D_DAY.DAY_YR_NUM + TO_CHAR( TO_DATE( '31-12-' || TO_CHAR(PS_D_DAY.YEAR_NUM - 1), 'DD-MM-YYYY' ), 'DDD' ) TO_CHAR( TO_DATE( '30-09-' || TO_CHAR(PS_D_DAY.YEAR_NUM - 1), 'DDMM-YYYY' ), 'DDD' ) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN PS_D_DAY.DAY_YR_NUM - TO_CHAR( TO_DATE( '30-09-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ), 'DDD' ) ELSE 0 END Start counting with first week that contains a Thursday?

CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 9 THEN PS_D_DAY.MONTH_YR_NUM + 3 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN PS_D_DAY.MONTH_YR_NUM - 9 ELSE 0 END CASE WHEN PS_D_DAY.MONTH_YR_NUM IN (10, 1, 4, 7) THEN 1 WHEN PS_D_DAY.MONTH_YR_NUM IN (11, 2, 5, 8) THEN 2 WHEN PS_D_DAY.MONTH_YR_NUM IN (12, 3, 6, 9) THEN 3 ELSE 0 END CASE WHEN PS_D_DAY.MONTH_YR_NUM IN ( 10, 11, 12 ) THEN 1 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 1, 2, 3 ) THEN 2 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 4, 5, 6 ) THEN 3 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 7, 8, 9 ) THEN 4 ELSE 0 END

'Federal Quarter ' || CASE WHEN PS_D_DAY.MONTH_YR_NUM IN ( 10, 11, 12 ) THEN 1 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 1, 2, 3 ) THEN 2 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 4, 5, 6 ) THEN 3 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 7, 8, 9 ) THEN 4 ELSE 0 END 'Fed Qtr ' || CASE WHEN PS_D_DAY.MONTH_YR_NUM IN ( 10, 11, 12 ) THEN 1 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 1, 2, 3 ) THEN 2 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 4, 5, 6 ) THEN 3 WHEN PS_D_DAY.MONTH_YR_NUM IN ( 7, 8, 9 ) THEN 4 ELSE 0 END CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 9 THEN PS_D_DAY.YEAR_NUM WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN PS_D_DAY.YEAR_NUM + 1 ELSE 0 END 'Federal Fiscal Year ' || CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 9 THEN TO_CHAR(PS_D_DAY.YEAR_NUM - 1) || ' - ' || TO_CHAR(PS_D_DAY.YEAR_NUM) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN TO_CHAR(PS_D_DAY.YEAR_NUM) || ' - ' || TO_CHAR(PS_D_DAY.YEAR_NUM + 1) ELSE '-' END 'Fed FY' || CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 9 THEN TO_CHAR(PS_D_DAY.YEAR_NUM) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN TO_CHAR(PS_D_DAY.YEAR_NUM + 1) ELSE '-' END

CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 9 THEN TO_DATE( '01-10-' || TO_CHAR(PS_D_DAY.YEAR_NUM - 1), 'DD-MMYYYY' ) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN TO_DATE( '01-10-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) ELSE TO_DATE( '01-01-1900', 'DD-MM-YYYY' ) END CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 9 THEN TO_DATE( '30-09-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN TO_DATE( '30-09-' || TO_CHAR(PS_D_DAY.YEAR_NUM + 1), 'DD-MMYYYY' ) ELSE TO_DATE( '01-01-1900', 'DD-MM-YYYY' ) END CASE WHEN PS_D_DAY.FIRSTDAYMTH_FLG = 'Y' AND PS_D_DAY.MONTH_YR_NUM IN ( 10, 1, 4, 7 ) THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.LASTDAYMTH_FLG = 'Y' AND PS_D_DAY.MONTH_YR_NUM IN ( 12, 3, 6, 9 ) THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.MONTH_YR_NUM = 10 AND PS_D_DAY.DAY_MTH_NUM = 1 THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.MONTH_YR_NUM = 9 AND PS_D_DAY.DAY_MTH_NUM = 30 THEN 'Y' ELSE 'N' END

CASE WHEN PS_D_DAY.MONTH_YR_NUM IN ( 10, 1, 4, 7 ) THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.MONTH_YR_NUM IN ( 12, 3, 6, 9 ) THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.MONTH_YR_NUM = 10 THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.MONTH_YR_NUM = 9 THEN 'Y' ELSE 'N' END CASE WHEN PS_D_DAY.YEAR_NUM = 0 THEN 0 ELSE CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 3 THEN TO_DATE( '31-03-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) - TO_DATE( '01-01-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) +1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 4 AND 6 THEN TO_DATE( '30-06-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) - TO_DATE( '01-04-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) +1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 9 THEN TO_DATE( '30-09-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) - TO_DATE( '01-07-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) +1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN TO_DATE( '31-12-' || TO_CHAR(PS_D_DAY.YEAR_NUM + 1), 'DD-MMYYYY' ) - TO_DATE( '01-10-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MMYYYY' ) + 1 ELSE 0 END

CASE WHEN PS_D_DAY.YEAR_NUM = 0 THEN 0 ELSE CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 9 THEN TO_DATE( '30-SEP-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MONYYYY' ) - TO_DATE( '01-OCT-' || TO_CHAR( PS_D_DAY.YEAR_NUM - 1 ), 'DD-MON-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN TO_DATE( '30-SEP-' || TO_CHAR( PS_D_DAY.YEAR_NUM + 1 ), 'DDMON-YYYY' ) - TO_DATE( '31-DEC-' || TO_CHAR( PS_D_DAY.YEAR_NUM ), 'DD-MON-YYYY' ) + 1 ELSE 0 END END CASE WHEN PS_D_DAY.YEAR_NUM = 0 THEN 0 ELSE CASE WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 3 THEN ( PS_D_DAY.DAY_DT - TO_DATE( '01-JAN-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) / ( TO_DATE( '31MAR-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) - TO_DATE( '01-JAN-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) * 100 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 4 AND 6 THEN ( PS_D_DAY.DAY_DT - TO_DATE( '01-APR-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) / ( TO_DATE( '30JUN-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) - TO_DATE( '01-APR-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) * 100 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 7 AND 9 THEN ( PS_D_DAY.DAY_DT - TO_DATE( '01-JUL-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) / ( TO_DATE( '30SEP-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) - TO_DATE( '01-JUL-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) * 100 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN ( PS_D_DAY.DAY_DT - TO_DATE( '01-OCT-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) / ( TO_DATE( '31DEC-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) - TO_DATE( '01-OCT-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MON-YYYY' ) + 1 ) * 100 ELSE 0

CASE WHEN PS_D_DAY.YEAR_NUM = 0 THEN 0 ELSE ROUND ( CASE -- day of fed year WHEN PS_D_DAY.MONTH_YR_NUM IN (10, 11, 12) THEN PS_D_DAY.DAY_DT - TO_DATE( '01-10-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM IN (1, 2, 3) THEN PS_D_DAY.DAY_DT - TO_DATE( '01-01-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM IN (4, 5, 6) THEN PS_D_DAY.DAY_DT - TO_DATE( '01-04-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM IN (7, 8, 9) THEN PS_D_DAY.DAY_DT - TO_DATE( '01-07-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MM-YYYY' ) + 1 ELSE 0 END / CASE -- Days in fed year WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 1 AND 9 THEN TO_DATE( '30-SEP-' || TO_CHAR(PS_D_DAY.YEAR_NUM), 'DD-MONYYYY' ) - TO_DATE( '01-OCT-' || TO_CHAR( PS_D_DAY.YEAR_NUM - 1 ), 'DD-MON-YYYY' ) + 1 WHEN PS_D_DAY.MONTH_YR_NUM BETWEEN 10 AND 12 THEN TO_DATE( '30-SEP-' || TO_CHAR( PS_D_DAY.YEAR_NUM + 1 ), 'DDMON-YYYY' ) - TO_DATE( '31-DEC-' || TO_CHAR( PS_D_DAY.YEAR_NUM ), 'DD-MON-YYYY' ) + 1 ELSE 0

N S
Start Timestamp of ETL Job

Start Timestamp of ETL Job

ETL Job Parameter

Comment

Driving Table: KF_H_KREW_DOC_TYP Grain: document type


Name Description Data Type

DOC_TYPE_SID DOC_TYPE_ID DOC_TYPE_CD DOC_TYPE_SD DOC_TYPE_LD DOC_TYPE_VERSION_NBR DOC_TYPE_ACTIVE_FLG DOC_TYPE_CURRENT_FLG DOC_TYPE_HEADER_ID DOC_TYPE_HANDLER_URL DOC_TYPE_POST_PROCESSOR_ID DOC_TYPE_JNDI_URL

NUMBER(10,0) NUMBER(19,0) VARCHAR2(255) VARCHAR2(500) VARCHAR2(4000) NUMBER(10,0) VARCHAR2(1) VARCHAR2(1) NUMBER(14,0) VARCHAR2(255) VARCHAR2(255) VARCHAR2(255)

DOC_TYPE_SEARCH_URL DOC_TYPE_ACTION_LIST_ID DOC_TYPE_ACTION_EMAIL_ID DOC_TYPE_NTE_ID DOC_TYPE_ROUTE_VERSION_NBR DOC_TYPE_NOTIFY_ADDR DOC_TYPE_SERVICE_NAMESPACE_ID DOC_TYPE_EMAIL_XSL DOC_TYPE_APPROVAL_CD DOC_TYPE_APPROVAL_GROUP_ID DOC_TYPE_REPORT_GROUP_ID DOC_TYPE_GROUP_ID DOC_TYPE_HELP_URL DOC_TYPE_PARENT_ID DOC_TYPE_PARENT_CD DOC_TYPE_PARENT_SD DOC_TYPE_PREVIOUS_VERSION_NBR DOC_TYPE_PREVIOUS_CD DOC_TYPE_PREVIOUS_SD EFF_START_DT

VARCHAR2(255) VARCHAR2(255) VARCHAR2(255) VARCHAR2(255) VARCHAR2(2) VARCHAR2(255) VARCHAR2(255) VARCHAR2(255) VARCHAR2(10) VARCHAR2(40) VARCHAR2(40) VARCHAR2(40) VARCHAR2(4000) NUMBER(19,0) VARCHAR2(255) VARCHAR2(500) NUMBER(19,0) VARCHAR2(255) VARCHAR2(500) DATE

EFF_END_DT CURRENT_IND SRC_SYS_ID

DATE CHAR(1) VARCHAR2(5 BYTE)

LOAD_ERROR

VARCHAR2(1 BYTE)

DATA_ORIGIN CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID

VARCHAR2(1 BYTE) DATE DATE NUMBER(10,0)

* all lookup conditions also include "<driving table>.SRC_SYS_ID = <lookup table>.SRC_SYS_ID AND <current>.EFFDT_FROM < * all lookup conditons return NULLs when lookup fails (aka outer-join logic) * all lookup conditions allow multiple rows to be returned from lookup

Replace NULL With

Constraints

SCD Function

Source Type

0 0 0 -

2147483646 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Surrogate Key Business Key Type II Type I Type I Type II Type II Type II Type I Type I Type I Type I

Generated Copy Copy Copy Copy Copy Transform Transform Copy Copy Copy Copy

0 0 01-JAN-1753 00:00:00

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type I Type I Type I Type I Type I Type I Type I Type II Type I Type I Type I Type I Type II Type II Type I Type II Type II Type I Effective Date

Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Transform

NOT NULL 31-DEC-9999 23:59:59 Y KFS NOT NULL NOT NULL Effective Date Effective Flag Business Key Transform Generated Copy

NOT NULL Insert Only

Generated

E Start time of ETL job Start time of ETL job Start time of ETL job

NOT NULL NOT NULL NOT NULL NOT NULL Insert Only Insert Only Insert Only Insert Only

Generated Generated Generated Generated

ble>.SRC_SYS_ID AND <current>.EFFDT_FROM <= <lookup table>.EFFDT_TO AND <current>.EFFDT_TO >= <lookup table>.EFFDT_FROM"

Source Table

Source Column

N/A N/A KF_H_KREW_DOC_TYP AL1 DOC_TYP_ID KF_H_KREW_DOC_TYP AL1 DOC_TYP_NM KF_H_KREW_DOC_TYP AL1 LBL KF_H_KREW_DOC_TYP AL1 DOC_TYP_DESC KF_H_KREW_DOC_TYP AL1 DOC_TYP_VER_NBR KF_H_KREW_DOC_TYP AL1 ACTV_IND KF_H_KREW_DOC_TYP AL1 CUR_IND KF_H_KREW_DOC_TYP AL1 DOC_HDR_ID KF_H_KREW_DOC_TYP AL1 DOC_HDLR_URL KF_H_KREW_DOC_TYP AL1 POST_PRCSR KF_H_KREW_DOC_TYP AL1 JNDI_URL

KF_H_KREW_DOC_TYP AL1 ADV_DOC_SRCH_URL KF_H_KREW_DOC_TYP AL1 CSTM_ACTN_LIST_ATTRIB_CLS_NM KF_H_KREW_DOC_TYP AL1 CSTM_ACTN_EMAIL_ATTRIB_CLS_NM KF_H_KREW_DOC_TYP AL1 CSTM_DOC_NTE_ATTRIB_CLS_NM KF_H_KREW_DOC_TYP AL1 RTE_VER_NBR KF_H_KREW_DOC_TYP AL1 NOTIFY_ADDR KF_H_KREW_DOC_TYP AL1 SVC_NMSPC KF_H_KREW_DOC_TYP AL1 EMAIL_XSL KF_H_KREW_DOC_TYP AL1 BLNKT_APPR_PLCY KF_H_KREW_DOC_TYP AL1 BLNKT_APPR_GRP_ID KF_H_KREW_DOC_TYP AL1 RPT_GRP_ID KF_H_KREW_DOC_TYP AL1 GRP_ID KF_H_KREW_DOC_TYP AL1 HELP_DEF_URL KF_H_KREW_DOC_TYP AL1 PARNT_ID KF_H_KREW_DOC_TYP AL2 DOC_TYP_NM KF_H_KREW_DOC_TYP AL2 LBL KF_H_KREW_DOC_TYP AL1 PREV_DOC_TYP_VER_NBR KF_H_KREW_DOC_TYP AL3 DOC_TYP_NM KF_H_KREW_DOC_TYP AL3 LBL Multiple Multiple

Multiple Multiple N/A N/A KF_H_KREW_DOC_TYP AL1 SRC_SYS_ID

N/A

N/A

N/A N/A N/A N/A N/A N/A N/A N/A

<lookup table>.EFFDT_FROM"

Lookup Logic*

Transform Logic

N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A

Surrogate key generator starting at 1 N/A N/A N/A N/A N/A if AL1.ACTV_IND = 1 then 'Y' else 'N' if AL1.CUR_IND = 1 then 'Y' else 'N' N/A N/A N/A N/A

N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A AL1.PARNT_ID = AL2.DOC_TYP_ID (+) AL1.PARNT_ID = AL2.DOC_TYP_ID (+) N/A AL1.PREV_DOC_TYP_VER_NBR = AL3.DOC_TYP_ID (+) AL1.PREV_DOC_TYP_VER_NBR = AL3.DOC_TYP_ID (+) N/A

N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A This is the max EFFDT_FROM value from all the tables joined to make this record.

N/A N/A N/A

This is the min EFFDT_TO value from all the tables joined to make this record. Y for initial value N for expire value N/A

If an error occurs when creating this row (e.g. a lookup error) this is Y otherwise it is N N/A Passed as a variable to the ETL job. Should be E for EPM-sourced data and S for source-systemsourced data. Start time of ETL job Start time of ETL job Batch ID of highest level ETL job that called this one.

N/A N/A N/A N/A

Purpose

Comment

Currently need to hard-code in SCD stage to intiial value to the Replace Nulls With value due to DataStage limitation.

Driving Table: KF_H_SH_ACCT_PERIOD Grain: fiscal period (basically months but also year end close and year start stuff)
Name Description Data Type

FPERIOD_SID FISCAL_YEAR FPERIOD_YEAR_NBR FPERIOD_NBR_UA FPERIOD_SD start date for the fiscal period based on the end date, except for year-long periods

NUMBER(10, 0) NUMBER(4,0) VARCHAR2(2 BYTE) VARCHAR2(6 BYTE) VARCHAR2(10 BYTE)

FPERIOD_START_DT_UA FPERIOD_END_DT fiscal quarter number w/ year attached

DATE DATE

FPERIOD_QUARTER_NBR_UA fiscal quarter number within that year

NUMBER(*, 0)

FPERIOD_QUARTER_YEAR_NBR_UA

NUMBER(*, 0)

fiscal quarter name

FPERIOD_QUARTER_SD_UA fiscal quarter start and end dates are pretty easy

VARCHAR2(10 BYTE)

FPERIOD_QUARTER_START_DT_UA fiscal quarter start and end dates are pretty easy

DATE

FPERIOD_QUARTER_END_DT_UA

DATE calculate fiscal year start date as the beginning of the DATE previous July calculate the fiscal year end date as the end of june for DATE that year

FPERIOD_YEAR_START_DT_UA

FPERIOD_YEAR_END_DT_UA

calculate the percentage that this fiscal period is through the fiscal year FPERIOD_YEAR_ELAPSED_PCT_UA FPERIOD_ACTIVE_FLG FPERIOD_BUDGET_ROLLOVER_FLG EFF_START_DT NUMBER(3, 2) VARCHAR2(1 BYTE) VARCHAR2(1 BYTE) DATE

EFF_END_DT

DATE

CURRENT_IND SRC_SYS_ID LOAD_ERROR DATA_ORIGIN CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID

CHAR(1) VARCHAR2(5 BYTE) VARCHAR2(1 BYTE) VARCHAR2(1 BYTE) DATE DATE NUMBER(10,0)

* all lookup conditions also include "<driving table>.SRC_SYS_ID = <lookup table>.SRC_SYS_ID AND <current>.EFFDT_FROM < * all lookup conditons return NULLs when lookup fails (aka outer-join logic) * all lookup conditions allow multiple rows to be returned from lookup

Replace NULL With

Constraints

SCD Function

0 -

2147483646 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Surrogate Key Business Key Business Key Type I Type I

NOT NULL NOT NULL

Type I Type I

NOT NULL

Type I

NOT NULL

Type I

NOT NULL

Type I

NOT NULL

Type I

NOT NULL

Type I

NOT NULL

Type I

NOT NULL

Type I

0 01-JAN-1753 00:00:00

NOT NULL NOT NULL NOT NULL NOT NULL

Type I Type I Type I Effective Date

NOT NULL 31-DEC-9999 23:59:59 Y KFS N E Start time of ETL job Start time of ETL job Start time of ETL job Effective Date Effective Flag Business Key Insert Only Insert Only Insert Only Insert Only Insert Only

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

C_SYS_ID AND <current>.EFFDT_FROM <= <lookup table>.EFFDT_TO AND <current>.EFFDT_TO >= <lookup table>.EFFDT_FROM"

Source Type

Source Table

Source Column

Generated Copy Copy Transform Copy

N/A KF_H_SH_ACCT_PERIOD KF_H_SH_ACCT_PERIOD KF_H_SH_ACCT_PERIOD KF_H_SH_ACCT_PERIOD

N/A UNIV_FISCAL_YR UNIV_FISCAL_PRD_CD UNIV_FISCAL_YR,UNIV_FISCAL_PRD_CD UNIV_FISCAL_PRD_NM

Transform Copy

KF_H_SH_ACCT_PERIOD KF_H_SH_ACCT_PERIOD

UNIV_FSCPD_END_DT UNIV_FSCPD_END_DT

Transform

KF_H_SH_ACCT_PERIOD

UNIV_FISCAL_YR, UNIV_FISCAL_PRD_CD

Transform

KF_H_SH_ACCT_PERIOD

UNIV_FISCAL_PRD_CD

Transform

KF_H_SH_ACCT_PERIOD

UNIV_FISCAL_YR, UNIV_FISCAL_PRD_CD

Transform

KF_H_SH_ACCT_PERIOD

UNIV_FISCAL_YR , UNIV_FSCPD_END_DT

Transform

KF_H_SH_ACCT_PERIOD

UNIV_FISCAL_YR , UNIV_FSCPD_END_DT

Transform

KF_H_SH_ACCT_PERIOD

UNIV_FISCAL_YR

Transform

KF_H_SH_ACCT_PERIOD

UNIV_FISCAL_YR

Transform Copy Copy Transform

KF_H_SH_ACCT_PERIOD KF_H_SH_ACCT_PERIOD KF_H_SH_ACCT_PERIOD KF_H_SH_ACCT_PERIOD

UNIV_FISCAL_PRD_CD ROW_ACTV_IND BDGT_ROLLOVER_CD EFFDT_FROM

Transform Generated Copy Generated Generated Generated Generated Generated

KF_H_SH_ACCT_PERIOD N/A KF_H_SH_ACCT_PERIOD N/A N/A N/A N/A N/A

EFFDT_TO N/A SRC_SYS_ID N/A N/A N/A N/A N/A

DT_TO >= <lookup table>.EFFDT_FROM"

Lookup Logic*

Transform Logic

N/A N/A N/A N/A N/A

N/A N/A

N/A

Surrogate key generator starting at 1 N/A N/A to_char(p.UNIV_FISCAL_YR) || p.UNIV_FISCAL_PRD_CD N/A CASE WHEN p.UNIV_FISCAL_PRD_CD IN ('AB','CB','BB') THEN to_date(to_char(p.UNIV_FISCAL_YR - 1) || '-07-01', 'yyyy-mm-dd') ELSE to_date( to_char(p.UNIV_FSCPD_END_DT, 'yyyy') || '-' || cast(to_char(p.UNIV_FSCPD_END_DT, 'mm') AS VARCHAR2(2)) || '-01', 'yyyy-mm-dd' ) END as PERIOD_START_DT_UA N/A case when (p.UNIV_FISCAL_PRD_CD IN ('AB','CB','BB')) OR (p.UNIV_FISCAL_PRD_CD between '01' and '03') then p.UNIV_FISCAL_YR || '1' when p.UNIV_FISCAL_PRD_CD between '04' and '06' then p.UNIV_FISCAL_YR || '2' when p.UNIV_FISCAL_PRD_CD between '07' and '09' then p.UNIV_FISCAL_YR || '3' else p.UNIV_FISCAL_YR || '4' end as PERIOD_QUARTER_NBR_UA

N/A

case when (p.UNIV_FISCAL_PRD_CD IN ('AB','CB','BB')) OR (p.UNIV_FISCAL_PRD_CD between '01' and '03') then '1' when p.UNIV_FISCAL_PRD_CD between '04' and '06' then '2' when p.UNIV_FISCAL_PRD_CD between '07' and '09' then '3' else '4' end as PERIOD_QUARTER_YEAR_NBR_UA

N/A

case when (p.UNIV_FISCAL_PRD_CD IN ('AB','CB','BB')) OR (p.UNIV_FISCAL_PRD_CD between '01' and '03') then 'Q1 ' || to_char(p.UNIV_FISCAL_YR) when p.UNIV_FISCAL_PRD_CD between '04' and '06' then 'Q2 ' || to_char(p.UNIV_FISCAL_YR) when p.UNIV_FISCAL_PRD_CD between '07' and '09' then 'Q3 ' || to_char(p.UNIV_FISCAL_YR) else 'Q4 ' || to_char(p.UNIV_FISCAL_YR) end as PERIOD_QUARTER_SD_UA case when (p.UNIV_FISCAL_PRD_CD IN ('AB','CB','BB')) OR (p.UNIV_FISCAL_PRD_CD between '01' and '03') then to_date(to_char(p.UNIV_FISCAL_YR - 1) || '-07-01', 'yyyymm-dd') when p.UNIV_FISCAL_PRD_CD between '04' and '06' then to_date(to_char(p.UNIV_FISCAL_YR - 1) || '-10-01', 'yyyymm-dd') when p.UNIV_FISCAL_PRD_CD between '07' and '09' then to_date(to_char(p.UNIV_FISCAL_YR) || '-01-01', 'yyyymm-dd') else to_date(to_char(p.UNIV_FISCAL_YR) || '-04-01', 'yyyymm-dd') end as PERIOD_QUARTER_START_DT_UA case when (p.UNIV_FISCAL_PRD_CD IN ('AB','CB','BB')) OR (p.UNIV_FISCAL_PRD_CD between '01' and '03') then to_date(to_char(p.UNIV_FISCAL_YR - 1) || '-09-30', 'yyyymm-dd') when p.UNIV_FISCAL_PRD_CD between '04' and '06' then to_date(to_char(p.UNIV_FISCAL_YR - 1) || '-12-31', 'yyyymm-dd') when p.UNIV_FISCAL_PRD_CD between '07' and '09' then to_date(to_char(p.UNIV_FISCAL_YR) || '-03-31', 'yyyymm-dd') else to_date(to_char(p.UNIV_FISCAL_YR) || '-06-30', 'yyyymm-dd') end as PERIOD_QUARTER_END_DT_UA,

N/A

N/A

N/A

to_date(to_char(p.UNIV_FISCAL_YR - 1) || '-07-01', 'yyyy-mm-dd')

N/A

to_date(to_char(p.UNIV_FISCAL_YR) || '-06-30', 'yyyy-mm-dd')

N/A N/A N/A N/A

case when p.UNIV_FISCAL_PRD_CD in ('AB','BB','CB') then 0 else round(((to_number(p.UNIV_FISCAL_PRD_CD)-1)/12),2) end as PERIOD_YEAR_ELAPSED_PCT_UA N/A N/A This is the max EFFDT_FROM value from all the tables joined to make this record.

N/A N/A N/A N/A N/A N/A N/A N/A

This is the min EFFDT_TO value from all the tables joined to make this record. Y for initial value N for expire value N/A If an error occurs when creating this row (e.g. a lookup error) this is Y otherwise it is N Passed as a variable to the ETL job. Should be E for EPMsourced data and S for source-system-sourced data. Start time of ETL job Start time of ETL job Batch ID of highest level ETL job that called this one.

Purpose

Comment

yyyy-mm-dd')

Currently need to hard-code in SCD stage to intiial value to the Replace Nulls With value due to DataStage limitation.

Driving table: KF_H_CA_OBJECT_CODE Grain: sub-object (including - for NULL sub-objects) Don't forget sub-object is a subdivision of both object and account.
Name Description Data Type Replace NULL With

OBJECT_CODE_SID FISCAL_YEAR CHART_CD CHART_LD OBJECT_CD OBJECT_LD OBJECT_SD

NUMBER(10,0) NUMBER(4,0) VARCHAR2(2 BYTE) VARCHAR2(40 BYTE) VARCHAR2(16 BYTE) VARCHAR2(160 BYTE) VARCHAR2(48 BYTE)

2147483646 0 -

SUB_OBJECT_CD

VARCHAR2(3)

SUB_OBJECT_LD

VARCHAR2(40)

SUB_OBJECT_SD

VARCHAR2(12)

SUB_OBJECT_ACTIVE_FLG

VARCHAR2(1)

SUB_OBJECT_ACCOUNT_N BR

VARCHAR2(7)

SUB_OBJECT_ACCOUNT_S D

VARCHAR2(40)

OBJECT_LEVEL_CD OBJECT_LEVEL_LD

VARCHAR2(4 BYTE) VARCHAR2(40 BYTE)

OBJECT_LEVEL_SD

VARCHAR2(12 BYTE)

OBJECT_LEVEL_ACTIVE_FL G

VARCHAR2(1 BYTE)

OBJECT_LEVEL_SORT_CD

VARCHAR2(2 BYTE)

OBJECT_CONSOLIDAT_CD

VARCHAR2(4 BYTE)

OBJECT_CONSOLIDAT_LD

VARCHAR2(40 BYTE)

OBJECT_CONSOLIDAT_SD

VARCHAR2(12 BYTE)

OBJECT_CONSOLIDAT_ACT IVE_FLG

VARCHAR2(1 BYTE)

OBJECT_CONSOLIDAT_SOR T_CD

VARCHAR2(2 BYTE)

OBJECT_TYPE_CD OBJECT_TYPE_LD OBJECT_TYPE_DEBIT_CRED IT_CD OBJECT_TYPE_INDIRECT_C OST_CD OBJECT_TYPE_BALANCE_C D OBJECT_TYPE_SORT_CD OBJECT_CATEGORY_CD OBJECT_CATEGORY_LD OBJECT_CATEGORY_SD OBJECT_CATEGORY_SORT_ CD OBJECT_CATEGORY_ACTIV E_FLG OBJECT_PARENT_CHART_C D OBJECT_PARENT_CHART_L D OBJECT_PARENT_OBJECT_ CD

VARCHAR2(2) VARCHAR2(40) VARCHAR2(1) VARCHAR2(1) VARCHAR2(1) VARCHAR2(2) VARCHAR2(2) VARCHAR2(40) VARCHAR2(12) VARCHAR2(2) VARCHAR2(1) VARCHAR2(8 BYTE) VARCHAR2(40 BYTE) VARCHAR2(16 BYTE)

OBJECT_PARENT_OBJECT_ LD

VARCHAR2(160 BYTE)

OBJECT_SUB_TYPE_CD OBJECT_SUB_TYPE_LD OBJECT_LEGACY_FRS_OBJ ECT_CD

VARCHAR2(2 BYTE) VARCHAR2(40 BYTE) VARCHAR2(16 BYTE)

OBJECT_LEGACY_FRS_OBJ ECT_LD

VARCHAR2(160 BYTE)

OBJECT_ACTIVE_FLG OBJECT_BUDGET_AGGREG ATION_CD OBJECT_BUDGET_AGGREG ATION_LD OBJECT_MANDATORY_XFE R_CD OBJECT_MANDATORY_XFE R_LD OBJECT_FEDERALLY_FUND ED_CD OBJECT_FEDERALLY_FUND ED_LD OBJECT_NEXT_YEAR_OBJE CT_CD

VARCHAR2(4 BYTE) VARCHAR2(4 BYTE) VARCHAR2(40 BYTE) VARCHAR2(4 BYTE) VARCHAR2(40 BYTE) VARCHAR2(4 BYTE) VARCHAR2(40 BYTE) VARCHAR2(16 BYTE)

OBJECT_NEXT_YEAR_OBJE CT_LD

VARCHAR2(160 BYTE)

EFF_START_DT

DATE

01-JAN-1753 00:00:00

EFF_END_DT

DATE 31-DEC-9999 23:59:59 Y

CURRENT_IND

CHAR(1)

SRC_SYS_ID LOAD_ERROR

VARCHAR2(5 BYTE) VARCHAR2(1 BYTE)

KFS N

DATA_ORIGIN CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID

VARCHAR2(1 BYTE) DATE DATE NUMBER(10,0)

E Start time of ETL job Start time of ETL job Start time of ETL job

* all lookup conditions also include "<driving table>.SRC_SYS_ID = <lookup table>.SRC_SYS_ID AND <current>.EFFDT_FROM < * all lookup conditons return NULLs when lookup fails (aka outer-join logic) * all lookup conditions allow multiple rows to be returned from lookup

n of both object and account.


Constraints SCD Function Source Type Source Table

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Surrogate Key Business Key Business Key Type I Business Key Type I Type I

Generated Copy Copy Copy Copy Copy Copy Generated

N/A KF_H_CA_OBJECT_CODE KF_H_CA_OBJECT_CODE KF_H_CA_CHART KF_H_CA_OBJECT_CODE KF_H_CA_OBJECT_CODE KF_H_CA_OBJECT_CODE

N/A

NOT NULL

Business Key Copy

KF_H_CA_SUB_OBJECT_CD Generated N/A

NOT NULL

Type I Copy

KF_H_CA_SUB_OBJECT_CD Generated N/A

NOT NULL

Type I Copy

KF_H_CA_SUB_OBJECT_CD

Generated N/A

NOT NULL

Type II Copy

KF_H_CA_SUB_OBJECT_CD

NOT NULL

Business Key

Copy KF_GL_ENTRY_T Generated N/A

NOT NULL

Type I Copy

NOT NULL NOT NULL

Type II Type I

Copy Copy

KF_H_CA_ACCOUNT KF_H_CA_OBJECT_CODE

KF_H_CA_OBJ_LEVEL NOT NULL Type I Copy KF_H_CA_OBJ_LEVEL NOT NULL Type II Copy KF_H_CA_OBJ_LEVEL NOT NULL Type I Copy KF_H_CA_OBJ_LEVEL NOT NULL Type II Copy KF_H_CA_OBJ_LEVEL

NOT NULL

Type I

Copy KF_H_CA_OBJ_CONSOLDTN

NOT NULL

Type I

Copy KF_H_CA_OBJ_CONSOLDTN

NOT NULL

Type II

Copy KF_H_CA_OBJ_CONSOLDTN

NOT NULL

Type I

Transform KF_H_CA_OBJ_CONSOLDTN

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Type II Type I Type II Type II Type II Type I Type II Type I Type I Type I Type II Type II Type I Type II

Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy

KF_H_CA_OBJ_TYPE KF_H_CA_OBJ_TYPE KF_H_CA_OBJ_TYPE KF_H_CA_OBJ_TYPE KF_H_CA_OBJ_TYPE KF_H_CA_OBJ_TYPE KF_H_CA_OBJ_TYPE KF_H_CA_ACCTG_CTGRY KF_H_CA_ACCTG_CTGRY KF_H_CA_ACCTG_CTGRY KF_H_CA_ACCTG_CTGRY KF_H_CA_OBJECT_CODE KF_H_CA_CHART KF_H_CA_OBJECT_CODE

NOT NULL

Type I

Copy KF_H_CA_OBJECT_CODE KF_H_CA_OBJECT_CODE KF_H_CA_OBJ_SUB_TYPE KF_H_CA_OBJECT_CODE

NOT NULL NOT NULL NOT NULL

Type II Type I Type I

Copy Copy Copy

NOT NULL

Type I

Copy KF_H_CA_OBJECT_CODE KF_H_CA_OBJECT_CODE KF_H_CA_OBJECT_CODE KF_H_CA_BDGT_AGGR KF_H_CA_OBJECT_CODE KF_H_CA_MNXFR_ELIM KF_H_CA_OBJECT_CODE KF_H_CA_FED_FND KF_H_CA_OBJECT_CODE

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Type II Type II Type I Type II Type I Type II Type I Type I

Copy Copy Copy Copy Copy Copy Copy Copy

NOT NULL

Type I

Copy KF_H_CA_OBJECT_CODE

NOT NULL

Effective Date

Transform

Multiple

NOT NULL Effective Date Effective Flag Transform Generated Multiple N/A

NOT NULL

NOT NULL NOT NULL

Business Key

Copy Generated

KF_H_CA_OBJECT_CODE N/A

Insert Only NOT NULL NOT NULL NOT NULL NOT NULL Insert Only Insert Only Insert Only Insert Only Generated Generated Generated Generated N/A N/A N/A N/A

D AND <current>.EFFDT_FROM <= <lookup table>.EFFDT_TO AND <current>.EFFDT_TO >= <lookup table>.EFFDT_FROM"

Source Table Alias Source Column

Lookup Logic*

N/A AL1 AL1 AL2 AL1 AL1 AL1

N/A AL1.UNIV_FISCAL_YR AL1.FIN_COA_CD AL2.FIN_COA_DESC AL1.FIN_OBJECT_CD AL1.FIN_OBJ_CD_NM AL1.FIN_OBJ_CD_SHRT_NM

NA N/A N/A AL1.FIN_COA_CD=AL2.FIN_COA_CD N/A N/A N/A

N/A

N/A

N/A AL1.UNIV_FISCAL_YR=AL15.UNIV_FISC AL_YR AND AL1.FIN_COA_CD=AL15.FIN_COA_CD AND AL1.FIN_OBJECT_CD=AL15.FIN_OBJEC T_CD AND AL15.FIN_SUB_OBJ_CD IS NOT NULL

AL15

AL15.FIN_SUB_OBJ_CD

N/A

N/A

N/A AL1.UNIV_FISCAL_YR=AL15.UNIV_FISC AL_YR AND AL1.FIN_COA_CD=AL15.FIN_COA_CD AND AL1.FIN_OBJECT_CD=AL15.FIN_OBJEC T_CD AND AL15.FIN_SUB_OBJ_CD IS NOT NULL

AL15

AL15.FIN_SUB_OBJ_CD_NM

N/A

N/A

N/A AL1.UNIV_FISCAL_YR=AL15.UNIV_FISC AL_YR AND AL1.FIN_COA_CD=AL15.FIN_COA_CD AND AL1.FIN_OBJECT_CD=AL15.FIN_OBJEC T_CD AND AL15.FIN_SUB_OBJ_CD IS NOT NULL

A15

AL15.FIN_SUBOBJ_SHRT_NM

N/A

N/A

N/A AL1.UNIV_FISCAL_YR=AL15.UNIV_FISC AL_YR AND AL1.FIN_COA_CD=AL15.FIN_COA_CD AND AL1.FIN_OBJECT_CD=AL15.FIN_OBJEC T_CD AND AL15.FIN_SUB_OBJ_CD IS NOT NULL AL1.FIN_COA_CD=AL20.FIN_COA_CD AND AL1.FIN_OBJECT_CD=AL20.FIN_OBJEC T_CD AND AL1.UNIV_FISCAL_YR=AL20.UNIV_FISC AL_YR

AL15

AL15.FIN_SUBOBJ_ACTV_CD

AL20

AL20.ACCOUNT_NBR

N/A

N/A

N/A AL15.ACCOUNT_NBR=AL16.ACCOUNT _NBR AND AL15.FIN_COA_CD=AL16.FIN_COA_CD N/A AL1.FIN_OBJ_LEVEL_CD = AL7.FIN_OBJ_LEVEL_CD AND AL1.FIN_COA_CD = AL7.FIN_COA_CD AL1.FIN_OBJ_LEVEL_CD = AL7.FIN_OBJ_LEVEL_CD AND AL1.FIN_COA_CD = AL7.FIN_COA_CD AL1.FIN_OBJ_LEVEL_CD = AL7.FIN_OBJ_LEVEL_CD AND AL1.FIN_COA_CD = AL7.FIN_COA_CD AL1.FIN_OBJ_LEVEL_CD = AL7.FIN_OBJ_LEVEL_CD AND AL1.FIN_COA_CD = AL7.FIN_COA_CD AL1.FIN_OBJ_LEVEL_CD = AL7.FIN_OBJ_LEVEL_CD AND AL1.FIN_COA_CD = AL7.FIN_COA_CD

AL16 AL1

AL16.ACCOUNT_NM AL1.FIN_OBJ_LEVEL_CD

AL7

AL7.FIN_OBJ_LEVEL_NM

AL7

AL7.FIN_OBJLVL_SHRT_NM

AL7

AL7.FIN_OBJLVL_ACTV_CD

AL7

AL7.FIN_REPORT_SORT_CD

AL7

AL7.FIN_CONS_OBJ_CD

AL13

AL13.FIN_CONS_OBJ_NM

AL13

AL13.FIN_CONOBJ_SHRT_NM

AL13

AL13.FIN_CONOBJ_ACTV_CD

AL13 AL5 AL5 AL5 AL5 AL5 AL5 AL5 AL14 AL14 AL14 AL14 AL1 AL3 AL1

AL13.FIN_REPORT_SORT_CD AL5.FIN_OBJ_TYP_CD

AL7.FIN_COA_CD=AL13.FIN_COA_CD AND AL7.FIN_CONS_OBJ_CD=AL13.FIN_CO NS_OBJ_CD AL7.FIN_COA_CD=AL13.FIN_COA_CD AND AL7.FIN_CONS_OBJ_CD=AL13.FIN_CO NS_OBJ_CD AL7.FIN_COA_CD=AL13.FIN_COA_CD AND AL7.FIN_CONS_OBJ_CD=AL13.FIN_CO NS_OBJ_CD AL7.FIN_COA_CD=AL13.FIN_COA_CD AND AL7.FIN_CONS_OBJ_CD=AL13.FIN_CO NS_OBJ_CD

AL1.FIN_OBJ_TYP_CD = AL5.FIN_OBJ_TYP_CD AL1.FIN_OBJ_TYP_CD = AL5.FIN_OBJ_TYP_CD AL5.FIN_OBJ_TYP_NM AL1.FIN_OBJ_TYP_CD = AL5.FIN_OBJ_TYP_CD AL5.FIN_OBJTYP_DBCR_CD AL1.FIN_OBJ_TYP_CD = AL5.FIN_OBJ_TYP_CD AL5.FIN_OBJ_TYP_ICR_CD AL1.FIN_OBJ_TYP_CD = AL5.FIN_OBJ_TYP_CD AL5.FUND_BALANCE_CD AL1.FIN_OBJ_TYP_CD = AL5.FIN_OBJ_TYP_CD AL5.FIN_REPORT_SORT_CD AL1.FIN_OBJ_TYP_CD = AL5.FIN_OBJ_TYP_CD AL5.ACCTG_CTGRY_CD AL5.ACCTG_CTGRY_CD=AL14.ACCTG_ CTGRY_CD AL14.ACCTG_CTGRY_DESC AL5.ACCTG_CTGRY_CD=AL14.ACCTG_ AL14.ACCTG_CTGRY_SHRT_NM CTGRY_CD AL5.ACCTG_CTGRY_CD=AL14.ACCTG_ CTGRY_CD AL14.FIN_REPORT_SORT_CD AL5.ACCTG_CTGRY_CD=AL14.ACCTG_ CTGRY_CD AL14.ROW_ACTV_IND AL1.RPTS_TO_FIN_COA_CD AL3.FIN_COA_DESC AL1.RPTS_TO_FIN_OBJ_CD N/A AL1.RPTS_TO_FIN_COA_CD = AL3.FIN_COA_CD N/A

AL4 AL1 AL6 AL1

AL4.FIN_OBJ_CD_NM AL1.FIN_OBJ_SUB_TYP_CD AL6.FIN_OBJ_SUB_TYP_NM AL1.HIST_FIN_OBJECT_CD

AL1.RPTS_TO_FIN_OBJ_CD = AL4.FIN_OBJECT_CD AND AL1.UNIV_FISCAL_YR = AL4.UNIV_FISCAL_YR AND AL1.RPTS_TO_FIN_COA_CD = AL4.FIN_COA_CD N/A AL1.FIN_OBJ_SUB_TYP_CD = AL6.FIN_OBJ_SUB_TYP_CD N/A AL1.UNIV_FISCAL_YR = AL8.UNIV_FISCAL_YR AND AL1.FIN_COA_CD = AL8.FIN_COA_CD AND AL1.HIST_FIN_OBJECT_CD = AL8.FIN_OBJECT_CD N/A N/A AL1.FOBJ_BDGT_AGGR_CD = AL10.FOBJ_BDGT_AGGR_CD N/A AL1.FOBJ_MNXFR_ELIM_CD = AL12.FOBJ_MNXFR_ELIM_CD N/A AL1.FIN_FED_FUNDED_CD = AL11.FIN_FED_FUNDED_CD N/A AL1.UNIV_FISCAL_YR = AL9.UNIV_FISCAL_YR AND AL1.FIN_COA_CD = AL9.FIN_COA_CD AND AL1.NXT_YR_FIN_OBJ_CD = AL9.FIN_OBJECT_CD N/A

AL8 AL1 A1 AL10 AL1 AL12 AL1 AL11 AL1

AL8.FIN_OBJ_CD_NM AL1.FIN_OBJ_ACTIVE_CD AL1.FOBJ_BDGT_AGGR_CD AL10.FIN_BDGT_AGGR_NM AL1.FOBJ_MNXFR_ELIM_CD AL12.FOBJ_MNXFR_ELIM_NM AL1.FIN_FED_FUNDED_CD AL11.FIN_FED_FND_NM AL1.NXT_YR_FIN_OBJ_CD

AL9 N/A

AL9.FIN_OBJ_CD_NM Multiple

N/A N/A

Multiple N/A

N/A N/A

AL1

SRC_SYS_ID N/A

N/A

N/A N/A N/A N/A N/A N/A N/A N/A N/A

N/A

N/A N/A N/A N/A

Transform Logic

Purpose

Comment

Surrogate key generator starting at 1 N/A N/A N/A N/A N/A N/A Generate one row with value of - for each chart of account, financial year, source system id, object code N/A

Generate one row with value of - for each chart of account, financial year, source system id, object code N/A

Generate one row with value of - for each chart of account, financial year, source system id, object code N/A

Generate one row with value of - for each chart of account, financial year, source system id, object code N/A

N/A

Generate one row with value of - for each chart of account, financial year, source system id, object code N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

if length(AL13.FIN_REPORT_SORT_CD) = 1 then '0' || AL13.FIN_REPORT_SORT_CD else || AL13.FIN_REPORT_SORT_CD N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A

N/A

N/A N/A N/A N/A

N/A N/A N/A N/A N/A N/A N/A N/A N/A

This is the max EFFDT_FROM value from all the tables joined to make this record. Currently need to hard-code in SCD stage to intiial value to the Replace Nulls With value due to DataStage limitation.

This is the min EFFDT_TO value from all the tables joined to make this record. Y for initial value N for expire value

N/A If an error occurs when creating this row (e.g. a lookup error) this is Y otherwise it is N Passed as a variable to the ETL job. Should be E for EPM-sourced data and S for sourcesystem-sourced data. Start time of ETL job Start time of ETL job Batch ID of highest level ETL job that called this one.

Driving Table: KF_H_FS_ORIGIN_CODE Grain: origin


Name Description Data Type Replace NULL With

ORIGIN_SID ORIGIN_CD ORIGIN_SERVER_SD ORIGIN_DATABASE_SD ORIGIN_DATABASE_LD

NUMBER(10,0) VARCHAR2(2 BYTE) VARCHAR2(20 BYTE) VARCHAR2(15 BYTE) VARCHAR2(40 BYTE)

2147483646 -

EFF_START_DT

DATE 01-JAN-1753 00:00:00

EFF_END_DT

DATE 31-DEC-9999 23:59:59

CURRENT_IND SRC_SYS_ID LOAD_ERROR

CHAR(1) VARCHAR2(5 BYTE) VARCHAR2(1 BYTE)

Y KFS N

DATA_ORIGIN

VARCHAR2(1 BYTE)

ORIGIN_ACTIVE_FLG CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID

VARCHAR2(1 BYTE) DATE DATE NUMBER(10,0)

Start time of ETL job Start time of ETL job

Start time of ETL job

Constraints

SCD Function

Source Type

Source Table

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Surrogate Key Business Key Type II Type II Type II

Generated Copy Copy Copy Copy

N/A KF_H_FS_ORIGIN_CODE KF_H_FS_ORIGIN_CODE KF_H_FS_ORIGIN_CODE KF_H_FS_ORIGIN_CODE

NOT NULL Effective Date Copy KF_H_FS_ORIGIN_CODE

NOT NULL Effective Date NOT NULL NOT NULL NOT NULL Insert Only Effective Flag Business Key Copy Generated Copy Generated KF_H_FS_ORIGIN_CODE N/A KF_H_FS_ORIGIN_CODE N/A

NOT NULL Insert Only Type II Insert Only Insert Only

Generated N/A KF_H_FS_ORIGIN_CODE N/A N/A

NOT NULL NOT NULL NOT NULL NOT NULL

Copy Generated Generated Generated

Insert Only

N/A

Source Column

Lookup Logic

Transform Logic

Purpose

N/A FS_ORIGIN_CD FS_SERVER_NM FS_DATABASE_NM FS_DATABASE_DESC

N/A N/A N/A N/A N/A

Surrogate key generator starting at 1 N/A N/A N/A N/A This is the max EFFDT_FROM value from all the tables joined to make this record. Currently need to hardcode in SCD stage to intiial value to the This is the min EFFDT_TO Replace Nulls With value from all the tables value due to DataStage joined to make this record. limitation. Y for initial value N for expire value N/A If an error occurs when creating this row (e.g. a lookup error) this is Y otherwise it is N Passed as a variable to the ETL job. Should be E for EPM-sourced data and S for source-system-sourced data. N/A Start time of ETL job Start time of ETL job Batch ID of highest level ETL job that called this one.

EFFDT_FROM

N/A

EFFDT_TO N/A SRC_SYS_ID N/A

N/A N/A N/A

N/A

N/A N/A N/A N/A N/A

ROW_ACTV_IND N/A N/A

N/A

N/A

Comment

Driving table: KF_H_CA_ORG Driving table filter: none Driving table aggregation: none Grain: organization unit as defined in KFS Column Mappings
Name Length

Column Name

ORG_SID CHART_CD CHART_LD ORG_CD ORG_NM ORG_MANAGER_ID

7 8 8 6 6 14

ORG_MANAGER_USER_ID

19

ORG_MANAGER_NM ORG_RESPONSIBILITY_CENTER_CD ORG_RESPONSIBILITY_CENTER_LD ORG_RESPONSIBILITY_CENTER_SD ORG_PHYSICAL_CAMPUS_CD ORG_PHYSICAL_CAMPUS_LD ORG_PHYSICAL_CAMPUS_SD ORG_TYPE_CD ORG_TYPE_LD ORG_DEFAULT_ACCT_NBR ORG_DEFAULT_ACCT_LD

14 28 28 28 22 22 22 11 11 20 19

ORG_ADDR1 ORG_ADDR2 ORG_CITY_NM ORG_STATE_CD ORG_ZIP_CD ORG_COUNTRY_CD ORG_COUNTRY_NM ORG_COUNTRY_RESTRICTED_FLG ORG_PARENT_CHART_CD ORG_PARENT_CHART_LD ORG_PARENT_ORG_CD ORG_PARENT_ORG_NM ORG_IN_FP_FLG ORG_PLANT_CHART_CD ORG_PLANT_CHART_LD ORG_PLANT_ACCOUNT_NBR ORG_PLANT_ACCOUNT_LD ORG_CAMPUS_PLANT_CHART_CD ORG_CAMPUS_PLANT_CHART_LD ORG_CAMPUS_PLANT_ACCOUNT_NBR

9 9 11 12 10 14 14 26 19 19 17 17 13 18 18 21 20 25 25 28

ORG_CAMPUS_PLANT_ACCOUNT_LD ORG_BEGIN_DT ORG_END_DT ORG_ACTIVE_FLG ORG_SORT_CD

27 12 10 14 11

ORG_ROLLUP_UNIV_CD ORG_ROLLUP_UNIV_NM

18 18

ORG_ROLLUP_CAMPUS_CD ORG_ROLLUP_CAMPUS_NM

20 20

ORG_ROLLUP_EXECUTIVE_CD ORG_ROLLUP_EXECUTIVE_NM

23 23

ORG_ROLLUP_VP_CD ORG_ROLLUP_VP_NM

16 16

ORG_ROLLUP_SUPER_COLLEGE_CD ORG_ROLLUP_SUPER_COLLEGE_NM

27 27

ORG_ROLLUP_COLLEGE_CD ORG_ROLLUP_COLLEGE_NM

21 21

ORG_ROLLUP_DEPT_CD

18

ORG_ROLLUP_DEPT_NM ORG_SIMPLE_ROLLUP_EXEC_CD ORG_SIMPLE_ROLLUP_EXEC_NM ORG_SIMPLE_ROLLUP_COLLEGE_CD ORG_SIMPLE_ROLLUP_COLLEGE_NM ORG_SIMPLE_ROLLUP_DEPT_CD ORG_SIMPLE_ROLLUP_DEPT_NM

18 25 25 28 28 25 25

ORG_HIST_ROLLUP_UNIV_CD ORG_HIST_ROLLUP_UNIV_NM

23 23

ORG_HIST_ROLLUP_CAMPUS_CD ORG_HIST_ROLLUP_CAMPUS_NM

25 25

ORG_HIST_ROLLUP_EXECUTIVE_CD

28

ORG_HIST_ROLLUP_EXECUTIVE_NM

28

ORG_HIST_ROLLUP_VP_CD ORG_HIST_ROLLUP_VP_NM

21 21

ORG_HIST_ROLLUP_SUPER_COLL_CD

29

ORG_HIST_ROLLUP_SUPER_COLL_NM

29

ORG_HIST_ROLLUP_COLLEGE_CD ORG_HIST_ROLLUP_COLLEGE_NM

26 26

ORG_HIST_ROLLUP_DEPT_CD ORG_HIST_ROLLUP_DEPT_NM

23 23

ORG_FULL_ROLLUP_LEVEL1_CD ORG_FULL_ROLLUP_LEVEL1_NM

25 25

ORG_FULL_ROLLUP_LEVEL2_CD

25

ORG_FULL_ROLLUP_LEVEL2_NM ORG_FULL_ROLLUP_LEVEL3_CD

25 25

ORG_FULL_ROLLUP_LEVEL3_NM ORG_FULL_ROLLUP_LEVEL4_CD ORG_FULL_ROLLUP_LEVEL4_NM ORG_FULL_ROLLUP_LEVEL5_CD ORG_FULL_ROLLUP_LEVEL5_NM ORG_FULL_ROLLUP_LEVEL6_CD ORG_FULL_ROLLUP_LEVEL6_NM ORG_FULL_ROLLUP_LEVEL7_CD ORG_FULL_ROLLUP_LEVEL7_NM ORG_FULL_ROLLUP_LEVEL8_CD ORG_FULL_ROLLUP_LEVEL8_NM ORG_FULL_ROLLUP_LEVEL9_CD ORG_FULL_ROLLUP_LEVEL9_NM ORG_FULL_ROLLUP_LEVEL10_CD ORG_FULL_ROLLUP_LEVEL10_NM ORG_FULL_ROLLUP_LEVEL11_CD ORG_FULL_ROLLUP_LEVEL11_NM ORG_FULL_ROLLUP_LEVEL12_CD ORG_FULL_ROLLUP_LEVEL12_NM ORG_FULL_ROLLUP_LEVEL13_CD ORG_FULL_ROLLUP_LEVEL13_NM ORG_FULL_ROLLUP_LEVEL14_CD

25 25 25 25 25 25 25 25 25 25 25 25 25 26 26 26 26 26 26 26 26 26

ORG_FULL_ROLLUP_LEVEL14_NM ORG_FULL_ROLLUP_LEVEL15_CD ORG_FULL_ROLLUP_LEVEL15_NM ORG_FULL_ROLLUP_LEVEL16_CD ORG_FULL_ROLLUP_LEVEL16_NM ORG_FULL_ROLLUP_LEVEL17_CD ORG_FULL_ROLLUP_LEVEL17_NM ORG_FULL_ROLLUP_LEVEL18_CD ORG_FULL_ROLLUP_LEVEL18_NM ORG_FULL_ROLLUP_LEVEL19_CD ORG_FULL_ROLLUP_LEVEL19_NM ORG_FULL_ROLLUP_LEVEL20_CD ORG_FULL_ROLLUP_LEVEL20_NM EFF_START_DT

26 26 26 26 26 26 26 26 26 26 26 26 26

12 EFF_END_DT 10 CURRENT_IND SRC_SYS_ID LOAD_ERROR 10 11 10

DATA_ORIGIN 11 15 15

CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID

9 Look-Up Logic

Table Name Order KF_H_CA_ORG KF_H_CA_CHART Chart1 KF_H_CA_RC KF_H_CA_ORG_TYPE 1 2 3 4

KF_H_CA_ORG_EXT KF_H_KR_COUNTRY

5 6

KF_H_CA_ACCOUNT Account1 KF_H_CA_CHART ParentChart

7 8

KF_H_CA_ORG ParentOrg KF_H_CA_CHART PlantChart

9 10

KF_H_CA_ACCOUNT PlantAccount KF_H_CA_CHART CampusPlantChart

11 12

KF_H_CA_ACCOUNT CampusPlantAccount KF_H_KRNS_CAMPUS ( select EMPLID, NETID_OPRID, UAID, NAME from sysadm.ps_ua_eds_data a where effdt = ( select max(effdt) from sysadm.ps_ua_eds_data b where a.uaid = b.uaid and effdt < SYSDATE ) ) PSPeople

13 14

15

* all lookup conditions not on PS tables also include "<driving table>.SRC_SYS_ID = <lookup table>.SRC_SYS_ID AND <current * all lookup conditons return NULLs when lookup fails (aka outer-join logic) * all lookup conditions allow multiple rows to be returned from lookup

Description

Data Type

Replace NULL With

Constraints

NUMBER(10) VARCHAR2(2)

2147483646 -

PRIMARY KEY NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

VARCHAR2(40) VARCHAR2(4) VARCHAR2(40) VARCHAR2(40) -

Comes from HCM

VARCHAR2(40) VARCHAR2(160 )

NOT NULL

Comes from HCM VARCHAR2(2)

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

VARCHAR2(40) VARCHAR2(12) VARCHAR2(2) VARCHAR2(250 ) VARCHAR2(250 ) VARCHAR(2) -

VARCHAR2(40) VARCHAR2(7) VARCHAR2(40) -

VARCHAR2(30) VARCHAR2(30) VARCHAR2(25) VARCHAR2(2) VARCHAR2(20) VARCHAR2(2) VARCHAR2(40) VARCHAR2(1) VARCHAR2(2) VARCHAR2(40) VARCHAR2(4) VARCHAR2(40) VARCHAR2(1) VARCHAR2(2) VARCHAR2(40) VARCHAR2(7) VARCHAR2(40) VARCHAR2(2) VARCHAR2(40) VARCHAR2(7) -

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

We do not know what this is.

VARCHAR2(40) DATE DATE VARCHAR2(1) VARCHAR2(3) -

NOT NULL 1-Jan-00 NOT NULL 1-Jan-00 NOT NULL NOT NULL NOT NULL

Code of the unit with org type U to which this department reports. Or itself if it is a unversity. VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL

VARCHAR2(40) VARCHAR2(4) VARCHAR2(40) VARCHAR2(4) VARCHAR2(40) VARCHAR2(4) VARCHAR2(40) -

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Code of the unit with org type U to which this department reports. Or itself if it is a unversity. VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL

VARCHAR2(40) -

NOT NULL

VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL

VARCHAR2(40) -

NOT NULL

VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL NOT NULL

VARCHAR2(40) -

VARCHAR2(4)

NOT NULL

VARCHAR2(40) VARCHAR2(4) -

NOT NULL NOT NULL

VARCHAR2(40) VARCHAR2(4) -

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) VARCHAR2(4) -

VARCHAR2(40) -

DATE

Jan 1, 1753

NOT NULL

DATE VARCHAR2(1) VARCHAR2(5) Y KFS

31-Dec-99 NOT NULL NOT NULL NOT NULL

VARCHAR2(1)

NOT NULL

VARCHAR2(1) DATE DATE

E NOT NULL ETL job starttime NOT NULL ETL job starttime NOT NULL

NUMBER(10)

0 NOT NULL

Lookup Logic* N/A KF_H_CA_ORG.FIN_COA_CD = KF_H_CA_CHART.FIN_COA_CD KF_H_CA_ORG.RC_CD = KF_H_CA_RC.RC_CD KF_H_CA_ORG.ORG_TYP_CD = KF_H_CA_ORG_TYPE.ORG_TYP_CD KF_H_CA_ORG.FIN_COA_CD = KF_H_CA_ORG_EXT.FIN_COA_CD AND KF_H_CA_ORG.ORG_CD = KF_H_CA_ORG_EXT.ORG_CD KF_H_CA_ORG.ORG_CNTRY_CD = KF_H_KR_COUNTRY.POSTAL_CNTRY_CD KF_H_CA_ORG.FIN_COA_CD = Account1.FIN_COA_CD AND KF_H_CA_ORG.ORG_DFLT_ACCT_NBR = Account1.ACCOUNT_NBR KF_H_CA_ORG.RPTS_TO_FIN_COA_CD = ParentChart.FIN_COA_CD KF_H_CA_ORG.RPTS_TO_FIN_COA_CD = ParentOrg.FIN_COA_CD AND KF_H_CA_ORG.RPTS_TO_ORG_CD = ParentOrg.ORG_CD KF_H_CA_ORG.ORG_PLNT_COA_CD = PlantChart.FIN_COA_CD

Failed Lookup Error Table N/A KF_E_CA_ORG KF_E_CA_ORG KF_E_CA_ORG

Comment Driving table

KF_E_CA_ORG KF_E_CA_ORG

KF_E_CA_ORG KF_E_CA_ORG

KF_E_CA_ORG self-join KF_E_CA_ORG

KF_H_CA_ORG.ORG_PLNT_COA_CD = PlantAccount.FIN_COA_CD AND KF_H_CA_ORG.ORG_PLNT_ACCT_NBR = PlantAccount.ACCOUNT_NBR KF_H_CA_ORG.CMP_PLNT_COA_CD = CampsPlantChart.FIN_COA_CD KF_H_CA_ORG.CMP_PLNT_COA_CD = CampusPlantAccount.FIN_COA_CD AND KF_H_CA_ORG.CMP_PLNT_ACCT_NBR = CampusPlantAccount.ACCOUNT_NBR KF_H_CA_ORG.ORG_PHYS_CMP_CD = KF_H_KRNS_CAMPUS.CAMPUS_CD

KF_E_CA_ORG KF_E_CA_ORG

KF_E_CA_ORG KF_E_CA_ORG

KF_H_CA_ORG.ORG_MGR_UNVL_ID = PSPeople.UAID

KF_E_CA_ORG

so include "<driving table>.SRC_SYS_ID = <lookup table>.SRC_SYS_ID AND <current>.EFFDT_FROM <= <lookup table>.EFFDT_TO AND <cu lookup fails (aka outer-join logic) s to be returned from lookup

SCD Type

Type 1 SCD Dependance

Source Type

Source Table

Surrogate Key N/A Business Key N/A Type 1 Business Key Type 1 Type 1 CHART_CD N/A Load job SCD Type 1 stage Load job SCD Type 1 stage

Generated Copy Copy Copy Copy Copy

N/A KF_H_CA_ORG KF_H_CA_CHART Chart1 KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG (select distinct EMPLID, NETID_OPRID, UAID, NAME from PS_UA_EDS_DATA) PSPeople (select distinct EMPLID, NETID_OPRID, UAID, NAME from PS_UA_EDS_DATA) PSPeople KF_H_CA_ORG KF_H_CA_RC KF_H_CA_RC KF_H_CA_ORG KF_H_KRNS_CAMPUS KF_H_KRNS_CAMPUS KF_H_CA_ORG KF_H_CA_ORG_TYPE KF_H_CA_ORG KF_H_CA_ACCOUNT Account1

Type 1

Load job SCD Type 1 stage

Copy

Type 1 Type 2 Type 1 Type 1 Type 2 Type 1 Type 1 Type 2 Type 1 Type 2 Type 1

Load job SCD Type 1 stage N/A ORG_RESPONSIBIITY_CENTER_CD ORG_RESPONSIBIITY_CENTER_CD N/A ORG_PHYSICAL_CAMPUS_CD ORG_PHYSICAL_CAMPUS_CD N/A ORG_TYPE_CD N/A CHART_CD, ORG_DEFAULT_ACCT_NBR

Transform Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy

Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 2 Type 1 Type 2 Type 1 Type 2 Type 1 Type 2

Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage ORG_COUNTRY_CD ORG_COUNTRY_CD Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage N/A ORG_PLANT_CHART_CD N/A ORG_PLANT_CHART_CD, ORG_PANT_ACCOUNT_NBR N/A ORG_CAMPUS_PLANT_CHART_CD N/A ORG_CAMPUS_PLANT_CHART_CD, ORG_CAMPUS_PLANT_ACCOUNT_NB R Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage

Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy Copy

KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_KR_COUNTRY KF_H_KR_COUNTRY KF_H_CA_ORG KF_H_CA_CHART ParentChart KF_H_CA_ORG KF_H_CA_ORG ParentOrg KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_CHART PlantChart KF_H_CA_ORG KF_H_CA_ACCOUNT PlantAccount KF_H_CA_ORG KF_H_CA_CHART CampusPlantChart KF_H_CA_ORG

Type 1 Type 1 Type 1 Type 1 Type 1

Copy Copy Copy Copy Copy

KF_H_CA_ACCOUNT CampusPlantAccount KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG_EXT

Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 1

Load job SCD Type 1 stage

Transform

KF_H_CA_ORG

Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform Transform Transform Transform Transform Transform

KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG

Type 2 Type 1

N/A ORG_CHART_CD, ORG_HIST_ROLLUP_UNIV_CD

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 2 Type 1

N/A ORG_CHART_CD, ORG_HIST_ROLLUP_CAMPUS_CD

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 2

N/A ORG_CHART_CD, ORG_HIST_ROLLUP_EXECUTIVE_CD

Transform

KF_H_CA_ORG

Type 1

Transform

KF_H_CA_ORG

Type 2 Type 1

N/A ORG_CHART_CD, ORG_HIST_ROLLUP_VP_CD

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 2

N/A

Transform

KF_H_CA_ORG

Type 1

ORG_CHART_CD, ORG_HIST_ROLLUP_SUPER_COLL_CD Transform

KF_H_CA_ORG

Type 2 Type 1

N/A ORG_CHART_CD, ORG_HIST_ROLLUP_COLLEGE_CD

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 2 Type 1

N/A Transform ORG_CHART_CD,ORG_HIST_ROLLUP_ DEPT_CD Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 1

Load job SCD Type 1 stage

Transform

KF_H_CA_ORG

Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform

KF_H_CA_ORG KF_H_CA_ORG

Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform

KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG

Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1 Type 1

Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage Load job SCD Type 1 stage

Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform Transform

KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG KF_H_CA_ORG

Effective Date N/A

Transform

N/A

Expiration DateN/A Effective Flag Business Key N/A N/A

Transform Generated Copy Generated

N/A N/A KF_H_CA_ORG

N/A

N/A

N/A

Generated N/A N/A N/A N/A N/A N/A N/A N/A N/A

Generated Generated Generated

N/A

N/A

N/A

table>.EFFDT_TO AND <current>.EFFDT_TO >= <lookup table>.EFFDT_FROM"

Source Column

Transform Logic

Purpose

Comment

N/A FIN_COA_CD FIN_COA_DESC ORG_CD ORG_NM ORG_MGR_UNVL_ID

NETID_OPRID

NAME RC_CD RC_NM RC_SHRT_NM ORG_PHYS_CMP_CD CAMPUS_NM CAMPUS_SHRT_NM ORG_TYP_CD ORG_TYP_NM ORG_DFLT_ACCT_NBR ACCOUNT_NM

replace(NAME, ' - ', ' ')

ORG_LN1_ADDR ORG_LN2_ADDR ORG_CITY_NM ORG_STATE_CD ORG_ZIP_CD ORG_CNTRY_CD POSTAL_CNTRY_NM PSTL_CNTRY_RSTRC_IND RPTS_TO_FIN_COA_CD FIN_COA_DESC RPTS_TO_ORG_CD ORG_NM ORG_IN_FP_CD ORG_PLNT_COA_CD FIN_COA_DESC ORG_PLNT_ACCT_NBR ACCOUNT_NM CMP_PLNT_COA_CD FIN_COA_DESC CMP_PLNT_ACCT_NBR

Doing type 1 because that is what people a

ACCOUNT_NM ORG_BEGIN_DT ORG_END_DT ORG_ACTIVE_CD REPORT_ORDER_CD The highest org unit with a org type of U to which this unit reports. Or the unit itself if its type is U. The name associated with the code.

ORG_CD ORG_NM

ORG_CD ORG_NM

ORG_CD ORG_NM

The highest org unit with an org type of L to which this unit reports. The ORG_ROLLUP_UNIV_CD if there is no such unit. The name associated with the code. The highest org unit with an org type of E to which this unit reports. The ORG_ROLLUP_CAMPUS_CD if there is no such unit. The name associated with the code. The highest org unit with an org type of V to which this unit reports. The ORG_ROLLUP_EXECUTIVE_C D if there is no such unit. The name associated with the code. The highest org unit with an org type of P to which this unit reports. The ORG_ROLLUP_VP_CD if there is no such unit. The name associated with the code. The highest org unit with an org type of C to which this unit reports. The ORG_ROLLUP_SUPER_COLLE GE_CD if there is no such unit. The name associated with the code. The highest org unit with an org type of O or N to which this unit reports. The ORG_ROLLUP_COLLEGE_CD if there is no such unit.

ORG_CD ORG_NM

ORG_CD ORG_NM

ORG_CD ORG_NM

ORG_CD

ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM

The name associated with the code.

ORG_CD ORG_NM

This set of drill downs allows you to see assign facts (e.g. transaction amounts) to the rollups that existed at the time the fact was created. For example, if a department moved colleges, this would allow you to see their transactions in the Same as college they were in at ORG_ROLLUP_UNIV_CD but the time that a Type 2 SCD attribute. transacation were made. The name associated with the code. Same as ORG_ROLLUP_CAMPUS_CD but a Type 2 SCD attribute. The name associated with the code. Same as ORG_ROLLUP_EXECUTIVE_C D but a Type 2 SCD attribute. The name associated with the code.

ORG_CD ORG_NM

ORG_CD

ORG_NM

ORG_CD ORG_NM

ORG_CD

Same as ORG_ROLLUP_VP_CD but a Type 2 SCD attribute. The name associated with the code. Same as ORG_ROLLUP_SUPER_COLLE GE_CD but a Type 2 SCD attribute. The name associated with the code. Same as ORG_ROLLUP_COLLEGE_CD but a Type 2 SCD attribute. The name associated with the code. Same as ORG_ROLLUP_DEPT_CD but a Type 2 SCD attribute. The name associated with the code. This set of drill-downs is meant for going down through all orgs in the hierarchy. This way duplicate levels (e.g. VPs who report to other VPs) can get their aggregates Org code for roots of the org and drill to their subtree orgs. Org name for roots of the org tree Org code for first level under the root of the org three Org name for first level under the root of the org three Org code for next level of the org three

ORG_NM

ORG_CD ORG_NM

ORG_CD ORG_NM

ORG_CD ORG_NM

ORG_CD

ORG_NM ORG_CD

ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD

Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three

ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM ORG_CD ORG_NM

Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three Org code for next level of the org three Org name for next level of the org three This is the max EFFDT_FROM value from all the tables joined to make this record. This is the min EFFDT_TO value from all the tables joined to make this record. Y for initial value N for expire value N/A If an error occurs when creating this row (e.g. a lookup error) this is Y otherwise it is N

N/A

N/A N/A SRC_SYS_ID

N/A

Passed as a variable to the ETL job. Should be E for EPM-sourced data and S for source-system-sourced data. N/A N/A N/A Start time of ETL job Start time of ETL job Batch ID of highest level ETL job that called this one.

N/A

ecause that is what people appear to care about the most

This is a bridge table to allow rollup to any org, not just the ones that show up as levels in the flattened tree-structure in KF_

n the flattened tree-structure in KF_D_ORG.

Driving Table: KF_H_CA_PROJECT Driving Table Filter: none Driving Table Aggregation: none Grain: project
Name Description

PROJECT_SID PROJECT_CD PROJECT_SD PROJECT_ACTIVE_FLG PROJECT_LD PROJECT_MANAGER_ID PROJECT_MANAGER_USER_ID PROJECT_MANAGER_NM PROJECT_MANAGER_DEPT_CD CHART_CD CHART_LD ORGANIZATION_CD ORGANIZATION_NM EFF_START_DT

EFF_END_DT

CURRENT_IND SRC_SYS_ID LOAD_ERROR

DATA_ORIGIN

CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID

* all lookup conditions also include "<driving table>.SRC_SYS_ID = <lookup table>.SRC_SYS_ID AND <current>.EFFDT_FROM < * all lookup conditons return NULLs when lookup fails (aka outer-join logic) * all lookup conditions allow multiple rows to be returned from lookup

Data Type

Replace NULL With Constraints

SCD Function

NUMBER(10,0) VARCHAR2(10 BYTE) VARCHAR2(40 BYTE) VARCHAR2(1 BYTE) VARCHAR2(400 BYTE) VARCHAR2(10 BYTE) VARCHAR2(32) VARCHAR2(80) VARCHAR2(10) VARCHAR2(2 BYTE) VARCHAR2(40 BYTE) VARCHAR2(4 BYTE) VARCHAR2(40 BYTE) DATE

2147483646 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Surrogagte Key Business Key Type I Type II Type I Type I Type I Type I Type I Type II Type I Type II Type I

01-JAN-1753 00:00:00 DATE 31-DEC-9999 23:59:59 CHAR(1) VARCHAR2(5 BYTE) VARCHAR2(1 BYTE) Y KFS N NOT NULL NOT NULL NOT NULL NOT NULL

Effective Date

Expiration Date Effective Flag Business Key

NA

VARCHAR2(1 BYTE)

NOT NULL NA NA NA

DATE DATE NUMBER(10,0)

Start time of ETL job Start time of ETL job

NOT NULL NOT NULL NOT NULL

Start time of ETL job

NA

table>.SRC_SYS_ID AND <current>.EFFDT_FROM <= <lookup table>.EFFDT_TO AND <current>.EFFDT_TO >= <lookup table>.EFFDT_FROM

Source Type

Source Table

Source Column

Generated Copy Copy Copy Copy Copy Transform Copy Copy Copy Copy Copy Copy

N/A N/A KF_H_CA_PROJECT AL1 PROJECT_CD KF_H_CA_PROJECT AL1 PROJECT_NM KF_H_CA_PROJECT AL1 PROJ_ACTIVE_CD KF_H_CA_PROJECT AL1 PROJECT_DESC KF_H_CA_PROJECT AL1 PROJ_MGR_UNVL_ID KF_H_KRIM_PRNCPL AL70 PRNCPL_NM KF_H_KRIM_ENTITY_NM AL71 FIRST_NM KF_H_KRIM_ENTITY_EMP_INFO AL72PRMRY_DEPT_CD KF_H_CA_PROJECT AL1 FIN_COA_CD KF_H_CA_CHART AL2 FIN_COA_DESC KF_H_CA_PROJECT AL1 ORG_CD KF_H_CA_ORG AL3 ORG_NM

Transform

Multiple

Multiple

Transform Generated Copy Generated

Multiple N/A KF_H_CA_PROJECT AL1 N/A

Multiple N/A SRC_SYS_ID N/A

Generated N/A N/A N/A

N/A

Generated Generated Generated

N/A N/A

N/A

N/A

EFFDT_TO >= <lookup table>.EFFDT_FROM"

Lookup Logic*

Transform Logic

Surrogate key generator NA starting at 1 N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A AL1.PROJ_MGR_UNVL_ID = AL70.PRNCPL_ID upper(AL70.PRNCPL_NM) N/A AL70.ENTITY_ID = AL71.ENTITY_ID N/A AL70.ENTITY_ID = AL72.ENTITY_ID N/A N/A N/A AL1.FIN_COA_CD = AL2.FIN_COA_CD N/A N/A N/A AL1.ORG_CD = AL3.ORG_CD This is the max EFFDT_FROM value from all the tables joined to make this record. This is the min EFFDT_TO value from all the tables joined to make this record. Y for initial value N for expire value N/A If an error occurs when creating this row (e.g. a lookup error) this is Y otherwise it is N Passed as a variable to the ETL job. Should be E for EPMsourced data and S for sourcesystem-sourced data. N/A N/A N/A Start time of ETL job Start time of ETL job Batch ID of highest level ETL job that called this one.

N/A

N/A N/A N/A

N/A

N/A

Purpose

Comment

Currently need to hard-code in SCD stage to intiial value to the Replace Nulls With value due to DataStage limitation.

Driving Tables: KF_GL_ENTRY and KF_GL_PENDING_ENTRY Driving Table Filter: Filter KF_GL_PENDING_ENTRY to only include transactions on documents with Doc Status in (A (approved), F (final), I (initiated), P (processed), R (enroute)) Driving Table Aggregation: None Loading Strategy: For KF_GL_ENTRY: load incrementally by taking rows with TRN_POST_DT greater than the last run date of this job. For KF_GL_PENDING_ENTRY: destructively load by truncating the Oracle partition that holds pending transactions and taking all the unexpired rows Grain: Actualized or pending transactions, same as row grain in driving tables
Name next rows are SIDs to dimension tables Description Data Type

ACCOUNT_SID

NUMBER(10,0)

OBJECT_CODE_SID

NUMBER(10,0)

PROJECT_SID

NUMBER(10,0)

BALANCE_TYPE_SID

NUMBER(10,0)

FISCAL_PERIOD_SID

NUMBER(10,0)

DOCUMENT_TYPE_SID

NUMBER(10,0)

ORIGIN_SID

NUMBER(10,0)

ACCOUNT_ORG_SID LEDGER_POST_DT_SID LEDGER_TRANSACTION_DT_SID LEDGER_DOC_REVERSAL_DT_SID ACCOUNT_STATISTICS_SID next rows are codes used for looking up the SIDs

NUMBER(10,0) NUMBER(10) NUMBER(10,0) NUMBER(10,0) NUMBER(10,0)

FISCAL_YEAR

NUMBER(4,0)

CHART_CD

VARCHAR2(2BYTE)

ACCOUNT_NBR

VARCHAR2(7BYTE)

SUB_ACCOUNT_NBR

VARCHAR2(5BYTE)

OBJECT_CD

VARCHAR2(4)

SUB_OBJECT_CD

VARCHAR2(3BYTE)

PROJECT_CD

VARCHAR2(10)

BALANCE_TYPE_CD

VARCHAR2(2BYTE)

OBJECT_TYPE_CD

VARCHAR2(2BYTE)

FISCAL_PERIOD_CD

VARCHAR2(2BYTE)

DOCUMENT_TYPE_CD

VARCHAR2(4BYTE)

ORIGIN_CD

VARCHAR2(2BYTE)

LEDGER_POST_DT LEDGER_TRANSACTION_DT LEDGER_DOC_REVERSAL_DT next rows are degenerate dimensions

DATE DATE DATE

LEDGER_ENTRY_SEQUENCE_NBR

NUMBER(5)

DOCUMENT_NBR

VARCHAR2(14)

LEDGER_ORG_DOCUMENT_NBR

VARCHAR2(10)

LEDGER_ORG_REFERENCE_ID

VARCHAR2(8)

LEDGER_DOCUMENT_REF_TYPE_CD

VARCHAR2(4)

LEDGER_REFERENCE_ORIGIN_CD

VARCHAR2(2)

LEDGER_DOC_REFERENCE_NBR LEDGER_ENCUMBRANCE_UPDATE_CD

VARCHAR2(14) VARCHAR2(1)

LEDGER_ENTRY_LD

VARCHAR2(40)

LEDGER_DEBIT_CREDIT_CD

VARCHAR2(1)

LEDGER_ENTRY_TIMESTAMP

DATE

LEDGER_TRANSACTION_TYPE_CD_UA LEDGER_PENDING_FLG_UA

VARCHAR2(1) VARCHAR2(1)

LEDGER_AMT_0_100_FLG_UA

VARCHAR2(1)

LEDGER_AMT_P100_500_FLG_UA

VARCHAR2(1)

LEDGER_AMT_P500_1000_FLG_UA

VARCHAR2(1)

LEDGER_AMT_P1000_5000_FLG_UA

VARCHAR2(1)

LEDGER_AMT_P5000_FLG_UA next rows are facts

VARCHAR2(1)

LEDGER_ENTRY_AMT

NUMBER(19,2)

LEDGER_BASE_BUDGET_AMT_UA

NUMBER(19,2)

LEDGER_CURRENT_BUDGET_AMT_UA

NUMBER(19,2)

LEDGER_MONTH_BUDGET_AMT_UA

NUMBER(19,2)

LEDGER_BUDGET_REVERSION_AMT_UA

NUMBER(19,2)

LEDGER_ENCUMBRANCE_AMT_UA

NUMBER(19,2)

LEDGER_ACTUALS_AMT_UA

NUMBER(19,2)

LEDGER_NOMINAL_BALANCE_AMT_UA LEDGER_ONE_PER_ROW_CNT_UA next rows are audit columns

NUMBER(19,2) NUMBER(10,0)

SRC_SYS_ID LOAD_ERROR DATA_ORIGIN

VARCHAR2(5) VARCHAR2(1) VARCHAR2(1)

CREATED_EW_DTTM LASTUPD_EW_DTTM BATCH_SID

DATE DATE NUMBER(10)

Replace NULL With Constraints

Column Type

Source Type

Source Table

High value SID

not null, fk

Surrogate Key

Copy

KF_D_ACCOUNT

High value SID

not null, fk

Surrogate Key

Copy

KF_D_OBJECT_CODE

High value SID

not null, fk

Surrogate Key

Copy

KF_D_PROJECT

High value SID

not null, fk

Surrogate Key

Copy

KF_D_BALANCE_TYPE

High value SID

not null, fk

Surrogate Key

Copy

KF_D_FISCAL_PERIOD

High value SID

not null, fk

Surrogate Key

Copy

KF_D_DOC_TYPE

High value SID

not null, fk

Surrogate Key

Copy

KF_D_ORIGIN

High value SID High value SID High value SID High value SID High value SID

not null, fk not null, fk not null, fk not null, fk not null, fk

Surrogate Key Surrogate Key Surrogate Key Surrogate Key Surrogate Key

Copy Copy Copy Copy Copy

KF_D_ORG UA_D_DAY UA_D_DAY UA_D_DAY KF_D_ACCOUNT_STATISTICS

not null

Business key

Copy

KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY

not null

Business key

Copy

not null

Business key

Copy

not null

Business key

Copy

not null

Business key

Copy

not null

Business key

Copy

not null

Business key

Copy

KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY

not null

Business key

Copy

not null

Business key

Copy

not null

Business key

Copy

not null

Business key

Copy

not null

Business key

Copy

1-Jan-00 not null 1-Jan-00 not null 1-Jan-00 not null

Business key Business key Business key

Copy Copy Copy

not null

Business key

Copy

KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY

not null

Business key Degenerate Dimension Degenerate Dimension Degenerate Dimension Degenerate Dimension

Copy

not null

Copy

N/A

Copy

N/A

Copy

N/A

Copy

N/A not null

Degenerate Dimension Copy Degenerate Dimension Copy

not null

Degenerate Dimension Degenerate Dimension Degenerate Dimension

Copy

KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY

not null

Copy

1-Jan-00

not null

Copy

not null not null

Degenerate Dimension Degenerate Dimension Degenerate Dimension Degenerate Dimension Degenerate Dimension Degenerate Dimension Degenerate Dimension

Transform Generated

KF_GL_ENTRY, KF_GL_PENDING_ENTRY N/A KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY KF_GL_ENTRY, KF_GL_PENDING_ENTRY

not null

Transform

not null

Transform

not null

Transform

not null

Transform

not null

Transform

N/A

N/A

Measure

Copy

KF_GL_ENTRY, KF_GL_PENDING_ENTRY

N/A

N/A

Measure

Transform

KF_GL_ENTRY, KF_GL_PENDING_ENTRY

N/A

N/A

Measure

Transform

KF_GL_ENTRY, KF_GL_PENDING_ENTRY

N/A

N/A

Measure

Transform

KF_GL_ENTRY, KF_GL_PENDING_ENTRY

N/A

N/A

Measure

Transform

KF_GL_ENTRY, KF_GL_PENDING_ENTRY

N/A

N/A

Measure

Transform

KF_GL_ENTRY, KF_GL_PENDING_ENTRY

N/A

N/A

Measure

Transform

KF_GL_ENTRY, KF_GL_PENDING_ENTRY

N/A N/A

N/A N/A

Measure Measure

Transform Generated

KF_GL_ENTRY, KF_GL_PENDING_ENTRY N/A

'E'

not null not null not null

Audit Audit Audit

Copy Generated Generated

KF_GL_ENTRY, KF_GL_PENDING_ENTRY N/A N/A

Start time of ETL job not null Start time of ETL job not null 0 not null

Audit Audit Audit

Generated Generated Generated

N/A N/A N/A

Source Column

ACCOUNT_SID

OBJECT_SID

PROJECT_SID

BALANCE_TYPE_SID

FPERIOD_SID

DOC_TYPE_SID

ORIGIN_SID

ORG_SID DAY_SID DAY_SID DAY_SID ACCOUNT_STATISTICS_SID

UNIV_FISCAL_YR

FIN_COA_CD

ACCOUNT_NBR

SUB_ACCT_NBR

FIN_OBJECT_CD

FIN_SUB_OBJ_CD

PROJECT_CD

FIN_BALANCE_TYP_CD

FIN_OBJ_TYP_CD

UNIV_FISCAL_PRD_CD

FDOC_TYP_CD

FS_ORIGIN_CD

TRN_POST_DT TRANSACTION_DT FDOC_REVERSAL_DT

TRN_ENTR_SEQ_NBR

FDOC_NBR

ORG_DOC_NBR

ORG_REFERENCE_ID,

FDOC_REF_TYP_CD,

FS_REF_ORIGIN_CD,

FDOC_REF_NBR, TRN_ENCUM_UPDT_CD,

TRN_LDGR_ENTR_DESC

TRN_DEBIT_CRDT_CD

TRUNC(SYSDATE)

fin_balance_typ_cd N/A

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT

TRN_LDGR_ENTR_AMT N/A

SRC_SYS_ID N/A N/A

N/A N/A N/A

Lookup Logic

KF_D_ACCOUNT.CHART_CD=F.FIN_COA_CD AND KF_D_ACCOUNT.ACCOUNT_NBR=F.ACCOUNT_NBR AND KF_D_ACCOUNT.SUB_ACCOUNT_NBR=(IF F.SUB_ACCOUNT_NBR = '-----' THEN '-' ELSE F.SUB_ACCOUNT_NBR) AND For KF_GL_ENTRY: F.TRN_POST_DT BETWEEN KF_D_ACCOUNT.EFF_START_DT AND KF_D_ACCOUNT.EFF_END_DATE KF_D_OBJECT_CODE.FISCAL_YEAR=F.UNIV_FISCAL_YR AND KF_D_OBJECT_CODE.CHART_CD=F.FIN_COA_CD AND KF_D_OBJECT_CODE.OBJECT_CD=F.FIN_OBJECT_CD AND KF_D_OBJECT_CODE.SUB_OBJECT_CD=(IF F.FIN_SUB_OBJ_CD = '---' THEN '-' ELSE F.FIN_SUB_OBJ_CD) AND KF_D_OBJECT_CODE.SUB_OBJECT_ACCOUNT_NBR=(IF F.FIN_SUB_OBJ_CD = '---' THEN '-' ELSE F.ACCOUNT_NBR) AND For KF_GL_ENTRY: F.TRN_POST_DT BETWEEN KF_D_OBJECT_CODE.EFF_START_DT AND KF_D_OBJECT_CODE.EFF_END_DATE For KF_GL_PENDING_ENTRY: F.TRANSACTION_DT BETWEEN KF_D_OBJECT_CODE.EFF_START_DT AND KF_D_PROJECT.PROJECT_CD=F.PROJECT_CD AND KF_D_PROJECT.SRC_SYS_ID=F.SRC_SYS_ID AND For KF_GL_ENTRY: F.TRN_POST_DT BETWEEN KF_D_PROJECT.EFF_START_DT AND KF_D_PROJECT.EFF_END_DATE For KF_GL_PENDING_ENTRY: F.TRANSACTION_DT BETWEEN KF_D_PROJECT.EFF_START_DT AND KF_D_BALANCE_TYPE.BALANCE_TYPE_CD=F.FIN_BALANCE_TYP_CD AND KF_D_BALANCE_TYPE.SRC_SYS_ID=F.SRC_SYS_ID AND For KF_GL_ENTRY: F.TRN_POST_DT BETWEEN KF_D_BALANCE_TYPE.EFF_START_DT AND KF_D_BALANCE_TYPE.EFF_END_DATE For KF_GL_PENDING_ENTRY: F.TRANSACTION_DT BETWEEN KF_D_BALANCE_TYPE.EFF_START_DT AND KF_D_BALANCE_TYPE.EFF_END_DATE

KF_D_FISCAL_PERIOD.FISCAL_YEAR=F.UNIV_FISCAL_YR AND KF_D_FISCAL_PERIOD.FPERIOD_YEAR_NBR=F.UNIV_FISCAL_PRD_CD AND KF_D_FISCAL_PERIOD.SRC_SYS_ID=F.SRC_SYS_ID AND For KF_GL_ENTRY: F.TRN_POST_DT BETWEEN KF_D_FISCAL_PERIOD.EFF_START_DT AND KF_D_FISCAL_PERIOD.EFF_END_DATE For KF_GL_PENDING_ENTRY: F.TRANSACTION_DT BETWEEN KF_D_FISCAL_PERIOD.EFF_START_DT AND KF_D_FISCAL_PERIOD.EFF_END_DATE KF_D_DOC_TYPE.DOC_TYPE_CD=F.FDOC_TYP_CD AND KF_D_DOC_TYPE.SRC_SYS_ID=F.SRC_SYS_ID AND For KF_GL_ENTRY: F.TRN_POST_DT BETWEEN KF_D_DOC_TYPE.EFF_START_DT AND KF_D_DOC_TYPE.EFF_END_DATE For KF_GL_PENDING_ENTRY: F.TRANSACTION_DT BETWEEN KF_D_DOC_TYPE.EFF_START_DT AND KF_D_ORIGIN.ORIGIN_CD=F.FS_ORIGIN_CD AND KF_D_ORIGIN.SRC_SYS_ID=F.SRC_SYS_ID AND For KF_GL_ENTRY: F.TRN_POST_DT BETWEEN KF_D_ORIGIN.EFF_START_DT AND KF_D_ORIGIN.EFF_END_DATE For KF_GL_PENDING_ENTRY: F.TRANSACTION_DT BETWEEN KF_D_ORIGIN.EFF_START_DT AND KF_D_ORIGIN.EFF_END_DATE KF_D_ORG.CHART_CD = KF_D_ACCOUNT.CHART_CD AND KF_D_ORG.ORG_CD = KF_D_ACCOUNT.ACCOUNT_ORGANIZATION_CD For KF_GL_ENTRY: F.TRN_POST_DT BETWEEN KF_D_ORG.EFF_START_DT AND KF_D_ORG.EFF_END_DATE For KF_GL_PENDING_ENTRY: F.TRANSACTION_DT BETWEEN KF_D_ORG.EFF_START_DT AND For KF_GL_ENTRY: UA_D_DAY.DAY_DT = F.TRN_POST_DT For KF_GL_PENDING_ENTRY: High value SID UA_D_DAY.DAY_DT = F.TRANSACTION_DT UA_D_DAY.DAY_DT = F.FDOC_REVERSAL_DT

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A N/A N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A N/A

N/A

N/A

N/A

N/A N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A N/A

N/A N/A N/A

N/A N/A N/A

Transform Logic

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A NA N/A N/A N/A

N/A

N/A

N/A

DECODE (SUB_ACCT_NBR,'-----','-',SUB_ACCT_NBR)

N/A

DECODE (FIN_SUB_OBJ_CD,'---','-',FIN_SUB_OBJ_CD)

DECODE (PROJECT_CD,'----------','-',PROJECT_CD)

N/A

N/A

N/A

N/A

N/A

N/A N/A N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A N/A

N/A

N/A

N/A CASE WHEN fin_balance_typ_cd in ('MB','BB','CB') then 'B' WHEN fin_balance_typ_cd = 'AC' then 'A' WHEN KF_D_BALANCE_TYPE.BALANCE_TYPE_ENCUMBRANCE_FLG = 'Y' then 'E' ELSE 'X' END N if row comes from KF_GL_ENTRY and Y if it comes from KF_GL_PENDING_ENTRY CASE WHEN ABS(TRN_LDGR_ENTR_AMT) <= 100 then 'Y' else 'N' end CASE WHEN ABS(TRN_LDGR_ENTR_AMT) > 100 AND ABS(TRN_LDGR_ENTR_AMT) <= 500 then 'Y' else 'N' end CASE WHEN ABS(TRN_LDGR_ENTR_AMT) > 500 AND ABS(TRN_LDGR_ENTR_AMT) <= 1000 then 'Y' else 'N' end CASE WHEN ABS(TRN_LDGR_ENTR_AMT) > 1000 AND ABS(TRN_LDGR_ENTR_AMT) <= 5000 then 'Y' else 'N' end CASE WHEN ABS(TRN_LDGR_ENTR_AMT) > 5000 then 'Y' else 'N' end

N/A CASE WHEN fin_balance_typ_cd = 'BB' then TRN_LDGR_ENTR_AMT else null END

CASE WHEN fin_balance_typ_cd = 'CB' then TRN_LDGR_ENTR_AMT ELSE NULL END CASE WHEN fin_balance_typ_cd = 'MB' then TRN_LDGR_ENTR_AMT ELSE NULL END CASE WHEN fin_balance_typ_cd = 'RE' then TRN_LDGR_ENTR_AMT ELSE NULL END CASE WHEN KF_D_BALANCE_TYPE.BALANCE_TYPE_ENCUMBRANCE_FLG = 'Y' AND F.TRN_DEBIT_CRDT_CD <> 'D' then (-1 * F.TRN_LDGR_ENTR_AMT) WHEN KF_D_BALANCE_TYPE.BALANCE_TYPE_ENCUMBRANCE_FLG = 'Y AND F.TRN_DEBIT_CRDT_CD = 'D' then F.TRN_LDGR_ENTR_AMT ELSE NULL END CASE WHEN fin_balance_typ_cd = 'AC' AND TRN_DEBIT_CRDT_CD <> 'D' then (-1 * TRN_LDGR_ENTR_AMT) WHEN fin_balance_typ_cd = 'AC' AND TRN_DEBIT_CRDT_CD = 'D' then TRN_LDGR_ENTR_AMT ELSE Null END CASE WHEN fin_balance_typ_cd = 'NB' AND TRN_DEBIT_CRDT_CD <> 'D' then (-1 * TRN_LDGR_ENTR_AMT) WHEN fin_balance_typ_cd = 'NB' AND TRN_DEBIT_CRDT_CD = 'D' then TRN_LDGR_ENTR_AMT ELSE Null END '1'

N/A If an error occurs when creating this row (e.g. a lookup error) this is Y otherwise it is N Passed as a variable to the ETL job. Should be E for EPM-sourced data and S for source-systemsourced data.

Start time of ETL job Start time of ETL job Batch ID of highest level ETL job that called this one.

Purpose

Comment

CASE WHEN fin_balance_typ_cd in ('AB','BB','CB') then 'B' WHEN fin_balance_typ_cd = 'AC' then 'A' ELSE 'E' END

Driving Table: KF_F_LEDGER_ENTRY Driving Table Filter: None Driving Table Aggregation: FISCAL_PERIOD_SID, ACCOUNT_SID, OBJECT_CODE_SID, PROJECT_SID, ACCOUNT_ORG_SID, ACCOUNT_STATISTICS_SID, LAST_DAY_OF_POSTING_MONTH, LEDGER_PENDING_FLG_UA, SRC_SYS_ID Grain: fiscal year, fiscal period, account, sub-account, object code, sub-object code, project, pending flag and transaction posting month. Note, however, that the second and third sets of measures have a coarser grain. Loading Strategy: Do this initially with a destructve load to see how slow it is. We will have to change it to incremental at some point, probably right away. Notes: ACCTACT_ contains change in fiscal period, ACCTCUM_ contains cumulative changes in fiscal year, ACCTBAL_ contains beginning balance plus cumulative changes in fiscal year Note: exclude all rows in RED
Name the next rows are SIDs to dimension tables

FISCAL_PERIOD_SID

ACCOUNT_SID

OBJECT_CODE_SID

PROJECT_SID ACCOUNT_ORG_SID

ACCOUNT_STATISTICS_SID the next rows are the values used for looking up the SIDs FISCAL_YEAR FISCAL_PERIOD_CD CHART_CD ACCOUNT_NBR SUB_ACCOUNT_NBR OBJECT_CD

SUB_OBJECT_CD PROJECT_CD the next rows are degenerate dimensions ACCTACT_LAST_DAY_POST_MONTH_UA ACCTACT_PENDING_FLG_UA ACCTACT_LAST_TRANS_DT_UA

ACCTACT_LAST_DOC_NBR_UA

ACCTACT_MINIMUM_AMT_UA ACCTACT_MAXIMUM_AMT_UA

ACCTACT_MEAN_AMT_UA

ACCTACT_MEDIAN_AMT_UA

ACCTACT_STANDARD_DEV_AMT_UA

ACCTCUM_MINIMUM_AMT_UA

ACCTCUM_MAXIMUM_AMT_UA

ACCTCUM_MEAN_AMT_UA

ACCTCUM_MEDIAN_AMT_UA

ACCTCUM_STANDARD_DEV_AMT_UA the next rows are measures of net fiscal period acivity ACCTACT_BASE_BUDGET_AMT_UA ACCTACT_CURRENT_BUDGET_AMT_UA ACCT_MONTH_BUDGET_AMT_UA ACCTACT_ACTUALS_AMT_UA ACCTACT_ENCUMBRANCES_AMT_UA

ACCTACT_AVAILABLE_AMT_UA

ACCTACT_BEGIN_FUND_BAL_AMT_UA

ACCTACT_ACT_BB_BEG_BAL_AMT_UA

ACCTACT_ACT_CB_BEG_BAL_AMT_UA

ACCTACT_ENCM_BB_BEG_BAL_AMT_UA

ACCTACT_ENCM_CB_BEG_BAL_AMT_UA

ACCTACT_BUD_BB_BEG_BAL_AMT_UA

ACCTACT_BUD_CB_BEG_BAL_AMT_UA

ACCTACT_INCOME_ACT_AMT_UA

ACCTACT_EXPENSE_ACT_AMT_UA

ACCTACT_FUND_BAL_ACT_AMT_UA

ACCTACT_LIABILITY_ACT_AMT_UA

ACCTACT_ASSET_ACT_AMT_UA

ACCTACT_CASH_ACT_AMT_UA

ACCTACT_NON_CASH_ACT_AMT_UA

ACCTACT_PRESENT_BAL_AMT_UA

ACCTACT_1_STD_DEV_CNT_UA

ACCTACT_2_STD_DEV_CNT_UA

ACCTACT_3P_STD_DEV_CNT_UA the next rows are measures of year-to-date net activity: these are like the previous measures but aggregate without FISCAL P ACCTCUM_BASE_BUDGET_AMT_UA ACCTCUM_CURRENT_BUDGET_AMT_UA ACCTCUM_MONTH_BUDGET_AMT_UA ACCTCUM_ACTUALS_AMT_UA ACCTCUM_ENCUMBRANCES_AMT_UA

ACCTCUM_AVAILABLE_AMT_UA

ACCTCUM_BEGIN_FUND_BAL_AMT_UA

ACCTCUM_ACT_BB_BEG_BAL_AMT_UA

ACCTCUM_ACT_CB_BEG_BAL_AMT_UA

ACCTCUM_ENCM_BB_BEG_BAL_AMT_UA

ACCTCUM_ENCM_CB_BEG_BAL_AMT_UA

ACCTCUM_BUD_BB_BEG_BAL_AMT_UA

ACCTCUM_BUD_BB_BEG_BAL_AMT_UA

ACCTCUM_INCOME_ACT_AMT_UA

ACCTCUM_EXPENSE_ACT_AMT_UA

ACCTCUM_FUND_BAL_ACT_AMT_UA

ACCTCUM_LIABILIT_ACT_AMT_UA

ACCTCUM_ASSET_ACT_AMT_UA

ACCTCUM_CASH_ACT_AMT_UA

ACCTCUM_NON_CASH_ACT_AMT_UA ACCTCUM_PRESENT_BAL_AMT_UA

ACCTCUM_1_STD_DEV_CNT_UA

ACCTCUM_2_STD_DEV_CNT_UA

ACCTCUM_3P_STD_DEV_CNT_UA the next rows are measures of year-to-date net activity: these are like the previous measures but aggregate without the fisca ACCTBAL_BASE_BUDGET_AMT_UA ACCTBAL_CURRENT_BUDGET_AMT_UA ACCTBAL_MONTH_BUDGET_AMT_UA ACCTBAL_ACTUALS_AMT_UA

ACCTBAL_ENCUMBRANCES_AMT_UA

ACCTBAL_AVAILABLE_AMT_UA

ACCTBAL_BEGIN_FUND_BAL_AMT_UA

ACCTBAL_ACT_BB_BEG_BAL_AMT_UA

ACCTBAL_ACT_CB_BEG_BAL_AMT_UA

ACCTBAL_ENCM_BB_BEG_BAL_AMT_UA

ACCTBAL_ENCM_CB_BEG_BAL_AMT_UA

ACCTBAL_BUD_BB_BEG_BAL_AMT_UA

ACCTBAL_BUD_CB_BEG_BAL_AMT_UA

ACCTBAL_INCOME_ACT_AMT_UA

ACCTBAL_EXPENSE_ACT_AMT_UA

ACCTBAL_FUND_BAL_ACT_AMT_UA

ACCTBAL_LIABILITY_ACT_AMT_UA

ACCTBAL_ASSET_ACT_AMT_UA

ACCTBAL_CASH_ACT_AMT_UA

ACCTBAL_NON_CASH_ACT_AMT_UA ACCTBAL_PRESENT_BAL_AMT_UA the next rows are general measures ACCT_LAST_1_DAY_CNT_UA ACCT_LAST_7_DAY_CNT_UA ACCT_LAST_30_DAY_CNT_UA ACCT_LAST_30P_DAY_CNT_UA ACCT_ONE_PER_ROW_CNT_UA the next rows are audit columns ACCTACT_TIMESTAMP_UA SRC_SYS_ID LOAD_ERROR DATA_ORIGIN CREATED_EW_DTTM

LASTUPD_EW_DTTM BATCH_SID

* Fiscal year hardcoded currently. ^ Run the job for periods BB, CB and then for periods 1 to 12 cumulatively. NOTE: ACCTCUM_ columns have exact same logic as ACCTBAL_ but won't include periods BB & CB in their cumulation (i.e. on

Column Name Length

Description

Data Type

Replace NULL With

17

NUMBER(10,0) N/A

11

NUMBER(10,0) N/A

15

NUMBER(10,0) N/A

11 15 I broke this out because it is probably more useful with the 22 KF_F_LEDGER_ENTRIES table 11 16 8 11 15 9

NUMBER(10,0) N/A NUMBER(10,0) N/A

NUMBER(10,0) N/A NUMBER(4,0) N/A VARCHAR2(2) N/A VARCHAR2(2) N/A VARCHAR2(7) N/A VARCHAR2(5BYTE) N/A VARCHAR2(16) N/A

13 10 Used for joining to month-end 30 snapshots 22 24

VARCHAR2(3BYTE) N/A VARCHAR2(10) N/A

DATE VARCHAR2(1) DATE

January 1, 1900 N/A January 1, 1900

23

VARCHAR2(14) -

Moved all these columns to the KF_D_ACCOUNT_STATISTICS 22 table NUMBER(19,2) N/A 22 NUMBER(19,2) N/A The mean actual transaction amount (unsigned) for this month, account, object code, project and source system. Only counting posted transactions. Not counting adjustment transactions that are back-dated to this fiscal period (e.g. from 19 auxillary voucher) NUMBER(19,2) N/A

21

NUMBER(19,2) N/A

27

NUMBER(19,2) N/A

Minimum amount (unsigned) on an actuals transformation year- NUMBER(19,2) to-date, not including beginning N/A 22 balance. Maximum amount (unsigned) on an actuals transformation year-to-date, not including 22 beginning balance.

NUMBER(19,2) N/A

NUMBER(19,2) 19 NUMBER(19,2) 21 N/A N/A

NUMBER(19,2) 27 N/A

26 29 24 22 27

NUMBER(19,2) N/A NUMBER(19,2) N/A NUMBER(19,2) N/A NUMBER(19,2) N/A NUMBER(19,2) N/A

24

NUMBER(19,2) N/A

Fund balance actuals transactions on BB and CB fiscal periods. For balance sheet type 29 reports. NUMBER(19,2) N/A

Actuals transactions on BB fiscal period. Primarily for 29 income/expense type reports. NUMBER(19,2) N/A

Actuals transactions on CB fiscal period. Primarily for 29 income/expense type reports. NUMBER(19,2) N/A

30

NUMBER(19,2) N/A

30

NUMBER(19,2) N/A

This is meaningless because it combines balance types BB, CB, and MB. Leave out until we 29 figure out what we want? NUMBER(19,2) N/A

This is meaningless because it combines balance types BB, CB, and MB. Leave out until we 29 figure out what we want? NUMBER(19,2) N/A

25

NUMBER(19,2) N/A

26

NUMBER(19,2) N/A

27

NUMBER(19,2) N/A

28

NUMBER(19,2) N/A

24

NUMBER(19,2) N/A

23

NUMBER(19,2) N/A

27

NUMBER(19,2) N/A

Is this right??? What about fund balance adjustment 26 transactions? NUMBER(19,2) N/A Number of actuals transactions in the fiscal period within one standard deviation of the mean for this account and object code 24 for the fiscal period NUMBER(10,0) N/A Number of actuals transactions in the fiscal period more than one but less than three standard deviations from the mean for this account and object code for 24 the fiscal period NUMBER(10,0) N/A

Number of actuals transactions in the fiscal period three standard deviations or more from the mean for this account and object code for the fiscal 25 period NUMBER(10,0) N/A evious measures but aggregate without FISCAL PERIOD (but with the fiscal year) and exclude rows with FISCAL_PERIOD_CD after the fisca 26 29 27 22 27 NUMBER(19,2) NUMBER(19,2) N/A N/A

NUMBER(19,2) N/A NUMBER(19,2) NUMBER(19,2) NUMBER(19,2) N/A N/A

24

N/A

NUMBER(19,2) 29 NUMBER(19,2) 29 N/A N/A

NUMBER(19,2) 29 NUMBER(19,2) 30 NUMBER(19,2) 30 N/A N/A N/A

NUMBER(19,2) This is meaningless because it combines balance types BB, CB, 29 and MB. What do we want?

N/A

NUMBER(19,2) This is meaningless because it combines balance types BB, CB, 29 and MB. What do we want?

N/A

NUMBER(19,2) 25 N/A

NUMBER(19,2) 26 N/A

27

NUMBER(19,2) N/A

NUMBER(19,2) 27 N/A

NUMBER(19,2) 24 N/A

NUMBER(19,2) 23 N/A

NUMBER(19,2) 27 26 Is this right??? NUMBER(19,2) N/A N/A

NUMBER(10,0) 24 N/A

NUMBER(10,0)

24 NUMBER(10,0)

N/A

N/A 25 evious measures but aggregate without the fiscal period (but with the fiscal year) instead and include all rows. 26 29 27 22 NUMBER(19,2) NUMBER(19,2) N/A N/A

NUMBER(19,2) N/A NUMBER(19,2) N/A

27

NUMBER(19,2) NUMBER(19,2)

N/A

24

N/A

NUMBER(19,2) 29 NUMBER(19,2) 29 NUMBER(19,2) 29 NUMBER(19,2) 30 NUMBER(19,2) 30 N/A N/A N/A N/A N/A

NUMBER(19,2) This is meaningless because it combines balance types BB, CB, 29 and MB. What do we want?

N/A

NUMBER(19,2) This is meaningless because it combines balance types BB, CB, 29 and MB. What do we want?

N/A

NUMBER(19,2) 25 N/A

NUMBER(19,2) 26 N/A

27

NUMBER(19,2) N/A

NUMBER(19,2) 28 N/A

NUMBER(19,2) 24 N/A

NUMBER(19,2) 23 N/A

NUMBER(19,2) 27 26 22 22 23 24 23 20 Not sure what this is for. 10 10 11 15 NUMBER(19,2) NUMBER(10,0) NUMBER(10,0) NUMBER(10,0) NUMBER(10,0) NUMBER(10,0) DATE VARCHAR2(5) VARCHAR2(1) VARCHAR2(1), DATE N/A N/A 0 0 0 0 0 January 1, 1900 'KFS' 'N' 'E' Start time of ETL job

15 9

DATE NUMBER(10)

Start time of ETL job 0

clude periods BB & CB in their cumulation (i.e. only periods 1 to 12)

Constraints

Column Type

Source Type Source Table

not null, foreign key to KF_D_FISCAL_PERIOD Surrogate Key not null, foreign key to KF_D_ACCOUNT not null, foreign key to KF_D_OBJECT_CODE

Copy

KF_F_LEDGER_ENTRY

Surrogate Key

Copy

KF_F_LEDGER_ENTRY

Surrogate Key

Copy

KF_F_LEDGER_ENTRY

not null, foreign key to KD_D_PROJECT Surrogate Key not null, foreign key to KF_D_ORG Surrogate Key not null, foreign key to KF_D_ACCOUNT_STAT ISTICS Surrogate Key not null not null not null not null not null not null Business key Business key Business key Business key Business key Business key

Copy Copy

KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY

Copy Copy Copy Copy Copy Copy Copy

KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY

not null not null

Business key Business key

Copy Copy

KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY

not null not null not null

Business Key Business Key Degenerate Dimension

Transform Copy Transform

KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY

not null

Degenerate Dimension

Transform

KF_F_LEDGER_ENTRY

N/A N/A

Measure Measure

Transform Transform

KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY

N/A

Degenerate Dimension

Transform

KF_F_LEDGER_ENTRY

N/A

Degenerate Dimension

Transform

KF_F_LEDGER_ENTRY

N/A

Degenerate Dimension

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A N/A N/A N/A N/A

Measure Measure Measure Measure Measure

Transform Transform Transform Transform Transform

KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_L_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A Measure Transform KF_F_LEDGER_ENTRY with FISCAL_PERIOD_CD after the fiscal period for the current row or with FISCAL_PERIOD_CD in ( 'CB', 'BB', 'AB' ). N/A N/A N/A N/A N/A Measure Measure Measure Measure Measure Transform Transform Transform Transform Transform KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_L_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A N/A

Measure Measure

Transform Transform

KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A N/A N/A N/A

Measure Measure Measure Measure

Transform Transform Transform Transform

KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_L_LEDGER_ENTRY KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A

Measure

Transform

KF_F_LEDGER_ENTRY

N/A N/A N/A N/A N/A N/A N/A not null NOT NULL NOT NULL NOT NULL NOT NULL

Measure Measure Measure Measure Measure Measure Measure Effective Date Business Key Audit Audit Audit

Transform Transform Transform Transform Transform Transform Generated Generated Copy Generated Generated Generated

KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY KF_F_LEDGER_ENTRY N/A N/A KF_F_LEDGER_ENTRY N/A N/A N/A

NOT NULL NOT NULL

Audit Audit

Generated Generated

N/A N/A

Source Column

Lookup Logic*

FISCAL_PERIOD_SID

N/A

ACCOUNT_SID

N/A

OBJECT_CODE_SID

N/A

PROJECT_SID ACCOUNT_ORG_SID

N/A N/A

ACCOUNT_STATISTICS_SID FISCAL_YEAR UNIV_FISCAL_PRD_CD FIN_COA_CD ACCOUNT_NBR SUB_ACCT_NBR FIN_OBJECT_CD

N/A N/A N/A N/A N/A N/A N/A

FIN_SUB_OBJ_CD PROJECT_CD

N/A N/A

POSTING_DT LEDGER_PENDING_FLG_UA TRANSACTION_DT

N/A N/A N/A Within aggregation: document_nbr with the latest LEDGER_POST_DT value. If more than one matches, then the one with the highest LEDGER_ENTRY_SEQUENCE_NBR

DOCUMENT_NBR

LEDGER_ACTUALS_AMT_UA LEDGER_ACTUALS_AMT_UA

N/A N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_BASE_BUDGET_AMT_UA LEDGER_CURRENT_BUDGET_AMT_UA LEDGER_MONTH_BUDGET_AMT_UA LEDGER_ACTUALS_AMT_UA LEDGER_ENCUMBRANCE_AMT_UA

N/A N/A N/A N/A N/A

Multiple

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

EDGER_ACTUALS_AMT_UA

N/A

LEDGER_ENCUMBRANCE_AMT_UA

N/A

LEDGER_ENCUMBRANCE_AMT_UA

N/A

LEDGER_ENTRY_AMT

N/A

LEDGER_ENTRY_AMT

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

Multiple

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA in ( 'CB', 'BB', 'AB' ). LEDGER_BASE_BUDGET_AMT_UA LEDGER_CURRENT_BUDGET_AMT_UA LEDGER_MONTH_BUDGET_AMT_UA LEDGER_ACTUALS_AMT_UA LEDGER_ENCUMBRANCE_AMT_UA

N/A

N/A N/A N/A N/A N/A

Multiple

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ENCUMBRANCE_AMT_UA

N/A

LEDGER_ENCUMBRANCE_AMT_UA

N/A

LEDGER_ENTRY_AMT

N/A

LEDGER_ENTRY_AMT

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA Multiple

N/A N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_BASE_BUDGET_AMT_UA LEDGER_CURRENT_BUDGET_AMT_UA LEDGER_MONTH_BUDGET_AMT_UA LEDGER_ACTUALS_AMT_UA

N/A N/A N/A N/A

LEDGER_ENCUMBRANCE_AMT_UA

N/A

Multiple

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ENCUMBRANCE_AMT_UA

N/A

LEDGER_ENCUMBRANCE_AMT_UA

N/A

LEDGER_ENTRY_AMT

N/A

LEDGER_ENTRY_AMT

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA

N/A

LEDGER_ACTUALS_AMT_UA LEDGER_ENTRY_AMT LEDGER_ENTRY_AMT LEDGER_ENTRY_AMT LEDGER_ENTRY_AMT LEDGER_ENTRY_AMT N/A N/A SRC_SYS_ID N/A N/A N/A

N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A

N/A N/A

N/A N/A

Transform Logic

N/A

N/A

N/A

N/A N/A

N/A N/A N/A N/A N/A N/A N/A

N/A N/A

Last day of month containing posting date. N' /'Y' max(transaction_dt) at aggregation level

N/A

MIN( ABS(LEDGER_ACTUALS_AMT_UA) ) MAX( ABS(LEDGER_ACTUALS_AMT_UA) )

ROUND(AVG( CASE WHEN xxxxxxxx THEN ABS(EDGER_ACTUALS_AMT_UA) END ) ,2) /* aggregate at xxxxxx MOVE THIS TO ANOTHER TABLE */ MEDIAN( CASE WHEN not pending AND ledger_post_dt in fiscal period date range THEN ABS(LEDGER_ACTUALS_AMT_UA) END ) ROUND(STDDEV( CASE WHEN xxxxx THEN ABS(LEDGER_ACTUALS_AMT_UA) END ) ,2)

/* min, max, average, median, and standard deviation of actuals transaction amounts on the account */ MIN( ABS(LEDGER_ACTUALS_AMT_UA) )

MAX( ABS(LEDGER_ACTUALS_AMT_UA) )

ROUND(AVG( CASE WHEN xxxxx THEN ABS(LEDGER_ACTUALS_AMT_UA) END ) ,2) MEDIAN( CASE WHEN xxxxx THEN THEN ABS(LEDGER_ACTUALS_AMT_UA) END ) ROUND(STDDEV( CASE WHEN xxxxxx THEN ABS(LEDGER_ACTUALS_AMT_UA) END ) ,2) /* original budget transactions balance */ SUM(LEDGER_BASE_BUDGET_AMT_UA) /* current budget transactions balance */ SUM(LEDGER_CURRENT_BUDGET_AMT_UA) /* month budget transactions balance */ SUM(LEDGER_MONTH_BUDGET_AMT_UA) /* actuals transactions balance */ SUM(LEDGER_ACTUALS_AMT_UA) /* encumbrance transactions balance */ SUM(LEDGER_ENCUMBRANCE_AMT_UA) /* AVAIL should be budget - actuals - encumbrances */ SUM(LEDGER_CURRENT_BUDGET_AMT_UA) - SUM(LEDGER_ACTUALS_AMT_UA) SUM(LEDGER_ENCUMBRANCE_AMT_UA) /* beginning balance */ SUM(CASE WHEN KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'FB' AND FISCAL_PERIOD_CD in ( 'BB', 'CB' ) then LEDGER_ACTUALS_AMT_UA END)

SUM( IF UNIV_FISCAL_PRD_CD = 'BB' THEN LEDGER_ACTUALS_AMT_UA )

SUM( IF UNIV_FISCAL_PRD_CD = 'CB' THEN LEDGER_ACTUALS_AMT_UA )

SUM( IF UNIV_FISCAL_PRD_CD = 'BB' THEN LEDGER_ENCUMBRANCE_AMT_UA )

SUM( IF UNIV_FISCAL_PRD_CD = 'CB' THEN LEDGER_ENCUMBRANCE_AMT_UA )

SUM(CASE WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'BB' AND TRN_DEBIT_CRDT_CD <> 'D' then (-1 * LEDGER_ENTRY_AMT) WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'BB' AND TRN_DEBIT_CRDT_CD = 'D' then LEDGER_ENTRY_AMT END)

SUM(CASE WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'CB' AND TRN_DEBIT_CRDT_CD <> 'D' then (-1 * LEDGER_ENTRY_AMT) WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'CB' AND TRN_DEBIT_CRDT_CD = 'D' then LEDGER_ENTRY_AMT END) /* special INCOME ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'IN' THEN LEDGER_ACTUALS_AMT_UA ) /* special EXPENSE ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'EX' THEN LEDGER_ACTUALS_AMT_UA ) /* special FUND BALANCE ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'FB' THEN LEDGER_ACTUALS_AMT_UA ) /* special LIABILITIES ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'LI' THEN LEDGER_ACTUALS_AMT_UA ) /* special ASSETS ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'AS' THEN LEDGER_ACTUALS_AMT_UA ) /* special CASH ASSETS ACTUALS balance */ SUM(CASE WHEN KF_D_OBJECT.OBJECT_CATEGORY_CD = 'AS' AND OBJECT_CD = '8100' then LEDGER_ACTUALS_AMT_UA END) /* special NON-CASH ASSETS ACTUALS balance */ SUM(CASE WHEN KF_D_OBJECT.OBJECT_CATEGORY_CD = 'AS' AND OBJECT_CD <> '8100' then LEDGER_ACTUALS_AMT_UA END)

SUM(ACCTACT_BEGIN_FUND_BAL_AMT_UA + ACCTACT_INCOME_ACT_AMT_UA + ACCTACT_EXPENSE_ACT_AMT_UA)

SUM(CASE ABS(LEDGER_ACTUALS_AMT_UA) between (ACCTACT_MEAN_AMT_UA - ACCTACT_STANDARD_DEV_AMT_UA) and (ACCTACT_MEAN_AMT_UA + ACCTACT_STANDARD_DEV_AMT_UA) THEN 1 END) SUM(CASE WHEN ABS(LEDGER_ACTUALS_AMT_UA) between (ACCTACT_MEAN_AMT_UA - (2 * ACCTACT_STANDARD_DEV_AMT_UA)) and (ACCTACT_MEAN_AMT_UA + (2 * ACCTACT_STANDARD_DEV_AMT_UA)) and ABS(LEDGER_ACTUALS_AMT_UA) not between (ACCTACT_MEAN_AMT_UA - ACCTACT_STANDARD_DEV_AMT_UA) and (ACCTACT_MEAN_AMT_UA + ACCTACT_STANDARD_DEV_AMT_UA) THEN 1 END)

SUM(CASE WHEN ABS(LEDGER_ACTUALS_AMT_UA) NOT between (ACCTACT_MEAN_AMT_UA - (2 * ACCTACT_STANDARD_DEV_AMT_UA)) and (ACCTACT_MEAN_AMT_UA + (2 * ACCTACT_STANDARD_DEV_AMT_UA)) THEN 1 END) /* adjusted base budget transactions balance. */ SUM(LEDGER_BASE_BUDGET_AMT_UA) /* Current budget transactions balance. */ SUM(LEDGER_CURRENT_BUDGET_AMT_UA) "/* month budget transactions balance */ SUM(LEDGER_MONTH_BUDGET_AMT_UA)" /* actuals transactions balance */ SUM(LEDGER_ACTUALS_AMT_UA) /* encumbrance transactions balance */ SUM(LEDGER_ENCUMBRANCE_AMT_UA) /* AVAIL should be budget - actuals - encumbrances */ SUM(LEDGER_CURRENT_BUDGET_AMT_UA) - SUM(LEDGER_ACTUALS_AMT_UA) SUM(LEDGER_ENCUMBRANCE_AMT_UA) /* beginning balance, non-contracts and grants */ SUM(CASE WHEN AL2.ACCTG_CTGRY_CD = 'FB' AND UNIV_FISCAL_PRD_CD IN ( 'BB', 'CB' ) then LEDGER_ACTUALS_AMT_UA END) SUM( IF UNIV_FISCAL_PRD_CD = 'BB' THEN LEDGER_ACTUALS_AMT_UA )

SUM( IF UNIV_FISCAL_PRD_CD = 'CB' THEN LEDGER_ACTUALS_AMT_UA ) SUM( IF UNIV_FISCAL_PRD_CD = 'BB' THEN LEDGER_ENCUMBRANCE_AMT_UA ) SUM( IF UNIV_FISCAL_PRD_CD = 'CB' THEN LEDGER_ENCUMBRANCE_AMT_UA ) SUM(CASE WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'BB' <> 'D' then (-1 * LEDGER_ENTRY_AMT) WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'BB' = 'D' then LEDGER_ENTRY_AMT END) SUM(CASE WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'CB' <> 'D' then (-1 * LEDGER_ENTRY_AMT) WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'CB' = 'D' then LEDGER_ENTRY_AMT END) /* special INCOME ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'IN' THEN LEDGER_ACTUALS_AMT_UA ) /* special EXPENSE ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'EX' THEN LEDGER_ACTUALS_AMT_UA ) /* special FUND BALANCE ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'FB' THEN LEDGER_ACTUALS_AMT_UA )

AND TRN_DEBIT_CRDT_CD

AND TRN_DEBIT_CRDT_CD

AND TRN_DEBIT_CRDT_CD

AND TRN_DEBIT_CRDT_CD

/* special LIABILITIES ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'LI' THEN LEDGER_ACTUALS_AMT_UA ) /* special ASSETS ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'AS' THEN LEDGER_ACTUALS_AMT_UA ) /* special CASH ASSETS ACTUALS balance */ SUM(CASE WHEN KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'AS' AND fin_object_cd = '8100' then LEDGER_ACTUALS_AMT_UA END) /* special NON-CASH ASSETS ACTUALS balance */ SUM(CASE WHEN KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'AS' AND fin_object_cd <> '8100' then LEDGER_ACTUALS_AMT_UA END) SUM(ACCTCUM_BEGIN_BAL_AMT_UA + ACCTCUM_INCOME_ACT_AMT_UA + ACCTCUM_EXPENSE_ACT_AMT_UA) SUM(CASE ABS(LEDGER_ACTUALS_AMT_UA) between (ACCTACT_MEAN_AMT_UA - ACCTACT_STANDARD_DEV_AMT_UA) and (ACCTACT_MEAN_AMT_UA + ACCTACT_STANDARD_DEV_AMT_UA) THEN 1 END) SUM(CASE WHEN ABS(LEDGER_ACTUALS_AMT_UA) between (ACCTACT_MEAN_AMT_UA - (2 * ACCTACT_STANDARD_DEV_AMT_UA)) and (ACCTACT_MEAN_AMT_UA + (2 * ACCTACT_STANDARD_DEV_AMT_UA)) and ABS(LEDGER_ACTUALS_AMT_UA) not between (ACCTACT_MEAN_AMT_UA - ACCTACT_STANDARD_DEV_AMT_UA) and (ACCTACT_MEAN_AMT_UA + ACCTACT_STANDARD_DEV_AMT_UA) THEN 1 END) SUM(CASE WHEN ABS(LEDGER_ACTUALS_AMT_UA) NOT between (ACCTACT_MEAN_AMT_UA - (2 * ACCTACT_STANDARD_DEV_AMT_UA)) and (ACCTACT_MEAN_AMT_UA + (2 * ACCTACT_STANDARD_DEV_AMT_UA)) THEN 1 END) /* adjusted base budget transactions balance. */ SUM(LEDGER_BASE_BUDGET_AMT_UA) /* Current budget transactions balance. */ SUM(LEDGER_CURRENT_BUDGET_AMT_UA) /* month budget transactions balance */ SUM(LEDGER_MONTH_BUDGET_AMT_UA) /* actuals transactions balance */ SUM(LEDGER_ACTUALS_AMT_UA)

/* encumbrance transactions balance */ SUM(LEDGER_ENCUMBRANCE_AMT_UA) /* AVAIL should be budget - actuals - encumbrances */ SUM(LEDGER_CURRENT_BUDGET_AMT_UA) - SUM(LEDGER_ACTUALS_AMT_UA) SUM(LEDGER_ENCUMBRANCE_AMT_UA) /* beginning balance */ SUM(CASE WHEN AL2.ACCTG_CTGRY_CD = 'FB' AND UNIV_FISCAL_PRD_CD IN ( 'BB', 'CB' ) then LEDGER_ACTUALS_AMT_UA END) SUM( IF UNIV_FISCAL_PRD_CD = 'BB' THEN LEDGER_ACTUALS_AMT_UA ) SUM( IF UNIV_FISCAL_PRD_CD = 'CB' THEN LEDGER_ACTUALS_AMT_UA ) SUM( IF UNIV_FISCAL_PRD_CD = 'BB' THEN LEDGER_ENCUMBRANCE_AMT_UA ) SUM( IF UNIV_FISCAL_PRD_CD = 'CB' THEN LEDGER_ENCUMBRANCE_AMT_UA ) SUM(CASE WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'BB' AND TRN_DEBIT_CRDT_CD <> 'D' then (-1 * LEDGER_ENTRY_AMT) WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'BB' AND TRN_DEBIT_CRDT_CD = 'D' then LEDGER_ENTRY_AMT END) SUM(CASE WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'CB' AND TRN_DEBIT_CRDT_CD <> 'D' then (-1 * LEDGER_ENTRY_AMT) WHEN FIN_BALANCE_TYP_CD in ('MB','BB','CB') AND UNIV_FISCAL_PRD_CD = 'CB' AND TRN_DEBIT_CRDT_CD = 'D' then LEDGER_ENTRY_AMT END) /* special INCOME ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'IN' THEN LEDGER_ACTUALS_AMT_UA )

/* special EXPENSE ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'EX' THEN LEDGER_ACTUALS_AMT_UA ) /* special FUND BALANCE ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'FB' THEN LEDGER_ACTUALS_AMT_UA ) /* special LIABILITIES ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'LI' THEN LEDGER_ACTUALS_AMT_UA ) /* special ASSETS ACTUALS balance */ SUM( IF KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'AS' THEN LEDGER_ACTUALS_AMT_UA ) /* special CASH ASSETS ACTUALS balance */ SUM(CASE WHEN KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'AS' AND fin_object_cd = '8100' then LEDGER_ACTUALS_AMT_UA END) /* special NON-CASH ASSETS ACTUALS balance */ SUM(CASE WHEN KF_D_OBJECT_CODE.OBJECT_CATEGORY_CD = 'AS' AND fin_object_cd <> '8100' then LEDGER_ACTUALS_AMT_UA END) SUM(ACCTBAL_BEGIN_FUND_BAL_AMT_UA + ACCTBAL_INCOME_ACT_AMT_UA + ACCTBAL_EXPENSE_ACT_AMT_UA) AS ACCTBAL_PRESENT_BAL_AMT_UA SUM(CASE WHEN TRANSACTION_DT >= (SYSDATE - 1) THEN 1 ELSE 0 END) SUM(CASE WHEN TRANSACTION_DT >= (SYSDATE - 7) THEN 1 ELSE 0 END) SUM(CASE WHEN TRANSACTION_DT >= (SYSDATE - 30) THEN 1 ELSE 0 END) SUM(CASE WHEN TRANSACTION_DT < (SYSDATE - 30) THEN 1 ELSE 0 END) '1' Round( Job start timestamp to the nearest day ) -- if this is difficult in datastage, let me know N/A If any lookups fail when building the row then 'Y' else 'N' Passed as a variable to the ETL job. Should be E for EPM-sourced data and S for source-system-sourced data.

Start time of ETL job

Start time of ETL job Batch ID of highest level ETL job that called this one.

Purpose

Comment

Added because I think people will want to report at this level

Added to allow us to do reproducible month-end reporting

need to update sign, does this fall under stats category? need to update sign, does this fall under stats category?

Remove? Does not aggregage (e.g. by fund group.) Make account statistics dimension or add statistics to t

Remove? Does not aggregage (e.g. by fund group.)

Remove? Define at account level and move to account dimension? Does not aggregate.

correct to have 'BB' and 'CB' both? drop this field? Used in FBM 61 report

New column. What is this for? Is it basically the same as the one above?

New column, Check naming. What about RE (year end budget reversion)?

Make a parameter set parameter for 8100

Make a parameter set parameter for 8100

Do we want this? If so, probably in the KF_F_LEDGER_ENTRIES too

Did not change criteris based on BALANCE_TYPE_ENCUMBRANCE_FLG as not in table

Changed sign for AC & encumberance, need to remove hard coded encumberance types

Is having 'CB' in there too OK?

New column, Check naming

New column, Check naming

New column, Check naming

New column, Check naming

New column, Check naming

New column, Check naming

Make a parameter set parameter for the 8100

are we using right BEGIN BALANCE amount for this field?, calculated usine merge statement

calculated using merge statement

calculated using merge statement

calculated using merge statement

New column, Check naming

New column, Check naming

New column, Check naming

New column, Check naming

New column, Check naming

New column, Check naming

are we using right BEGIN BALANCE amount for this field? What about fund balance adjustments? Would using post date be better?

s dimension or add statistics to the account dimension.

ot aggregate.

erance types