How Things Work - ISD Development Approach
How Things Work - ISD Development Approach
Develop each identified units of ETL process (DS or MC) in ISD cloud
and combine multiple ETL process units in to one Schedule called
{task flow} . Each task flow is equivalent of existing sql interfaces.
The approach has been discussed on 8/2/2016 with Reyes team and has
been implemented for about 45 interfaces as of 9/2/2016. Some details
regarding the approach is given below with examples:
Mapping Design:
Source DML:
SELECT
RTRIM(ssn) [ssn]
, RTRIM(firstname) [fname]
, RTRIM(REPLACE(lastname,',','') ) [lname]
, CASE eestatus WHEN 'A' THEN 'A'
WHEN 'L' THEN 'A'
WHEN 'R' THEN 'I'
WHEN 'T' THEN 'I'
ELSE 'I'
END empstatus
, CONVERT(CHAR(10),dateoflasthire, 101) lasthired
, CASE WHEN dateoftermination IS NOT NULL THEN
CONVERT(VARCHAR(10),dateoftermination, 101) ELSE '' END termdate
, CASE WHEN RTRIM(jobdesc) like 'Conv%' THEN 'TERM'
ELSE RTRIM(jobdesc) END jobtitle
, CASE eetype WHEN 'REG' THEN 'F'
ELSE 'P'
END [emptype]
, CAST(CASE WHEN salaryorhourly = 'H' THEN hourlyrate
WHEN salaryorhourly = 'S' THEN annualsalary
ELSE ''
END as numeric(12,2)) salrate
, salaryorhourly salmode
, CASE WHEN left(payfrequency,1) = 'B' THEN 'BI'
WHEN left(payfrequency,1) = 'W' THEN 'W'
ELSE ''
END payfreq
, '' column_l
, ISNULL(CAST(current_year AS INT) ,YEAR(GETDATE())) current_year
, ISNULL(CAST(cur_yr_base AS INT) ,0) cur_yr_base
, ISNULL(CAST(cur_yr_ovt AS INT) ,0) cur_yr_ovt
, ISNULL(CAST(cur_yr_bonus AS INT) ,0) cur_yr_bonus
, ISNULL(CAST(cur_yr_gross AS INT),0) cur_yr_gross
current_year
, MAX(CASE WHEN pehpaydate = YEAR(GETDATE()) THEN [Base Amount] END)
cur_yr_base
, MAX(CASE WHEN PehPaydate = YEAR(GETDATE()) THEN [Overtime Amount]
END ) cur_yr_ovt
, MAX(CASE WHEN PehPaydate = YEAR(GETDATE()) THEN [Bonus Amount] END )
cur_yr_bonus
, MAX(CASE WHEN PehPaydate = YEAR(GETDATE()) THEN [Gross Amount] END)
cur_yr_gross
, MAX(CASE WHEN pehpaydate = YEAR(GETDATE()) - 1 THEN pehpaydate END)
previous_year
, MAX(CASE WHEN pehpaydate = YEAR(GETDATE()) - 1 THEN [Base Amount] END)
[prev_yr_base]
, MAX(CASE WHEN PehPaydate = YEAR(GETDATE()) - 1 THEN [Overtime Amount]
END ) [prev_yr_ovt]
, MAX(CASE WHEN PehPaydate = YEAR(GETDATE()) - 1 THEN [Bonus Amount]
END ) [prev_yr_bonus]
, MAX(CASE WHEN PehPaydate = YEAR(GETDATE()) - 1 THEN [Gross Amount] END)
[prev_yr_gross]
, MAX(CASE WHEN pehpaydate = YEAR(GETDATE()) - 2 THEN [pehpaydate] END)
[prev_year_2]
, MAX(CASE WHEN pehpaydate = YEAR(GETDATE()) - 2 THEN [Base Amount] END)
[prev_yr_2_base]
, MAX(CASE WHEN PehPaydate = YEAR(GETDATE()) - 2 THEN [Overtime Amount]
END ) [prev_yr_2_ovt]
, MAX(CASE WHEN PehPaydate = YEAR(GETDATE()) - 2 THEN [Bonus Amount]
END ) [prev_yr_2_bonus]
, MAX(CASE WHEN PehPaydate = YEAR(GETDATE()) - 2 THEN [Gross Amount] END)
[prev_yr_2_gross]
FROM
(
SELECT YEAR(pehpaydate) PehPaydate
, pehEEID prgeeid
, pehCOID prgcoid
, SUM( CASE WHEN RTRIM(pehearncode) = PayCode AND category = 'Base
Amount' THEN ISNULL(pehcuramt,0) END ) [Base Amount]
, SUM( CASE WHEN RTRIM(pehearncode) = PayCode AND category = 'overtime'
THEN ISNULL(pehcuramt,0) END ) [Overtime Amount]
, SUM( CASE WHEN RTRIM(pehearncode) = PayCode AND category = 'Bonus' THEN
ISNULL(pehcuramt,0) END) [Bonus Amount]
, SUM( CASE WHEN PehReportCategory <> 'NCH' AND PehUseDedOffSet = 'N'
THEN ISNULL(pehcuramt,0) END ) [Gross Amount]
FROM pearhist
INNER JOIN Reyes_Verifyx_Codes ON Paycode = pehearncode
WHERE YEAR(pehPayDate) IN (YEAR(GETDATE()), YEAR(GETDATE()) -1,
YEAR(GETDATE()) - 2 )
GROUP BY YEAR(pehpaydate)
, pehEEID
, pehCOID
)t
3. Split
Source
Query
Approach:
Dissecting
complex
source
query with
multiple
joins would
take increased amount of efforts during the Analysis, development, testing
and release phases. This approach was not preferred because this approach
would take increased amount of time in transition to support personal.