You are on page 1of 161

Interface Technical

Design
Project DWQ Quantisense 5.00Project
Name:
Project
Reference
Number:
Interface 01
ID:
Interface IGPRCalendarIGPR.R1.DWQ.INT.01.PDWQ_
Name: STG_BASE_TD.doc
Integratio
n Tool:
Document
Version: 1.0
Project
Manager: James Berry
Prepared
By: CSC
PROJECT
Internal Use Only

Gap Inc. Internal Use Only

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

CONTENTS
CONTENTS.........................................................................................................................2
1

DOCUMENT REVIEW & SIGN-OFF............................................................................5


1.1

DOCUMENT APPROVERS............................................................................................................. 5

1.2

DOCUMENT REVIEWERS.............................................................................................................. 5

1.3

FOR INFORMATION ONLY.............................................................................................................. 5

1.4

SUPPORTING DOCUMENTS.......................................................................................................... 5

USING THIS TEMPLATE............................................................................................7

INTERFACE OVERVIEW.............................................................................................8
3.1

INTERFACE DESIGN PATTERN.................................................................................9


4.1

DESIGN ASSUMPTIONS................................................................................................................ 8

INTERFACE PATTERN DIAGRAM.................................................................................................... 9

INTERFACE DATA FLOW..........................................................................................11


DETAILED DESCRIPTION...................................................................................................................... 11
5.1

PROCESS P1 POPULATE YEAR

DATA........................................................................................... 11

5.2

PROCESS P2 POPULATE THE SEASON DATA................................................................................11

5.3

PROCESS P3 POPULATE THE QUARTER DATA..............................................................................12

5.4

PROCESS P4 POPULATE THE MONTH DATA.................................................................................12

5.5

PROCESS P5 POPULATE THE WEEK DATA...................................................................................12

5.6

PROCESS P6 POPULATE THE DATE DATA....................................................................................13

5.7

PROCESS P7 POPULATE THE TIME TRANFORMATION DATA...........................................................13

MESSAGE BROKER IMPLEMENTATION DETAILS..................................................14

ETL IMPLEMENTATION DETAILS............................................................................15


7.1

OVERVIEW............................................................................................................................... 15

7.2

DATA DEFINITIONS.................................................................................................................... 16

7.3

SHELL SCRIPT DETAILS.............................................................................................................. 16

7.4

COMPONENT: PDWQ01DU_CAL_Y_ETL.BTQ......................................................................17

7.4.1 DESCRIPTION OF STAGES......................................................................................................... 17


7.4.2 PROCESSING SPECIFICS.......................................................................................................... 21
Gap Quantisense Calendar TD

Page 2 of 161

Interface Technical Design


Gap Quantisense Calendar TD
7.5

ETL Implementation Details

COMPONENT: PDWQ02DU_CAL_S_ETL.BTQ......................................................................22

7.5.1 DESCRIPTION OF STAGES.......................................................................................................... 22


7.5.2 PROCESSING SPECIFICS.......................................................................................................... 27
7.6

COMPONENT: PDWQ03DU_CAL_Q_ETL.BTQ.....................................................................27

7.6.1 DESCRIPTION OF STAGES........................................................................................................... 27


7.6.2
7.7

PROCESSING SPECIFICS......................................................................................................... 32
COMPONENT: PDWQ04DU_CAL_M_ETL.BTQ...................................................................32

7.7.1 DESCRIPTION OF STAGES.......................................................................................................... 32


7.7.2 PROCESSING SPECIFICS.......................................................................................................... 37
7.8

COMPONENT: PDWQ05DU_CAL_W_ETL.BTQ....................................................................37

7.8.1 DESCRIPTION OF STAGE............................................................................................................ 37


7.8.2 PROCESSING SPECIFICS.......................................................................................................... 43
7.9

COMPONENT: PDWQ06DU_CAL_DT_ETL.BTQ...................................................................43

7.9.1 DESCRIPTION OF STAGES.......................................................................................................... 43


7.9.2 PROCESSING SPECIFICS.......................................................................................................... 51
7.10 PDWQ07DU_CAL_4W8W_ETL.BTQ......................................................................................51
7.10.1

DESCRIPTION OF STAGES................................................................................................51

7.10.2

PROCESSING SPECIFICS.................................................................................................53

DATA VOLUME AND SIZING....................................................................................54

INTERFACE TRANSPORT CONFIGURATION...........................................................61

10

ADMINISTRATION & MAINTENANCE.....................................................................62


10.1 EXECUTION STRATEGY.............................................................................................................. 62
10.2 RESTART / RETRY STRATEGY.................................................................................................... 62
10.3 INTERFACE CONFIGURATION DETAILS.........................................................................................62

11

INTERFACE CONTROLS..........................................................................................63
11.1 INTERFACE CONTROLS COMPLETENESS & ACCURACY.............................................................63
11.2 INTERFACE CONTROLS EXCEPTION HANDLING.........................................................................64
11.3 INTERFACE CONTROLS SECURITY...........................................................................................65
11.4 INTERFACE CONTROLS TIMING................................................................................................ 66
11.5 INTERFACE CONTROLS TRACEABILITY.....................................................................................67

Gap Quantisense Calendar TD

Page 3 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

12

UNIT TEST CONDITIONS........................................................................................68

13

ISSUE DOCUMENTATION........................................................................................69

14

GLOSSARY...............................................................................................................70

15

LOG MESSAGES......................................................................................................71

16

APPENDIX................................................................................................................72

Document Change History


DATE

VERSION

AUTHORREVIEWE

BRIEF DESCRIPTION OF

RAUTHOR

CHANGE

0Need to
Update0.1

MostafaNeed to
UpdateMostafa
Alattar

InitialNeed to UpdateInitial
document, Calendar subject
area

3/21/2011

0.1.1

Carlos DAlmeida

Location subject area

3/22/2011

0.1.2

Carlos D'Almeida

Location subject area

3/24/2011

0.1.3

Carlos D'Almeida

Calendar and RLI subject area

3/28/2011

0.1.4

Carlos D'Almeida

Product subject area

4/27/11

0.1.5

Carlos D'Almeida

Calendar, Location, RLI, and


Product

3Need to
Update3/14/2011

Author

Need to Update

Gap Quantisense Calendar TD

Page 4 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

1 DOCUMENT REVIEW & SIGN-OFF


1.1

DOCUMENT APPROVERS

NAME

ROLE

SIGN-OFF DATE

Beng Ong
Oleg Poltoratskiy
Ameeta Charles

Tech Manager
Teradadata DBA
Data Analyst

05/18/2011
05/20/2011
05/12/2011

ROLE

SIGNATURE

SIGN-OFF DATE

BengOleg
PoltoratskiyBeng Ong
Oleg Poltoratskiy

TechDBATech Manager

05/15/2011

Teradadata DBA

Need to
Update05/18/2011
05/20/2011

Ameeta Charles

Data Analyst

05/12/2011

1.2
1.3

DOCUMENT REVIEWERS

NAME

Gap Quantisense Calendar TD

Page 5 of 161

Interface Technical Design


Gap Quantisense Calendar TD

1.4

DOCUMENT REVIEWERS
NAME

ROLE

SIGNATURE

SIGN-OFF DATE

Beng Ong

ETL LeadTech
Manager
Teradadata DBA
Need to Update
Data Analyst

Need to Update

05/15/2011

Need to Update
Need to Update
Need to Update

05/18/2011
05/20/2011
05/10/2011

Oleg Poltoratskiy
Mostafa Alattar
Ameeta Charles

1.5

ETL Implementation Details

FOR INFORMATION ONLY


Role
Name

1.6

SUPPORTING DOCUMENTS
INSTRUCTIONS

Type the name of each document title -- adding any additional documents that may apply.
Download and use the most current version of the IT Project Required Deliverable
template.

DOCUMENT TITLE

IGPRGap
QuantiSense
FD.docxIGPR.R1.DW
Q.INT.01.PDWQ_STG
_BASE_FD.doc

Gap Quantisense Calendar TD

DOCUMENT
TYPE

Functional
Design

VERSI
ON

1.0

AUTHOR

Quantise
nseQuan
tisenseC
SC

DATE

05/18/20
11

LOCATION

https://folio.gap.com/sites
/eugrowth/Reporting
%20Project/Forms/AllIte
ms.aspx?RootFolder=
%2Fsites%2Feugrowth
%2FReporting
%20Project
%2FQuantiSense
%2F3%20%2D
%20Design

Page 6 of 161

Interface Technical Design


Gap Quantisense Calendar TD

DOCUMENT TITLE

IGPR.R1.DWQ.INT.01.
PDWQ_STG_BASE_T
D.doc

Gap Quantisense Calendar TD

DOCUMENT
TYPE

Technical Design

ETL Implementation Details

VERSI
ON

1.0

AUTHOR

CSC

DATE

05/2624/
2011

LOCATION

https://folio.gap.com/sites
/eugrowth/Reporting
%20Project/Forms/AllIte
ms.aspx?RootFolder=
%2Fsites%2Feugrowth
%2FReporting
%20Project
%2FQuantiSense
%2F3%20%2D
%20Design

Page 7 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

2 DESIGN ASSUMPTIONS
2.1

DESIGN ASSUMPTIONS

Assumptions:

1. RLI will be calculated at a SKU/Store/Week level.


2. The design of this interface is tailored specifically to the
QuantiSense data model and software.

3.

Gap Quantisense Calendar TD

The table and column names have been chosen to match the
configuration in MicroStrategy for the QuantiSense project.

Page 8 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

3 USING THIS TEMPLATE

Gap Quantisense Calendar TD

Page 9 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

4 INTERFACE OVERVIEW
INSTRUCTIONS

Type the name of each document title -- adding any additional documents that may
apply. Download and use the most current version of the IT Project Required
Deliverable template.
The interface scripts for the Calendar subject area, QuantiSense RLI & Compare Store & CCY Exchange
Rate area interact with the BCR database to populate necessary tables which are not already available in
the Gap data model. This data includes the Calendar tables (Year, Season, Quarter, Month, Week and
Date), QuantiSense RLI(Stockout & ISO tables) & Compare Store & CCY Exchange Rate(Compare Store
dimension table and Exchange rate values table) and the Time Transformation tables (L4W, L8W, N4W and
LYN4W and the scripts will run daily to load new recordsdata.
Both the source and target tables will be in the BCR database.

4.1

DESIGN ASSUMPTIONS

Assumptions:

1.

Need to UpdateRLI will be calculated at a

SKU/Store/Week level.
2. The design of this interface is tailored specifically to the QuantiSense
data model and software.
3. The table and column names have been chosen to match the
configuration in MicroStrategy for the QuantiSense project.

Gap Quantisense Calendar TD

Page 10 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

5 INTERFACE DESIGN PATTERN


INSTRUCTIONS

Use the \\AMERICAS\SB\SB-CAS Public\Integration Standards & Guidelines\Integration


Architecture Interface Guidelines.doc to determine End-to-End Interface Design Pattern
required for this interface. These guidelines will help you to select the integration
technique to be used for the Source and Target application(s) and determine if
Integration Services are required. After the End-to-End Interface Design Pattern for this
interface is determined. Complete the following two sub-sections.

5.1

INTERFACE PATTERN DIAGRAM


INSTRUCTIONS

Based on the guidelines MSTlined in the NSI Integration Strategy document, please
insert the pattern that will be implemented for this interface. The pattern should be
overlaid with the technologies that will be leveraged for implementation.

5.2

LOAD DATA TO DW_CAL_Y:


The data will be extracted from TFCED_FIS_CAL_YR_DIM table for current and prior 3 fiscal years
and loaded into DW_CAL_Y after performing the necessary Change comparisions.Update down stream
tables DW_CAL_S,DW_CAL_Q,DW_CAL_M,DW_CAL_W & DW_CAL_DT with new Year values. The

overview of the interface is as below:

Gap Quantisense Calendar TD

Page 11 of 161

Interface Technical Design


Gap Quantisense Calendar TD

5.3

ETL Implementation Details

LOAD DATA TO DW_CAL_S:


The data will be extracted from TFCHD_FIS_CAL_HALF_YR_DIM table for current and prior 3
fiscal years & 1st Season and loaded into DW_CAL_S after performing the necessary Change
comparisions. Update down stream tables DW_CAL_Q,DW_CAL_M,DW_CAL_W & DW_CAL_DT with new
Season values. The overview of the interface is as below:

Gap Quantisense Calendar TD

Page 12 of 161

Interface Technical Design


Gap Quantisense Calendar TD

5.4

ETL Implementation Details

LOAD DATA TO DW_CAL_Q:


The data will be extracted from TFCQD_FIS_CAL_QTR_DIM table for current and prior 3 fiscal
years & 1st Quarter and loaded into DW_CAL_Q after performing the necessary Change comparisions.
Update down stream tables DW_CAL_M,DW_CAL_W & DW_CAL_DT with new Quarter values. The

overview of the interface is as below:

Gap Quantisense Calendar TD

Page 13 of 161

Interface Technical Design


Gap Quantisense Calendar TD

5.5

ETL Implementation Details

LOAD DATA TO DW_CAL_M:


The data will be extracted from TFCMD_FIS_CAL_MO_DIM table for current and prior 3 fiscal
years 1st Month and loaded into DW_CAL_M after performing the necessary Change comparisions. Update
down stream tables DW_CAL_W & DW_CAL_DT with new Month values. The overview of the interface

is as below:

Gap Quantisense Calendar TD

Page 14 of 161

Interface Technical Design


Gap Quantisense Calendar TD

5.6

ETL Implementation Details

LOAD DATA TO DW_CAL_W:


The data will be extracted from TFCWD_FIS_CAL_WK_DIM table for current and prior 3 fiscal
years and loaded into DW_CAL_W after performing the necessary Change comparisions. Update down
stream tables DW_CAL_DT with new Week values. The overview of the interface is as below:

Gap Quantisense Calendar TD

Page 15 of 161

Interface Technical Design


Gap Quantisense Calendar TD

5.7

ETL Implementation Details

LOAD DATA TO DW_CAL_DT:


The data will be extracted from TFCDD_FIS_CAL_DT_DIM table for for current and prior 3 fiscal
years and loaded into DW_CAL_DT after performing the necessary Change comparisions The overview of

the interface is as below:

Gap Quantisense Calendar TD

Page 16 of 161

Interface Technical Design


Gap Quantisense Calendar TD

5.8

ETL Implementation Details

DW_CAL_L4W, DW_CAL_L8W, DW_CAL_N4W AND DW_CAL_LYN4W TABLES:


a. Load data to DW_CAL_W_L4W:
The data will be extracted from DW_CAL_W table for last 4 Weeks and loaded into DW_CAL_W_L4W.

The overview of the interface is as below:

Gap Quantisense Calendar TD

Page 17 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

b. Load data to DW_CAL_W_L8W:


The data will be extracted from DW_CAL_W table for last 8 Weeks and loaded into
DW_CAL_W_L8W. The overview of the interface is as below:

Gap Quantisense Calendar TD

Page 18 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

c. Load data to DW_CAL_W_N4W:


The data will be extracted from DW_CAL_W table for next 4 weeks and loaded into
DW_CAL_W_LN4W. The overview of the interface is as below:

Gap Quantisense Calendar TD

Page 19 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

d. Load data to DW_CAL_W_LY_N4W:


The data will be extracted from DW_CAL_W table for last year next 4 weeks and loaded into

DW_CAL_W_LY_N4W. The overview of the interface is as below:

Gap Quantisense Calendar TD

Page 20 of 161

Interface Technical Design


Gap Quantisense Calendar TD

5.9

ETL Implementation Details

LOAD DATA TO DW_LOC_CMP_STR_D:


The interface will extracts store comparison data from the table TSFCW_STR_FIN_CMPSLS_FCT and
loads into the table DW_LOC_CMP_STR_D after performing business transforamtions and change
comparisions.

Gap Quantisense Calendar TD

Page 21 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

5.10 LOAD DATA TO DW_CCY_EXCH:

Gap Quantisense Calendar TD

Page 22 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

The interface will extracts store comparison data from the table TCXRW_CNCY_XCHG_RAT_FCT
and loads into the table DW_CCY_EXCH after performing business transforamtions and change
comparisions.

5.11 LOAD DATA TO DW_OS_SKU_STR_W:

Gap Quantisense Calendar TD

Page 23 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

The interface will extracts Over stock Outs data from TSTIW_SLS_TXN_LN_ITM_FCT for Sales
data & FROM Q_QF_INV_SKU_STR_W_EOP_V for Inventory data and loads into the table
DW_OS_SKU_STR_W after performing business transforamtions and change comparisons.

Gap Quantisense Calendar TD

Page 24 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

5.12 LOAD DATA TO DW_SO_SKU_STR_W:


The interface will extracts Imminent Stock Outs data from TSTIW_SLS_TXN_LN_ITM_FCT for
Sales data & FROM Q_QF_INV_SKU_STR_W_EOP_V for Inventory data and loads into the table
DW_OS_SKU_STR_W after performing business transforamtions and change.

Gap Quantisense Calendar TD

Page 25 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Calendar
The data is loaded from the base table to staging table after performing appropriate lookups with the
associated tables and staging table data will be identified for insert or update to load into base target table.

Gap Quantisense Calendar TD

Page 26 of 161

Interface Technical Design


Gap Quantisense Calendar TD

Gap Quantisense Calendar TD

ETL Implementation Details

Page 27 of 161

Interface Technical Design


Gap Quantisense Calendar TD

Gap Quantisense Calendar TD

ETL Implementation Details

Page 28 of 161

Interface Technical Design


Gap Quantisense Calendar TD

Gap Quantisense Calendar TD

ETL Implementation Details

Page 29 of 161

Interface Technical Design


Gap Quantisense Calendar TD

Gap Quantisense Calendar TD

ETL Implementation Details

Page 30 of 161

Interface Technical Design


Gap Quantisense Calendar TD

Gap Quantisense Calendar TD

ETL Implementation Details

Page 31 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Time Transformations
The Time Transformation tables are loaded after the Calendar tables have been loaded. Each
transformation is loaded using a separate ETL.

Gap Quantisense Calendar TD

Page 32 of 161

Interface Technical Design


Gap Quantisense Calendar TD

Gap Quantisense Calendar TD

ETL Implementation Details

Page 33 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

6 INTERFACE DATA FLOW


INSTRUCTIONS

This section depicts the data flow of the entire interface. Label each source, lookup,
and target.

6.1
DETAILED DESCRIPTION
INSTRUCTIONS

Describe the interface data flow depicted above in detail.

6.2

PROCESS P1 POPULATE YEAR DATA


Source: TFCYD_FIS_CAL_YR_DIM
Target: DW_CAL_Y
P1.1 Load the data from table TFCYD_FIS_CAL_YR_DIM for current and prior 3 fiscal years into the
DDT_CAL_Y table.
P1.2 Compare the data in the DDT_CAL_Y table to that in DW_CAL_Y. Any new records or changes to
existing records are loaded into an intermediate table E_CAL_Y_CHG.
P1.3 Insert the new records from E_CAL_Y_CHG into the DW_CAL_Y.
P1.4 Update the DW_CAL_Y table with the changes recorded in the E_CAL_Y_CHG table.
P1.5 Update the DW_CAL_S table with the changes recorded in the E_CAL_Y_CHG table.
P1.6 Update the DW_CAL_Q table with the changes recorded in the E_CAL_Y_CHG table.
P1.7 Update the DW_CAL_M table with the changes recorded in the E_CAL_Y_CHG table.
P1.8 Update the DW_CAL_W table with the changes recorded in the E_CAL_Y_CHG table.
P1.9 Update the DW_CAL_DT table with the changes recorded in the E_CAL_Y_CHG table.

6.3

PROCESS P2 POPULATE THE SEASON DATA


Source: TFCHD_FIS_CAL_HALF_YR_DIM
Target: DW_CAL_S

Gap Quantisense Calendar TD

Page 34 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

P2.1 Load the data from table TFCHD_FIS_CAL_HALF_YR_DIM for current and prior 3 fiscal years & 1st
Season onwards into the DDT_CAL_S table.
P2.2 Compare the data in the DDT_CAL_S table to that in DW_CAL_S. Any new records or changes to
existing records are loaded into an intermediate table E_CAL_S_CHG.
P2.3 Insert the new records from E_CAL_S_CHG into the DW_CAL_Y.
P2.4 Update the DW_CAL_S table with the changes recorded in the E_CAL_S_CHG table.
P2.5 Update the DW_CAL_Q table with the changes recorded in the E_CAL_S_CHG table.
P2.6 Update the DW_CAL_M table with the changes recorded in the E_CAL_S_CHG table.
P2.7 Update the DW_CAL_W table with the changes recorded in the E_CAL_S_CHG table.
P2.8 Update the DW_CAL_DT table with the changes recorded in the E_CAL_S_CHG table.

6.4

PROCESS P3 POPULATE THE QUARTER DATA


Source: TFCQD_FIS_CAL_QTR_DIM
Target: DW_CAL_Q
P3.1 Load the data from table TFCQD_FIS_CAL_QTR_DIM for current and prior 3 fiscal years & 1st
Quarter onwards into the DDT_CAL_Q table.
P3.2 Compare the data in the DDT_CAL_Q table to that in DW_CAL_Q. Any new records or changes to
existing records are loaded into an intermediate table E_CAL_Q_CHG.
P3.3 Insert the new records from E_CAL_Q_CHG into the DW_CAL_Q.
P3.4 Update the DW_CAL_Q table with the changes recorded in the E_CAL_Q_CHG table.
P3.5 Update the DW_CAL_M table with the changes recorded in the E_CAL_Q_CHG table.
P3.6 Update the DW_CAL_W table with the changes recorded in the E_CAL_Q_CHG table.
P3.7 Update the DW_CAL_DT table with the changes recorded in the E_CAL_Q_CHG table.

6.5

PROCESS P4 POPULATE THE MONTH DATA


Source: TFCMD_FIS_CAL_MO_DIM
Target: DW_CAL_M
P4.1 Load the data from table TFCMD_FIS_CAL_MO_DIM for current and prior 3 fiscal years & 1st Month
onwards into the DDT_CAL_M table.
P4.2 Compare the data in the DDT_CAL_M table to that in DW_CAL_M. Any new records or changes to
existing records are loaded into an intermediate table E_CAL_M_CHG.
P4.3 Insert the new records from E_CAL_M_CHG into the DW_CAL_M.
P4.4 Update the DW_CAL_M table with the changes recorded in the E_CAL_M_CHG table.
P4.5 Update the DW_CAL_W table with the changes recorded in the E_CAL_M_CHG table.
P4.6 Update the DW_CAL_DT table with the changes recorded in the E_CAL_M_CHG table.

6.6

PROCESS P5 POPULATE THE WEEK DATA


Source: TFCWD_FIS_CAL_WK_DIM
Target: DW_CAL_W

Gap Quantisense Calendar TD

Page 35 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

P5.1 Load the data from table TFCWD_FIS_CAL_WK_DIM for current and prior 3 fiscal into the
DDT_CAL_W table.
P5.2 Compare the data in the DDT_CAL_W table to that in DW_CAL_W. Any new records or changes to
existing records are loaded into an intermediate table E_CAL_W_CHG.
P5.3 Insert the new records from E_CAL_W_CHG into the DW_CAL_W.
P5.4 Update the DW_CAL_W table with the changes recorded in the E_CAL_W_CHG table.
P5.5 Update the DW_CAL_DT table with the changes recorded in the E_CAL_W_CHG table

6.7

PROCESS P6 POPULATE THE DATE DATA


Source: TFCDD_FIS_CAL_DT_DIM
Target: DW_CAL_DT
P6.1 Load the data from table TFCDD_FIS_CAL_DT_DIM for current and prior 3 fiscal into the
DDT_CAL_DT table.
P6.2 Compare the data in the DDT_CAL_DT table to that in DW_CAL_DT. Any new records or changes to
existing records are loaded into an intermediate table E_CAL_DT_CHG.
P6.3 Insert the new records from E_CAL_DT_CHG into the DW_CAL_DT.
P6.4 Update the DW_CAL_DT table with the changes recorded in the E_CAL_DT_CHG table.

6.8

PROCESS P7 POPULATE THE TIME TRANFORMATION DATA


Source: DW_CAL_W
Target: DW_CAL_W_L4W, DW_CAL_W_L8W, DW_CAL_W_N4W and DW_CAL_W_LY_N4W.

P7.1 Truncate table DW_CAL_W_L4W.


P7.2 Load the week and the corresponding last 4 weeks in the DW_CAL_W_L4W from DW_CAT_W.
P7.3 Truncate table DW_CAL_W_L8W.
P7.4 Load the week and the corresponding last 8 weeks in the DW_CAL_W_L8W from DW_CAL_W.
P7.5 Truncate table DW_CAL_W_N4W.
P7.6 Load the week and the corresponding next 4 weeks in the DW_CAL_W_N4W from DW_CAT_W.
P7.5 Truncate table DW_CAL_W_LY_N4W.
P7.6 Load the week and the corresponding next 4 weeks as of last year in the DW_CAL_W_LY_N4W from
DW_CAT_W.

6.9

PROCESS P8 POPULATE COMP STORES DATA


Source: TSFCW_STR_FIN_CMPSLS_FCT
Target: DW_LOC_CMP_STR_D

Gap Quantisense Calendar TD

Page 36 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

P8.1 Load the comp stores details to DDT_LOC_CMP_STR_D.


P8.2 Compare the data in the DDT_LOC_CMP_STR_D table with Q_QL_LOC_STR_V. Any new records or
changes to existing records are loaded into an intermediate table E_LOC_CMP_STR_D_CHG.
P8.3 Insert the new records from E_LOC_CMP_STR_D_CHG into the DW_LOC_CMP_STR_D.
P8.4 Update the DW_LOC_CMP_STR_D table with the changes recorded in E_LOC_CMP_STR_D_CHG
table.

6.10

PROCESS P8 POPULATE THE CURRENCY EXCHANGE RATE DATA

Source: TCXRW_CNCY_XCHG_RAT_FCT, VCNCL_CNCY_LOOKUP, DW_CAL_DT


Target: DW_CCY_EXCH
P9.1 Load the native and target currency to the staging DDT_CCY_EXCH.
P9.2 Create the view Q_QL_CCY_EXCH_V with staging table DDT_CCY_EXCH data.
P9.3 Load the newly inserted/updated data to the table E_CCY_EXCH_CHG.
P9.4 Load the new records from E_CCY_EXCH_CHG table to DW_CCY_EXCH.
P9.5 Update the changed records from E_CCY_EXCH_CHG table to DW_CCY_EXCH.

6.11

PROCESS P10 POPULATE IMMINENT STOCK OUTS AND STOCK OUTS DATA
Source: U_SO_PAR_CLS, U_SO_PAR_DFLT, Q_PA_SLS_SKU_STR_L13W_V,
Q_QF_INV_SKU_STR_W_EOP_V
Target: DW_OS_SKU_STR_W
P10.1 Load the Imminent Stock out and Stock out parameters in DW_SO_PAR_CLS.
P10.2 Load the Sales for the trailing 13 weeks in the intermediate table E_SO_ISO_SKU_STR_W.
P10.3 Load the Inventory for the current week in E_SO_ISO_SKU_STR_W.
P10.4 Load the Imminent Stock outs in the table DW_ISO_SKU_STR_W.
P10.5 Load the Stock outs in the table DW_ISO_SKU_STR_W.

6.12

PROCESS P11 POPULATE OVER STOCK OUTS

Source: U_OS_PAR_CLS, U_OS_PAR_DFLT, Q_PA_SLS_SKU_STR_L13W_V,


Q_QF_INV_SKU_STR_W_EOP_V
Target: DW_OS_SKU_STR_W

Gap Quantisense Calendar TD

Page 37 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

P11.1 Load the Overstock parameters in DW_OS_PAR_CLS.


P11.2 Load the Sales for the trailing 13 weeks in the intermediate table E_OS_SKU_STR_W.
P11.3 Load the Inventory for the current week in E_OS_SKU_STR_W.
P11.4 Load the O in the table DW_OS_SKU_STR_W
.

Gap Quantisense Calendar TD

Page 38 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

7 MESSAGE BROKER IMPLEMENTATION DETAILS


INSTRUCTIONS

Document the implementation details for message broker interface. This section
should be completed only if message broker is the proposed integration tool.
None

Gap Quantisense Calendar TD

Page 39 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

8 ETL IMPLEMENTATION DETAILS


INSTRUCTIONS

Document the implementation details ETL interface. This section should be completed
only if ETL is the proposed integration tool.

8.1

OVERVIEW
INSTRUCTIONS

Note the canvas on which the interface will be primarily developed on Parallel, Server
or Shared Container.

Interface Class

Parallel Canvas

INSTRUCTIONS

List the components required to build the ETL process below. Each component should
have a unique reference that refers to the Component details later in the document

Gap Quantisense Calendar TD

Page 40 of 161

Interface Technical Design


Gap Quantisense Calendar TD
Component

ETL Implementation Details

Type

C1

PDWQ01DU.ksh

Shell Script

C2

PDWQ01DU_CAL_Y_ETL.btq

BTEQ Script

C3

PDWQ02DU.ksh

Shell Script

C4

PDWQ02DU_CAL_S_ETL.btd

BTEQ Script

C5

PDWQ03DU.ksh

Shell Script

C6

PDWQ03DU_CAL_Q_ETL.btq

BTEQ Script

C7

PDWQ04DU.ksh

Shell Script

C8

PDWQ04DU_CAL_M_ETL.btq

BTEQ Script

C9

PDWQ05DU.ksh

Shell Script

C10

PDWQ05DU_CAL_W_ETL.btq

BTEQ Script

C11

PDWQ06DU.ksh

Shell Script

C12

PDWQ06DU_CAL_DT_ETL.btq

BTEQ Script

C13

PDWQ07DU.ksh

Shell Script

C14

PDWQ07DU_CALC_4W8W_ETL.btq

BTEQ Script

C15

PDWQ08DU.ksh

Shell Script

C16

PDWQ08DU_LOC_CMP_STR_D_ET
L.btq

BTEQ Script

C17

PDWQ09DU.ksh

Shell Script

C18

PDWQ09DU_CCY_EXCH_ETL.btq

BTEQ Script

C19

PDWQ10DU.ksh

Shell Script

C20

PDWQ10DU_RLI_OS_ETL.btq

BTEQ Script

C21

PDWQ11DU.ksh

Shell Script

C22

PDWQ11DU_RLI_SO_ISO_ETL.btq

BTEQ Script

Gap Quantisense Calendar TD

Description
This Wrapper Script Invokes the
C2
This script loads the base table
DW_CAL_Y
This Wrapper Script Invokes the
C4
This script loads the base table
DW_CAL_S
This Wrapper Script Invokes the
C6
This Script loads base table
DW_CAL_Q
This Wrapper Script Invokes the
C8
This Script loads base table
DW_CAL_M
This Wrapper Script Invokes the
C10
This script loads the base table
DW_CAL_W
This Wrapper Script Invokes the
C12
This script loads the base table
DW_CAL_DT
This Wrapper Script Invokes the
C14
This script loads the base tables
DW_CAL_W_L4W,
DW_CAL_W_L8W,
DW_CAL_W_N4W,
DW_CAL_W_LY_N4W
This Wrapper Script Invokes the
C2
This script loads the base table
DW_LOC_CMP_STR_D
This Wrapper Script Invokes the
C4
This script loads the base table
DW_CCY_EXCH
This Wrapper Script Invokes the
C2
This script loads the base table
DW_OS_SKU_STR_W
This Wrapper Script Invokes the
C4
This script loads the base table
DW_SO_SKU_STR_W

Page 41 of 161

New/
Existing
New
New
New
New
New
New
New
New
New
New
New
New
New

New

New
New
New
New
New
New
New
New

Interface Technical Design


Gap Quantisense Calendar TD

8.2

ETL Implementation Details

DATA DEFINITIONS
Input message Structure:
NA
Intermediate Files
NA
Table definitions

Link To Sharepoint Data Model

8.3

SHELL SCRIPT DETAILS


Detailed information about the common script RunDSSequencer.sh can be found in
S
No.

Shell Script

PDWQ01DU.ks
h
PDWQ02DU.ks
2.
h
PDWQ03DU.ks
3.
h
4. PDWQ04DU.ks
T h
PDWQ05DU.ks
5.
h
PDWQ06DU.ks
6.
h
PDWQ07DU.ks
7.
h
PDWQ08DU.ks
8.
h
PDWQ09DU.ks
9.
h
PDWQ10DU.ks
10.
h
PDWQ11DU.ks
11.
h
1.

Script Location
/home/apps/td/dwq/source
/home/apps/td/dwq/source
/home/apps/td/dwq/source
/home/apps/td/dwq/source
/home/apps/td/dwq/source
/home/apps/td/dwq/source
/home/apps/td/dwq/source
/home/apps/td/dwq/source
/home/apps/td/dwq/source
/home/apps/td/dwq/source
/home/apps/td/dwq/source

Script Usage
To invoke BTEQ Script
PDWQ01DU_CAL_Y_ETL.btq
To invoke BTEQ Script
PDWQ01DU_CAL_S_ETL.btq
To invoke BTEQ Script
PDWQ03DU_CAL_Q_ETL.btq
To invoke BTEQ Script
PDWQ04DU_CAL_M_ETL.btq
To invoke BTEQ Script
PDWQ05DU_CAL_W_ETL.btq
To invoke BTEQ Script
PDWQ06DU_CAL_DT_ETL.btq
To invoke BTEQ Script
PDWQ07DU_CALC_4W8W_ETL.btq
To invoke BTEQ Script
PDWQ08DU_LOC_CMP_STR_D_ETL.btq
To invoke BTEQ Script
PDWQ09DU_CCY_EXCH_ETL.btq
To invoke BTEQ Script
PDWQ10DU_RLI_OS_ETL.btq
To invoke BTEQ Script
PDWQ11DU_RLI_SO_ISO_ETL.btq

8.3.1

8.4

COMPONENT: PDWQ01DU_CAL_Y_ETL.BTQ

8.4.1.1 7.4.1 Description of stages

Gap Quantisense Calendar TD

Page 42 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Source Table

TFCYD_FIS_CAL_YR_DIM

Target Table

DW_CAL_Y

Business Function

Extracts Year data from source table


TFCYD_FIS_CAL_YR_DIM and Detects changes and
adds/updates to the table DW_CAL_Y, and child
tables.

BTEQ Steps

Load the records from the table into a staging


table.

Any new records or changes to existing


records are loaded into an intermediate table
E_CAL_Y_CHG.

Insert/update the records from


E_CAL_Y_CHG into the DW_CAL_Y.

Update the child table DW_CAL_S with the


changes records from E_CAL_Y_CHG table.

Update the child table DW_CAL_Q with the


changes records from E_CAL_Y_CHG table.

Update the child table DW_CAL_M with the


changes records from E_CAL_Y_CHG table.

Update the child table DW_CAL_M with the


changes records from E_CAL_Y_CHG table.

Update the child table DW_CAL_W with the


changes records from E_CAL_Y_CHG table.

Update the child table DW_CAL_DT with the


changes records from E_CAL_Y_CHG table.

DELETE FROM $BASEQUANDB.DDT_CAL_Y ALL;


INSERT INTO $BASEQUANDB.DDT_CAL_Y
(
Q_YR_ID
,
Q_YR_DNUM
,
Q_YR_DESC
,
Q_YR_SDESC
,
Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
,
Q_YR_LY
,
Q_YR_2YA
,
LOAD_DATE
)
SELECT
FIS_YR_NBR
AS Q_YR_ID
, FIS_YR_NBR
AS Q_YR_DNUM
, FIS_YR_DESC
AS Q_YR_DESC
, FIS_YR_DESC
AS Q_YR_SDESC
Gap Quantisense Calendar TD

Page 43 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, PERD_START_DT
AS Q_FRST_DT_IN_YR
, PERD_END_DT
AS Q_LAST_DT_IN_YR
, FIS_YR_NBR - 1 AS Q_YR_LY
, FIS_YR_NBR - 2 AS Q_YR_2YA
, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCED_FIS_CAL_YR_DIM
WHERE FIS_CAL_ID = 1
AND FIS_CAL_RLN_TYP_CD = 5
AND TM_ZN_GRP_CD = 1
AND FIS_YR_NBR >= (SELECT FIS_YR_NBR -3 FROM
$BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM WHERE FIS_CAL_DT=CURRENT_DATE
AND TM_ZN_GRP_CD = 1 GROUP BY 1)
;
/*

Detect Changes

*/

DELETE FROM $BASEQUANDB.E_CAL_Y_CHG ALL;


INSERT INTO $BASEQUANDB.E_CAL_Y_CHG
(
Q_YR_ID
,
Q_YR_DNUM
,
Q_YR_DESC
,
Q_YR_SDESC
,
Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
,
Q_YR_LY
,
Q_YR_2YA
,
LOAD_DATE
,
CHG_FLG
)
SELECT
S.Q_YR_ID
,
S.Q_YR_DNUM
,
S.Q_YR_DESC
,
S.Q_YR_SDESC
,
S.Q_FRST_DT_IN_YR
,
S.Q_LAST_DT_IN_YR
,
S.Q_YR_LY
,
S.Q_YR_2YA
,
S.LOAD_DATE
,
CASE WHEN T.Q_YR_ID IS NULL THEN 'I' ELSE 'X' END
FROM
$BASEQUANDB.DDT_CAL_Y S
LEFT OUTER JOIN
$BASEQUANDB.DW_CAL_Y T
ON
T.Q_YR_ID
= S.Q_YR_ID
WHERE
T.Q_YR_DNUM
<> S.Q_YR_DNUM
OR
T.Q_YR_DESC
<> S.Q_YR_DESC
OR
T.Q_YR_SDESC
<> S.Q_YR_SDESC
OR
T.Q_FRST_DT_IN_YR
<> S.Q_FRST_DT_IN_YR
OR
T.Q_LAST_DT_IN_YR
<> S.Q_LAST_DT_IN_YR
OR
T.Q_YR_LY
<> S.Q_YR_LY
OR
T.Q_YR_2YA
<> S.Q_YR_2YA

Gap Quantisense Calendar TD

Page 44 of 161

Interface Technical Design


Gap Quantisense Calendar TD
OR
;

T.Q_YR_ID IS NULL

/*

Insert Changes

ETL Implementation Details

*/

INSERT INTO $BASEQUANDB.DW_CAL_Y


(
Q_YR_ID
,
Q_YR_DNUM
,
Q_YR_DESC
,
Q_YR_SDESC
,
Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
,
Q_YR_LY
,
Q_YR_2YA
,
LOAD_DATE
)
SELECT
S.Q_YR_ID
,
S.Q_YR_DNUM
,
S.Q_YR_DESC
,
S.Q_YR_SDESC
,
S.Q_FRST_DT_IN_YR
,
S.Q_LAST_DT_IN_YR
,
S.Q_YR_LY
,
S.Q_YR_2YA
,
S.LOAD_DATE
FROM
$BASEQUANDB.E_CAL_Y_CHG S
WHERE
S.CHG_FLG = 'I'
;
/*

Update Changes

*/

UPDATE $BASEQUANDB.DW_CAL_Y T
SET
Q_YR_DNUM
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_DNUM
,
Q_YR_DESC
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_DESC
,
Q_YR_SDESC
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_SDESC
,
Q_FRST_DT_IN_YR
= $BASEQUANDB.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
= $BASEQUANDB.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND $BASEQUANDB.E_CAL_Y_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_S T
SET
Q_FRST_DT_IN_YR

Gap Quantisense Calendar TD

*/

$BASEQUANDB.E_CAL_Y_CHG.Q_FRST_DT_IN_YR

Page 45 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
Q_LAST_DT_IN_YR
= $BASEQUANDB.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND $BASEQUANDB.E_CAL_Y_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE $BASEQUANDB.DW_CAL_Q T
SET
Q_FRST_DT_IN_YR
= $BASEQUANDB.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
= $BASEQUANDB.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND $BASEQUANDB.E_CAL_Y_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE $BASEQUANDB.DW_CAL_M T
SET
Q_FRST_DT_IN_YR
= $BASEQUANDB.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
= $BASEQUANDB.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND $BASEQUANDB.E_CAL_Y_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE $BASEQUANDB.DW_CAL_W T
SET
Q_FRST_DT_IN_YR
= $BASEQUANDB.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
= $BASEQUANDB.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND $BASEQUANDB.E_CAL_Y_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_FRST_DT_IN_YR

Gap Quantisense Calendar TD

*/

$BASEQUANDB.E_CAL_Y_CHG.Q_FRST_DT_IN_YR

Page 46 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
Q_LAST_DT_IN_YR
= $BASEQUANDB.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.E_CAL_Y_CHG.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND $BASEQUANDB.E_CAL_Y_CHG.CHG_FLG = 'X'
;
DELETE FROM DBQS_DEV.DDT_CAL_Y ALL;
INSERT INTO DBQS_DEV.DDT_CAL_Y
(
Q_YR_ID
, Q_YR_DNUM
, Q_YR_DESC
, Q_YR_SDESC
, Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
, Q_YR_LY
, Q_YR_2YA
, LOAD_DATE
)
SELECT
FIS_YR_NBR
AS Q_YR_ID
, FIS_YR_NBR
AS Q_YR_DNUM
, FIS_YR_DESC
AS Q_YR_DESC
, FIS_YR_DESC
AS Q_YR_SDESC
, PERD_START_DT AS Q_FRST_DT_IN_YR
, PERD_END_DT
AS Q_LAST_DT_IN_YR
, FIS_YR_NBR - 1 AS Q_YR_LY
, FIS_YR_NBR - 2 AS Q_YR_2YA
, CURRENT_DATE AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCYD_FIS_CAL_YR_DIM
WHERE FIS_CAL_ID = 1
AND FIS_CAL_RLN_TYP_CD = 5
AND TM_ZN_GRP_CD = 1
AND FIS_YR_NBR >= (SELECT FIS_YR_NBR FROM $BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM WHERE
FIS_YR_NBR=EXTRACT (YEAR FROM CURRENT_DATE)-3 Group By 1)
;
/*

Detect Changes

*/

DELETE FROM DBQS_DEV.E_CAL_Y_CHG ALL;


INSERT INTO DBQS_DEV.E_CAL_Y_CHG
(
Q_YR_ID
, Q_YR_DNUM
, Q_YR_DESC
, Q_YR_SDESC
, Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
, Q_YR_LY
, Q_YR_2YA
, LOAD_DATE
, CHG_FLG
)
SELECT

Gap Quantisense Calendar TD

Page 47 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

S.Q_YR_ID
, S.Q_YR_DNUM
, S.Q_YR_DESC
, S.Q_YR_SDESC
, S.Q_FRST_DT_IN_YR
, S.Q_LAST_DT_IN_YR
, S.Q_YR_LY
, S.Q_YR_2YA
, S.LOAD_DATE
, CASE WHEN T.Q_YR_ID IS NULL THEN 'I' ELSE 'X' END
FROM
DBQS_DEV.DDT_CAL_Y S
LEFT OUTER JOIN
DBQS_DEV.DW_CAL_Y T
ON T.Q_YR_ID
= S.Q_YR_ID
WHERE
T.Q_YR_DNUM
<> S.Q_YR_DNUM
OR T.Q_YR_DESC
<> S.Q_YR_DESC
OR T.Q_YR_SDESC
<> S.Q_YR_SDESC
OR T.Q_FRST_DT_IN_YR
<> S.Q_FRST_DT_IN_YR
OR T.Q_LAST_DT_IN_YR
<> S.Q_LAST_DT_IN_YR
OR T.Q_YR_LY
<> S.Q_YR_LY
OR T.Q_YR_2YA
<> S.Q_YR_2YA
OR T.Q_YR_ID IS NULL
;
/*

Insert Changes

*/

INSERT INTO DBQS_DEV.DW_CAL_Y


(
Q_YR_ID
, Q_YR_DNUM
, Q_YR_DESC
, Q_YR_SDESC
, Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
, Q_YR_LY
, Q_YR_2YA
, LOAD_DATE
)
SELECT
S.Q_YR_ID
, S.Q_YR_DNUM
, S.Q_YR_DESC
, S.Q_YR_SDESC
, S.Q_FRST_DT_IN_YR
, S.Q_LAST_DT_IN_YR
, S.Q_YR_LY
, S.Q_YR_2YA
, S.LOAD_DATE
FROM
DBQS_DEV.E_CAL_Y_CHG S
WHERE
S.CHG_FLG = 'I'
;
/*

Update Changes

*/

UPDATE DBQS_DEV.DW_CAL_Y T

Gap Quantisense Calendar TD

Page 48 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

SET
Q_YR_DNUM
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_DNUM
, Q_YR_DESC
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_DESC
, Q_YR_SDESC
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_SDESC
, Q_FRST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
, Q_YR_LY
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_LY
, Q_YR_2YA
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND DBQS_DEV.E_CAL_Y_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE DBQS_DEV.DW_CAL_S T
SET
Q_FRST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
, Q_YR_LY
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_LY
, Q_YR_2YA
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND DBQS_DEV.E_CAL_Y_CHG.CHG_FLG = 'X'
;

/*

Update Changes in Child

*/

UPDATE DBQS_DEV.DW_CAL_Q T
SET
Q_FRST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
, Q_YR_LY
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_LY
, Q_YR_2YA
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND DBQS_DEV.E_CAL_Y_CHG.CHG_FLG = 'X'
;

/*

Update Changes in Child

*/

UPDATE DBQS_DEV.DW_CAL_M T
SET
Q_FRST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
, Q_YR_LY
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_LY
, Q_YR_2YA
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND DBQS_DEV.E_CAL_Y_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE DBQS_DEV.DW_CAL_W T

Gap Quantisense Calendar TD

Page 49 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

SET
Q_FRST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
, Q_YR_LY
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_LY
, Q_YR_2YA
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND DBQS_DEV.E_CAL_Y_CHG.CHG_FLG = 'X'
;

/*

Update Changes in Child

*/

UPDATE DBQS_DEV.DW_CAL_DT T
SET
Q_FRST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.E_CAL_Y_CHG.Q_LAST_DT_IN_YR
, Q_YR_LY
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_LY
, Q_YR_2YA
= DBQS_DEV.E_CAL_Y_CHG.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_Y_CHG.Q_YR_ID
= T.Q_YR_ID
AND DBQS_DEV.E_CAL_Y_CHG.CHG_FLG = 'X'
;

8.4.1.2 7.4.2 Processing Specifics

8.5
8.5.1.1

Processing
Steps Covered

Process P1 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements: The source table table


TFCYD_FIS_CAL_YR_DIM should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

COMPONENT: PDWQ02DU_CAL_S_ETL.BTQ
DESCRIPTION OF STAGES

7.5.1 DESCRIPTION OF STAGES


Source Table

Gap Quantisense Calendar TD

TFCHD_FIS_CAL_HALF_YR_DIM

Page 50 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Target Table

DW_CAL_S

Business Function

Extracts Season data from source table


TFCHD_FIS_CAL_HALF_YR_DIM and Detects
changes and adds/updates to the table DW_CAL_S,
and child tables.

BTEQ Steps

/*
*/

Load the records from the table into a staging


table.

Any new records or changes to existing


records are loaded into an intermediate table
E_CAL_S_CHG.

Insert/update the records from


E_CAL_S_CHG into the DW_CAL_S.

Update the child table DW_CAL_Q with the


changes records from E_CAL_S_CHG table.

Update the child table DW_CAL_M with the


changes records from E_CAL_S_CHG table.

Update the child table DW_CAL_M with the


changes records from E_CAL_S_CHG table.

Update the child table DW_CAL_W with the


changes records from E_CAL_S_CHG table.

Update the child table DW_CAL_DT with the


changes records from E_CAL_S_CHG table.

Insert Into Staging Table

DELETE FROM $BASEQUANDB.DDT_CAL_S ALL;


INSERT INTO $BASEQUANDB.DDT_CAL_S
(
Q_SEA_ID
,
Q_SEA_DNUM
,
Q_SEA_DESC
,
Q_SEA_SDESC
,
Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
,
Q_SEA_LY
,
Q_SEA_2YA
,
Q_YR_ID
,
LOAD_DATE
)
SELECT
(FIS_YR_NBR * 10) + FIS_HALF_YR_NBR
AS Q_SEA_ID
, (FIS_YR_NBR * 10) + FIS_HALF_YR_NBR
AS Q_SEA_DNUM
, FIS_HALF_YR_FULL_DESC
AS Q_SEA_DESC
, FIS_HALF_YR_DESC
AS Q_SEA_SDESC
, PERD_START_DT
AS Q_FRST_DT_IN_SEA
, PERD_END_DT
AS Q_LAST_DT_IN_SEA

Gap Quantisense Calendar TD

Page 51 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, ((FIS_YR_NBR - 1) * 10) + FIS_HALF_YR_NBR AS Q_SEA_LY


, ((FIS_YR_NBR - 2) * 10) + FIS_HALF_YR_NBR AS Q_SEA_2YA
, FIS_YR_NBR
AS Q_YR_ID
, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCHD_FIS_CAL_HALF_YR_DIM
WHERE FIS_CAL_ID = 1
AND FIS_CAL_RLN_TYP_CD = 5
AND TM_ZN_GRP_CD = 1
AND (FIS_YR_NBR * 10) + FIS_HALF_YR_NBR >=(SELECT (FIS_YR_NBR-3)*10+01
FROM $BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM
WHERE FIS_CAL_DT=CURRENT_DATE AND TM_ZN_GRP_CD = 1 Group By 1)
;
/*
*/

Detect Changes

DELETE FROM $BASEQUANDB.E_CAL_S_CHG ALL;


INSERT INTO $BASEQUANDB.E_CAL_S_CHG
(
Q_SEA_ID
,
Q_SEA_DNUM
,
Q_SEA_DESC
,
Q_SEA_SDESC
,
Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
,
Q_SEA_LY
,
Q_SEA_2YA
,
Q_YR_ID
,
LOAD_DATE
,
CHG_FLG
)
SELECT
S.Q_SEA_ID
,
S.Q_SEA_DNUM
,
S.Q_SEA_DESC
,
S.Q_SEA_SDESC
,
S.Q_FRST_DT_IN_SEA
,
S.Q_LAST_DT_IN_SEA
,
S.Q_SEA_LY
,
S.Q_SEA_2YA
,
S.Q_YR_ID
,
S.LOAD_DATE
,
CASE WHEN T.Q_SEA_ID IS NULL THEN
FROM
$BASEQUANDB.DDT_CAL_S S
LEFT OUTER JOIN
$BASEQUANDB.DW_CAL_S T
ON
T.Q_SEA_ID
WHERE
T.Q_SEA_DNUM
OR
T.Q_SEA_DESC
OR
T.Q_SEA_SDESC
OR
T.Q_FRST_DT_IN_SEA
OR
T.Q_LAST_DT_IN_SEA

Gap Quantisense Calendar TD

'I' ELSE 'X' END

= S.Q_SEA_ID
<>
<>
<>
<>
<>

S.Q_SEA_DNUM
S.Q_SEA_DESC
S.Q_SEA_SDESC
S.Q_FRST_DT_IN_SEA
S.Q_LAST_DT_IN_SEA

Page 52 of 161

Interface Technical Design


Gap Quantisense Calendar TD
OR
OR
OR
OR
;

T.Q_SEA_LY
T.Q_SEA_2YA
T.Q_YR_ID
T.Q_SEA_ID IS NULL

/*
*/

Insert Changes

ETL Implementation Details

<>
<>
<>

S.Q_SEA_LY
S.Q_SEA_2YA
S.Q_YR_ID

INSERT INTO $BASEQUANDB.DW_CAL_S


(
Q_SEA_ID
,
Q_SEA_DNUM
,
Q_SEA_DESC
,
Q_SEA_SDESC
,
Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
,
Q_SEA_LY
,
Q_SEA_2YA
,
Q_YR_ID
,
Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
,
Q_YR_LY
,
Q_YR_2YA
,
LOAD_DATE
)
SELECT
S.Q_SEA_ID
,
S.Q_SEA_DNUM
,
S.Q_SEA_DESC
,
S.Q_SEA_SDESC
,
S.Q_FRST_DT_IN_SEA
,
S.Q_LAST_DT_IN_SEA
,
S.Q_SEA_LY
,
S.Q_SEA_2YA
,
S.Q_YR_ID
,
P1.Q_FRST_DT_IN_YR
,
P1.Q_LAST_DT_IN_YR
,
P1.Q_YR_LY
,
P1.Q_YR_2YA
,
S.LOAD_DATE
FROM
$BASEQUANDB.E_CAL_S_CHG S
JOIN
$BASEQUANDB.DW_CAL_Y P1
ON
S.Q_YR_ID = P1.Q_YR_ID
WHERE
S.CHG_FLG = 'I'
;
/*
*/

Update Changes

UPDATE $BASEQUANDB.DW_CAL_S T

Gap Quantisense Calendar TD

Page 53 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

SET

Q_SEA_DNUM
=
$BASEQUANDB.E_CAL_S_CHG.Q_SEA_DNUM
,
Q_SEA_DESC
=
$BASEQUANDB.E_CAL_S_CHG.Q_SEA_DESC
,
Q_SEA_SDESC
=
$BASEQUANDB.E_CAL_S_CHG.Q_SEA_SDESC
,
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.E_CAL_S_CHG.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.E_CAL_S_CHG.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.E_CAL_S_CHG.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.E_CAL_S_CHG.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.E_CAL_S_CHG.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Y.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Y.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_Y.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_Y.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_S_CHG.Q_SEA_ID = T.Q_SEA_ID
AND $BASEQUANDB.E_CAL_S_CHG.Q_YR_ID = $BASEQUANDB.DW_CAL_Y.Q_YR_ID
AND $BASEQUANDB.E_CAL_S_CHG.CHG_FLG = 'X'
;
/*
*/

Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_Q T
SET
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.E_CAL_S_CHG.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.E_CAL_S_CHG.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.E_CAL_S_CHG.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.E_CAL_S_CHG.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.E_CAL_S_CHG.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Y.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Y.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_Y.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_Y.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_S_CHG.Q_SEA_ID = T.Q_SEA_ID
AND $BASEQUANDB.E_CAL_S_CHG.Q_YR_ID = $BASEQUANDB.DW_CAL_Y.Q_YR_ID
AND $BASEQUANDB.E_CAL_S_CHG.CHG_FLG = 'X'
;
/*
*/

Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_M T
SET

Gap Quantisense Calendar TD

Page 54 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Q_FRST_DT_IN_SEA
=
$BASEQUANDB.E_CAL_S_CHG.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.E_CAL_S_CHG.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.E_CAL_S_CHG.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.E_CAL_S_CHG.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.E_CAL_S_CHG.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Y.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Y.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_Y.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_Y.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_S_CHG.Q_SEA_ID = T.Q_SEA_ID
AND $BASEQUANDB.E_CAL_S_CHG.Q_YR_ID = $BASEQUANDB.DW_CAL_Y.Q_YR_ID
AND $BASEQUANDB.E_CAL_S_CHG.CHG_FLG = 'X'
;
/*
*/

Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_W T
SET
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.E_CAL_S_CHG.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.E_CAL_S_CHG.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.E_CAL_S_CHG.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.E_CAL_S_CHG.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.E_CAL_S_CHG.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Y.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Y.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_Y.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_Y.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_S_CHG.Q_SEA_ID = T.Q_SEA_ID
AND $BASEQUANDB.E_CAL_S_CHG.Q_YR_ID = $BASEQUANDB.DW_CAL_Y.Q_YR_ID
AND $BASEQUANDB.E_CAL_S_CHG.CHG_FLG = 'X'
;
/*
*/

Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.E_CAL_S_CHG.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.E_CAL_S_CHG.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.E_CAL_S_CHG.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.E_CAL_S_CHG.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.E_CAL_S_CHG.Q_YR_ID
,
Q_FRST_DT_IN_YR
=

Gap Quantisense Calendar TD

Page 55 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

$BASEQUANDB.DW_CAL_Y.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Y.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_Y.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_Y.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_S_CHG.Q_SEA_ID = T.Q_SEA_ID
AND $BASEQUANDB.E_CAL_S_CHG.Q_YR_ID = $BASEQUANDB.DW_CAL_Y.Q_YR_ID
AND $BASEQUANDB.E_CAL_S_CHG.CHG_FLG = 'X'
;

8.5.1.2

/*

PROCESSING SPECIFICATIONS

Insert Into Staging Table

*/

DELETE FROM DBQS_DEV.DDT_CAL_S ALL;


INSERT INTO DBQS_DEV.DDT_CAL_S
(
Q_SEA_ID
, Q_SEA_DNUM
, Q_SEA_DESC
, Q_SEA_SDESC
, Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
, Q_SEA_LY
, Q_SEA_2YA
, Q_YR_ID
, LOAD_DATE
)
SELECT
(FIS_YR_NBR * 10) + FIS_HALF_YR_NBR
AS Q_SEA_ID
, (FIS_YR_NBR * 10) + FIS_HALF_YR_NBR
AS Q_SEA_DNUM
, FIS_HALF_YR_FULL_DESC
AS Q_SEA_DESC
, FIS_HALF_YR_DESC
AS Q_SEA_SDESC
, PERD_START_DT
AS Q_FRST_DT_IN_SEA
, PERD_END_DT
AS Q_LAST_DT_IN_SEA
, ((FIS_YR_NBR - 1) * 10) + FIS_HALF_YR_NBR AS Q_SEA_LY
, ((FIS_YR_NBR - 2) * 10) + FIS_HALF_YR_NBR AS Q_SEA_2YA
, FIS_YR_NBR AS Q_YR_ID
, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCHD_FIS_CAL_HALF_YR_DIM
WHERE FIS_CAL_ID = 1
AND FIS_CAL_RLN_TYP_CD = 5
AND TM_ZN_GRP_CD = 1
AND (FIS_YR_NBR * 10) + FIS_HALF_YR_NBR >= (SELECT FIS_YR_NBR*100+FIS_HALF_NBR FROM
$BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM WHERE FIS_YR_NBR=EXTRACT ( YEAR FROM CURRENT_DATE)3 AND FIS_HALF_YR_NBR=1 group by 1)
;
/*

Detect Changes

*/

DELETE FROM DBQS_DEV.E_CAL_S_CHG ALL;


INSERT INTO DBQS_DEV.E_CAL_S_CHG

Gap Quantisense Calendar TD

Page 56 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

(
Q_SEA_ID
, Q_SEA_DNUM
, Q_SEA_DESC
, Q_SEA_SDESC
, Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
, Q_SEA_LY
, Q_SEA_2YA
, Q_YR_ID
, LOAD_DATE
, CHG_FLG
)
SELECT
S.Q_SEA_ID
, S.Q_SEA_DNUM
, S.Q_SEA_DESC
, S.Q_SEA_SDESC
, S.Q_FRST_DT_IN_SEA
, S.Q_LAST_DT_IN_SEA
, S.Q_SEA_LY
, S.Q_SEA_2YA
, S.Q_YR_ID
, S.LOAD_DATE
, CASE WHEN T.Q_SEA_ID IS NULL THEN 'I' ELSE 'X' END
FROM
DBQS_DEV.DDT_CAL_S S
LEFT OUTER JOIN
DBQS_DEV.DW_CAL_S T
ON T.Q_SEA_ID
= S.Q_SEA_ID
WHERE
T.Q_SEA_DNUM
<> S.Q_SEA_DNUM
OR T.Q_SEA_DESC
<> S.Q_SEA_DESC
OR T.Q_SEA_SDESC
<> S.Q_SEA_SDESC
OR T.Q_FRST_DT_IN_SEA
<> S.Q_FRST_DT_IN_SEA
OR T.Q_LAST_DT_IN_SEA
<> S.Q_LAST_DT_IN_SEA
OR T.Q_SEA_LY
<> S.Q_SEA_LY
OR T.Q_SEA_2YA
<> S.Q_SEA_2YA
OR T.Q_YR_ID
<> S.Q_YR_ID
OR T.Q_SEA_ID IS NULL
;

/*

Insert Changes

*/

INSERT INTO DBQS_DEV.DW_CAL_S


(
Q_SEA_ID
, Q_SEA_DNUM
, Q_SEA_DESC
, Q_SEA_SDESC
, Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
, Q_SEA_LY
, Q_SEA_2YA
, Q_YR_ID
, Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
, Q_YR_LY
, Q_YR_2YA

Gap Quantisense Calendar TD

Page 57 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, LOAD_DATE
)
SELECT
S.Q_SEA_ID
, S.Q_SEA_DNUM
, S.Q_SEA_DESC
, S.Q_SEA_SDESC
, S.Q_FRST_DT_IN_SEA
, S.Q_LAST_DT_IN_SEA
, S.Q_SEA_LY
, S.Q_SEA_2YA
, S.Q_YR_ID
, P1.Q_FRST_DT_IN_YR
, P1.Q_LAST_DT_IN_YR
, P1.Q_YR_LY
, P1.Q_YR_2YA
, S.LOAD_DATE
FROM
DBQS_DEV.E_CAL_S_CHG S
JOIN
DBQS_DEV.DW_CAL_Y P1
ON S.Q_YR_ID = P1.Q_YR_ID
WHERE
S.CHG_FLG = 'I'
;
/*

Update Changes

*/

UPDATE DBQS_DEV.DW_CAL_S T
SET
Q_SEA_DNUM
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_DNUM
, Q_SEA_DESC
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_DESC
, Q_SEA_SDESC
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_SDESC
, Q_FRST_DT_IN_SEA
= DBQS_DEV.E_CAL_S_CHG.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= DBQS_DEV.E_CAL_S_CHG.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_LY
, Q_SEA_2YA
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_2YA
, Q_YR_ID
= DBQS_DEV.E_CAL_S_CHG.Q_YR_ID
, Q_FRST_DT_IN_YR
= DBQS_DEV.DW_CAL_Y.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.DW_CAL_Y.Q_LAST_DT_IN_YR
, Q_YR_LY
= DBQS_DEV.DW_CAL_Y.Q_YR_LY
, Q_YR_2YA
= DBQS_DEV.DW_CAL_Y.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_S_CHG.Q_SEA_ID = T.Q_SEA_ID
AND DBQS_DEV.E_CAL_S_CHG.Q_YR_ID = DBQS_DEV.DW_CAL_Y.Q_YR_ID
AND DBQS_DEV.E_CAL_S_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE DBQS_DEV.DW_CAL_Q T
SET
Q_FRST_DT_IN_SEA
= DBQS_DEV.E_CAL_S_CHG.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= DBQS_DEV.E_CAL_S_CHG.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_LY
, Q_SEA_2YA
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_2YA
, Q_YR_ID
= DBQS_DEV.E_CAL_S_CHG.Q_YR_ID
, Q_FRST_DT_IN_YR
= DBQS_DEV.DW_CAL_Y.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.DW_CAL_Y.Q_LAST_DT_IN_YR

Gap Quantisense Calendar TD

Page 58 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, Q_YR_LY
= DBQS_DEV.DW_CAL_Y.Q_YR_LY
, Q_YR_2YA
= DBQS_DEV.DW_CAL_Y.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_S_CHG.Q_SEA_ID = T.Q_SEA_ID
AND DBQS_DEV.E_CAL_S_CHG.Q_YR_ID = DBQS_DEV.DW_CAL_Y.Q_YR_ID
AND DBQS_DEV.E_CAL_S_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE DBQS_DEV.DW_CAL_M T
SET
Q_FRST_DT_IN_SEA
= DBQS_DEV.E_CAL_S_CHG.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= DBQS_DEV.E_CAL_S_CHG.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_LY
, Q_SEA_2YA
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_2YA
, Q_YR_ID
= DBQS_DEV.E_CAL_S_CHG.Q_YR_ID
, Q_FRST_DT_IN_YR
= DBQS_DEV.DW_CAL_Y.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.DW_CAL_Y.Q_LAST_DT_IN_YR
, Q_YR_LY
= DBQS_DEV.DW_CAL_Y.Q_YR_LY
, Q_YR_2YA
= DBQS_DEV.DW_CAL_Y.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_S_CHG.Q_SEA_ID = T.Q_SEA_ID
AND DBQS_DEV.E_CAL_S_CHG.Q_YR_ID = DBQS_DEV.DW_CAL_Y.Q_YR_ID
AND DBQS_DEV.E_CAL_S_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE DBQS_DEV.DW_CAL_W T
SET
Q_FRST_DT_IN_SEA
= DBQS_DEV.E_CAL_S_CHG.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= DBQS_DEV.E_CAL_S_CHG.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_LY
, Q_SEA_2YA
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_2YA
, Q_YR_ID
= DBQS_DEV.E_CAL_S_CHG.Q_YR_ID
, Q_FRST_DT_IN_YR
= DBQS_DEV.DW_CAL_Y.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.DW_CAL_Y.Q_LAST_DT_IN_YR
, Q_YR_LY
= DBQS_DEV.DW_CAL_Y.Q_YR_LY
, Q_YR_2YA
= DBQS_DEV.DW_CAL_Y.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_S_CHG.Q_SEA_ID = T.Q_SEA_ID
AND DBQS_DEV.E_CAL_S_CHG.Q_YR_ID = DBQS_DEV.DW_CAL_Y.Q_YR_ID
AND DBQS_DEV.E_CAL_S_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE DBQS_DEV.DW_CAL_DT T
SET
Q_FRST_DT_IN_SEA
= DBQS_DEV.E_CAL_S_CHG.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= DBQS_DEV.E_CAL_S_CHG.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_LY
, Q_SEA_2YA
= DBQS_DEV.E_CAL_S_CHG.Q_SEA_2YA
, Q_YR_ID
= DBQS_DEV.E_CAL_S_CHG.Q_YR_ID
, Q_FRST_DT_IN_YR
= DBQS_DEV.DW_CAL_Y.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= DBQS_DEV.DW_CAL_Y.Q_LAST_DT_IN_YR
, Q_YR_LY
= DBQS_DEV.DW_CAL_Y.Q_YR_LY

Gap Quantisense Calendar TD

Page 59 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, Q_YR_2YA
= DBQS_DEV.DW_CAL_Y.Q_YR_2YA
WHERE
DBQS_DEV.E_CAL_S_CHG.Q_SEA_ID = T.Q_SEA_ID
AND DBQS_DEV.E_CAL_S_CHG.Q_YR_ID = DBQS_DEV.DW_CAL_Y.Q_YR_ID
AND DBQS_DEV.E_CAL_S_CHG.CHG_FLG = 'X'
;

7.5.2

8.6

PROCESSING SPECIFICS
Processing
Steps Covered

Process P2 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements: The source table


TFCHD_FIS_CAL_HALF_YR_DIM should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

COMPONENT: PDWQ03DU_CAL_Q_ETL.BTQ

8.6.1.1 7.6.1 Description of stages


Source Table

TFCQD_FIS_CAL_QTR_DIM

Target Table

DW_CAL_Q

Business Function

Extracts Season data from source table


TFCQD_FIS_CAL_QTR_DIM and Detects changes
and adds/updates to the table DW_CAL_Q, and child
tables.

BTEQ Steps

Gap Quantisense Calendar TD

Load the records from the table into a staging


table.

Any new records or changes to existing


records are loaded into an intermediate table
E_CAL_Q_CHG.

Insert/update the records from


E_CAL_Q_CHG into the DW_CAL_Q.

Update the child table DW_CAL_M with the


changes records from E_CAL_Q_CHG table.

Update the child table DW_CAL_M with the

Page 60 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

changes records from E_CAL_Q_CHG table.

Update the child table DW_CAL_W with the


changes records from E_CAL_Q_CHG table.

Update the child table DW_CAL_DT with the


changes records from E_CAL_Q_CHG table.

/*
Insert Into Staging Table
*/
DELETE FROM $BASEQUANDB.DDT_CAL_Q ALL;
INSERT INTO $BASEQUANDB.DDT_CAL_Q
(
Q_QTR_ID
,
Q_QTR_DNUM
,
Q_QTR_DESC
,
Q_QTR_SDESC
,
Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
,
Q_QTR_LY
,
Q_QTR_2YA
,
Q_SEA_ID
,
LOAD_DATE
)
SELECT
(FIS_YR_NBR * 100) + FIS_QTR_NBR AS Q_QTR_ID
, (FIS_YR_NBR * 100) + FIS_QTR_NBR AS Q_QTR_DNUM
, FIS_QTR_FULL_DESC AS Q_QTR_DESC
, FIS_QTR_DESC AS Q_QTR_SDESC
, PERD_START_DT AS Q_FRST_DT_IN_QTR
, PERD_END_DT AS Q_LAST_DT_IN_QTR
, ((FIS_YR_NBR - 1) * 10) + FIS_QTR_NBR AS Q_QTR_LY
, ((FIS_YR_NBR - 2) * 10) + FIS_QTR_NBR AS Q_QTR_2YA
, CASE
WHEN FIS_QTR_NBR IN (1, 2)
THEN (FIS_YR_NBR * 10) + 1
ELSE (FIS_YR_NBR * 10) + 2
END
AS Q_SEA_ID
, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCQD_FIS_CAL_QTR_DIM
WHERE FIS_CAL_ID = 1
AND FIS_CAL_RLN_TYP_CD = 5
AND TM_ZN_GRP_CD = 1
AND (FIS_YR_NBR * 100) + FIS_QTR_NBR >=(SELECT (FIS_YR_NBR-3)*100+01
FROM $BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM
WHERE FIS_CAL_DT=CURRENT_DATE AND TM_ZN_GRP_CD = 1 Group By 1)
;
/*
*/

Detect Changes

DELETE FROM $BASEQUANDB.E_CAL_Q_CHG ALL;

Gap Quantisense Calendar TD

Page 61 of 161

Interface Technical Design


Gap Quantisense Calendar TD
INSERT INTO $BASEQUANDB.E_CAL_Q_CHG
(
Q_QTR_ID
,
Q_QTR_DNUM
,
Q_QTR_DESC
,
Q_QTR_SDESC
,
Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
,
Q_QTR_LY
,
Q_QTR_2YA
,
Q_SEA_ID
,
LOAD_DATE
,
CHG_FLG
)
SELECT
S.Q_QTR_ID
,
S.Q_QTR_DNUM
,
S.Q_QTR_DESC
,
S.Q_QTR_SDESC
,
S.Q_FRST_DT_IN_QTR
,
S.Q_LAST_DT_IN_QTR
,
S.Q_QTR_LY
,
S.Q_QTR_2YA
,
S.Q_SEA_ID
,
S.LOAD_DATE
,
CASE WHEN T.Q_QTR_ID IS NULL THEN
FROM
$BASEQUANDB.DDT_CAL_Q S
LEFT OUTER JOIN
$BASEQUANDB.DW_CAL_Q T
ON
T.Q_QTR_ID
WHERE
T.Q_QTR_DNUM
OR
T.Q_QTR_DESC
OR
T.Q_QTR_SDESC
OR
T.Q_FRST_DT_IN_QTR
OR
T.Q_LAST_DT_IN_QTR
OR
T.Q_QTR_LY
OR
T.Q_QTR_2YA
OR
T.Q_SEA_ID
OR
T.Q_QTR_ID IS NULL
;
/*
*/

ETL Implementation Details

'I' ELSE 'X' END

= S.Q_QTR_ID
<>
<>
<>
<>
<>
<>
<>
<>

S.Q_QTR_DNUM
S.Q_QTR_DESC
S.Q_QTR_SDESC
S.Q_FRST_DT_IN_QTR
S.Q_LAST_DT_IN_QTR
S.Q_QTR_LY
S.Q_QTR_2YA
S.Q_SEA_ID

Insert Changes

INSERT INTO $BASEQUANDB.DW_CAL_Q


(
Q_QTR_ID
,
Q_QTR_DNUM
,
Q_QTR_DESC
,
Q_QTR_SDESC
,
Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
,
Q_QTR_LY
,
Q_QTR_2YA

Gap Quantisense Calendar TD

Page 62 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
Q_SEA_ID
,
Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
,
Q_SEA_LY
,
Q_SEA_2YA
,
Q_YR_ID
,
Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
,
Q_YR_LY
,
Q_YR_2YA
,
LOAD_DATE
)
SELECT
S.Q_QTR_ID
,
S.Q_QTR_DNUM
,
S.Q_QTR_DESC
,
S.Q_QTR_SDESC
,
S.Q_FRST_DT_IN_QTR
,
S.Q_LAST_DT_IN_QTR
,
S.Q_QTR_LY
,
S.Q_QTR_2YA
,
S.Q_SEA_ID
,
P1.Q_FRST_DT_IN_SEA
,
P1.Q_LAST_DT_IN_SEA
,
P1.Q_SEA_LY
,
P1.Q_SEA_2YA
,
P1.Q_YR_ID
,
P1.Q_FRST_DT_IN_YR
,
P1.Q_LAST_DT_IN_YR
,
P1.Q_YR_LY
,
P1.Q_YR_2YA
,
S.LOAD_DATE
FROM
$BASEQUANDB.E_CAL_Q_CHG S
JOIN
$BASEQUANDB.DW_CAL_S P1
ON
S.Q_SEA_ID = P1.Q_SEA_ID
WHERE
S.CHG_FLG = 'I'
;
/*
*/

Update Changes

UPDATE $BASEQUANDB.DW_CAL_Q T
SET
Q_QTR_DNUM
=
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_DNUM
,
Q_QTR_DESC
=
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_DESC
,
Q_QTR_SDESC
=
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_SDESC
,
Q_FRST_DT_IN_QTR
=
$BASEQUANDB.E_CAL_Q_CHG.Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
=
$BASEQUANDB.E_CAL_Q_CHG.Q_LAST_DT_IN_QTR

Gap Quantisense Calendar TD

Page 63 of 161

Interface Technical Design


Gap Quantisense Calendar TD
,
Q_QTR_LY
=
,
Q_QTR_2YA
=
,
Q_SEA_ID
=
,
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
=
,
Q_SEA_2YA
=
,
Q_YR_ID
=
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_YR
,
Q_YR_LY
=
,
Q_YR_2YA
=

ETL Implementation Details

$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_LY
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_2YA
$BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID

$BASEQUANDB.DW_CAL_S.Q_SEA_LY
$BASEQUANDB.DW_CAL_S.Q_SEA_2YA
$BASEQUANDB.DW_CAL_S.Q_YR_ID

$BASEQUANDB.DW_CAL_S.Q_YR_LY
$BASEQUANDB.DW_CAL_S.Q_YR_2YA

WHERE
AND
AND
;
/*
*/

$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_ID = T.Q_QTR_ID
$BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID = $BASEQUANDB.DW_CAL_S.Q_SEA_ID
$BASEQUANDB.E_CAL_Q_CHG.CHG_FLG = 'X'
Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_M T
SET
Q_FRST_DT_IN_QTR
=
$BASEQUANDB.E_CAL_Q_CHG.Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
=
$BASEQUANDB.E_CAL_Q_CHG.Q_LAST_DT_IN_QTR
,
Q_QTR_LY
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_LY
,
Q_QTR_2YA
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_2YA
,
Q_SEA_ID
= $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID
,
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.DW_CAL_S.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.DW_CAL_S.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.DW_CAL_S.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_S.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_S.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_ID = T.Q_QTR_ID
AND $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID = $BASEQUANDB.DW_CAL_S.Q_SEA_ID
AND $BASEQUANDB.E_CAL_Q_CHG.CHG_FLG = 'X'
;
/*
*/

Update Changes in Child

Gap Quantisense Calendar TD

Page 64 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

UPDATE $BASEQUANDB.DW_CAL_W T
SET
Q_FRST_DT_IN_QTR
=
$BASEQUANDB.E_CAL_Q_CHG.Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
=
$BASEQUANDB.E_CAL_Q_CHG.Q_LAST_DT_IN_QTR
,
Q_QTR_LY
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_LY
,
Q_QTR_2YA
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_2YA
,
Q_SEA_ID
= $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID
,
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.DW_CAL_S.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.DW_CAL_S.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.DW_CAL_S.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_S.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_S.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_ID = T.Q_QTR_ID
AND $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID = $BASEQUANDB.DW_CAL_S.Q_SEA_ID
AND $BASEQUANDB.E_CAL_Q_CHG.CHG_FLG = 'X'
;
/*
*/

Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_FRST_DT_IN_QTR
=
$BASEQUANDB.E_CAL_Q_CHG.Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
=
$BASEQUANDB.E_CAL_Q_CHG.Q_LAST_DT_IN_QTR
,
Q_QTR_LY
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_LY
,
Q_QTR_2YA
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_2YA
,
Q_SEA_ID
= $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID
,
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.DW_CAL_S.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.DW_CAL_S.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.DW_CAL_S.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_S.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_S.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_ID = T.Q_QTR_ID

Gap Quantisense Calendar TD

Page 65 of 161

Interface Technical Design


Gap Quantisense Calendar TD
AND
AND
;

ETL Implementation Details

$BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID = $BASEQUANDB.DW_CAL_S.Q_SEA_ID
$BASEQUANDB.E_CAL_Q_CHG.CHG_FLG = 'X'

8.6.1.1 Description of stages

/*

Insert Into Staging Table

*/

DELETE FROM $BASEQUANDB.DDT_CAL_Q ALL;


INSERT INTO $BASEQUANDB.DDT_CAL_Q
(
Q_QTR_ID
, Q_QTR_DNUM
, Q_QTR_DESC
, Q_QTR_SDESC
, Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
, Q_QTR_LY
, Q_QTR_2YA
, Q_SEA_ID
, LOAD_DATE
)
SELECT
(FIS_YR_NBR * 100) + FIS_QTR_NBR AS Q_QTR_ID
, (FIS_YR_NBR * 100) + FIS_QTR_NBR AS Q_QTR_DNUM
, FIS_QTR_FULL_DESC AS Q_QTR_DESC
, FIS_QTR_DESC AS Q_QTR_SDESC
, PERD_START_DT AS Q_FRST_DT_IN_QTR
, PERD_END_DT AS Q_LAST_DT_IN_QTR
, ((FIS_YR_NBR - 1) * 10) + FIS_QTR_NBR AS Q_QTR_LY
, ((FIS_YR_NBR - 2) * 10) + FIS_QTR_NBR AS Q_QTR_2YA
, CASE
WHEN FIS_QTR_NBR IN (1, 2)
THEN (FIS_YR_NBR * 10) + 1
ELSE (FIS_YR_NBR * 10) + 2
END AS Q_SEA_ID

Gap Quantisense Calendar TD

Page 66 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCQD_FIS_CAL_QTR_DIM
WHERE FIS_CAL_ID = 1
AND FIS_CAL_RLN_TYP_CD = 5
AND TM_ZN_GRP_CD = 1
AND (FIS_YR_NBR * 100) + FIS_QTR_NBR >= (SELECT FIS_YR_NBR*100+FIS_QTR_NBR FROM
$BASEVIEWDBF..TFCZD_FIS_CAL_TM_ZN_FLT_DIM WHERE FIS_YR_NBR=EXTRACT ( YEAR FROM CURRENT_DATE)3 AND FIS_QTR_NBR=1 group by 1)
;
/*

Detect Changes

*/

DELETE FROM $BASEQUANDB.E_CAL_Q_CHG ALL;


INSERT INTO $BASEQUANDB.E_CAL_Q_CHG
(
Q_QTR_ID
, Q_QTR_DNUM
, Q_QTR_DESC
, Q_QTR_SDESC
, Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
, Q_QTR_LY
, Q_QTR_2YA
, Q_SEA_ID
, LOAD_DATE
, CHG_FLG
)
SELECT
S.Q_QTR_ID
, S.Q_QTR_DNUM
, S.Q_QTR_DESC
, S.Q_QTR_SDESC
, S.Q_FRST_DT_IN_QTR
, S.Q_LAST_DT_IN_QTR
, S.Q_QTR_LY
, S.Q_QTR_2YA
, S.Q_SEA_ID
, S.LOAD_DATE
, CASE WHEN T.Q_QTR_ID IS NULL THEN 'I' ELSE 'X' END
FROM
$BASEQUANDB.DDT_CAL_Q S
LEFT OUTER JOIN
$BASEQUANDB.DW_CAL_Q T
ON T.Q_QTR_ID
= S.Q_QTR_ID
WHERE
T.Q_QTR_DNUM
<> S.Q_QTR_DNUM
OR T.Q_QTR_DESC
<> S.Q_QTR_DESC
OR T.Q_QTR_SDESC
<> S.Q_QTR_SDESC
OR T.Q_FRST_DT_IN_QTR
<> S.Q_FRST_DT_IN_QTR
OR T.Q_LAST_DT_IN_QTR
<> S.Q_LAST_DT_IN_QTR
OR T.Q_QTR_LY
<> S.Q_QTR_LY
OR T.Q_QTR_2YA
<> S.Q_QTR_2YA
OR T.Q_SEA_ID
<> S.Q_SEA_ID
OR T.Q_QTR_ID IS NULL
;

/*

Insert Changes

Gap Quantisense Calendar TD

*/

Page 67 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

INSERT INTO $BASEQUANDB.DW_CAL_Q


(
Q_QTR_ID
, Q_QTR_DNUM
, Q_QTR_DESC
, Q_QTR_SDESC
, Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
, Q_QTR_LY
, Q_QTR_2YA
, Q_SEA_ID
, Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
, Q_SEA_LY
, Q_SEA_2YA
, Q_YR_ID
, Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
, Q_YR_LY
, Q_YR_2YA
, LOAD_DATE
)
SELECT
S.Q_QTR_ID
, S.Q_QTR_DNUM
, S.Q_QTR_DESC
, S.Q_QTR_SDESC
, S.Q_FRST_DT_IN_QTR
, S.Q_LAST_DT_IN_QTR
, S.Q_QTR_LY
, S.Q_QTR_2YA
, S.Q_SEA_ID
, P1.Q_FRST_DT_IN_SEA
, P1.Q_LAST_DT_IN_SEA
, P1.Q_SEA_LY
, P1.Q_SEA_2YA
, P1.Q_YR_ID
, P1.Q_FRST_DT_IN_YR
, P1.Q_LAST_DT_IN_YR
, P1.Q_YR_LY
, P1.Q_YR_2YA
, S.LOAD_DATE
FROM
$BASEQUANDB.E_CAL_Q_CHG S
JOIN
$BASEQUANDB.DW_CAL_S P1
ON S.Q_SEA_ID = P1.Q_SEA_ID
WHERE
S.CHG_FLG = 'I'
;
/*

Update Changes

*/

UPDATE $BASEQUANDB.DW_CAL_Q T
SET
Q_QTR_DNUM
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_DNUM
, Q_QTR_DESC
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_DESC
, Q_QTR_SDESC
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_SDESC
, Q_FRST_DT_IN_QTR
= $BASEQUANDB.E_CAL_Q_CHG.Q_FRST_DT_IN_QTR

Gap Quantisense Calendar TD

Page 68 of 161

Interface Technical Design


Gap Quantisense Calendar TD
,
,
,
,
,
,
,
,
,
,
,
,
,

Q_LAST_DT_IN_QTR
Q_QTR_LY
Q_QTR_2YA
Q_SEA_ID
Q_FRST_DT_IN_SEA
Q_LAST_DT_IN_SEA
Q_SEA_LY
Q_SEA_2YA
Q_YR_ID
Q_FRST_DT_IN_YR
Q_LAST_DT_IN_YR
Q_YR_LY
Q_YR_2YA

ETL Implementation Details

= $BASEQUANDB.E_CAL_Q_CHG.Q_LAST_DT_IN_QTR
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_LY
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_2YA
= $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID
= $BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_S.Q_SEA_LY
= $BASEQUANDB.DW_CAL_S.Q_SEA_2YA
= $BASEQUANDB.DW_CAL_S.Q_YR_ID
= $BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_YR
= $BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_YR
= $BASEQUANDB.DW_CAL_S.Q_YR_LY
= $BASEQUANDB.DW_CAL_S.Q_YR_2YA

WHERE
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_ID = T.Q_QTR_ID
AND $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID = $BASEQUANDB.DW_CAL_S.Q_SEA_ID
AND $BASEQUANDB.E_CAL_Q_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE $BASEQUANDB.DW_CAL_M T
SET
Q_FRST_DT_IN_QTR
= $BASEQUANDB.E_CAL_Q_CHG.Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
= $BASEQUANDB.E_CAL_Q_CHG.Q_LAST_DT_IN_QTR
, Q_QTR_LY
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_LY
, Q_QTR_2YA
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_2YA
, Q_SEA_ID
= $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID
, Q_FRST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= $BASEQUANDB.DW_CAL_S.Q_SEA_LY
, Q_SEA_2YA
= $BASEQUANDB.DW_CAL_S.Q_SEA_2YA
, Q_YR_ID
= $BASEQUANDB.DW_CAL_S.Q_YR_ID
, Q_FRST_DT_IN_YR
= $BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= $BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_YR
, Q_YR_LY
= $BASEQUANDB.DW_CAL_S.Q_YR_LY
, Q_YR_2YA
= $BASEQUANDB.DW_CAL_S.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_ID = T.Q_QTR_ID
AND $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID = $BASEQUANDB.DW_CAL_S.Q_SEA_ID
AND $BASEQUANDB.E_CAL_Q_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE $BASEQUANDB.DW_CAL_W T
SET
Q_FRST_DT_IN_QTR
= $BASEQUANDB.E_CAL_Q_CHG.Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
= $BASEQUANDB.E_CAL_Q_CHG.Q_LAST_DT_IN_QTR
, Q_QTR_LY
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_LY
, Q_QTR_2YA
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_2YA
, Q_SEA_ID
= $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID
, Q_FRST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= $BASEQUANDB.DW_CAL_S.Q_SEA_LY
, Q_SEA_2YA
= $BASEQUANDB.DW_CAL_S.Q_SEA_2YA
, Q_YR_ID
= $BASEQUANDB.DW_CAL_S.Q_YR_ID
, Q_FRST_DT_IN_YR
= $BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_YR

Gap Quantisense Calendar TD

Page 69 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, Q_LAST_DT_IN_YR
= $BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_YR
, Q_YR_LY
= $BASEQUANDB.DW_CAL_S.Q_YR_LY
, Q_YR_2YA
= $BASEQUANDB.DW_CAL_S.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_ID = T.Q_QTR_ID
AND $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID = $BASEQUANDB.DW_CAL_S.Q_SEA_ID
AND $BASEQUANDB.E_CAL_Q_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_FRST_DT_IN_QTR
= $BASEQUANDB.E_CAL_Q_CHG.Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
= $BASEQUANDB.E_CAL_Q_CHG.Q_LAST_DT_IN_QTR
, Q_QTR_LY
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_LY
, Q_QTR_2YA
= $BASEQUANDB.E_CAL_Q_CHG.Q_QTR_2YA
, Q_SEA_ID
= $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID
, Q_FRST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= $BASEQUANDB.DW_CAL_S.Q_SEA_LY
, Q_SEA_2YA
= $BASEQUANDB.DW_CAL_S.Q_SEA_2YA
, Q_YR_ID
= $BASEQUANDB.DW_CAL_S.Q_YR_ID
, Q_FRST_DT_IN_YR
= $BASEQUANDB.DW_CAL_S.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= $BASEQUANDB.DW_CAL_S.Q_LAST_DT_IN_YR
, Q_YR_LY
= $BASEQUANDB.DW_CAL_S.Q_YR_LY
, Q_YR_2YA
= $BASEQUANDB.DW_CAL_S.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_Q_CHG.Q_QTR_ID = T.Q_QTR_ID
AND $BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID = $BASEQUANDB.DW_CAL_S.Q_SEA_ID
AND $BASEQUANDB.E_CAL_Q_CHG.CHG_FLG = 'X'
;

7.6.2

PROCESSING SPECIFICS
Processing
Steps Covered

Process P3 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements: The source table


TFCQD_FIS_CAL_QTR_DIM should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

Gap Quantisense Calendar TD

Page 70 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

8.6.2

8.7

COMPONENT: PDWQ04DU_CAL_M_ETL.BTQ

8.7.1.1

DESCRIPTION OF STAGES

8.7.2

DESCRIPTION OF STAGES

Source Table

TFCMD_FIS_CAL_MO_DIM

Target Table

DW_CAL_M

Business Function

Extracts month data from source table


TFCMD_FIS_CAL_MO_DIM and Detects changes
and adds/updates to the table DW_CAL_M, and child
tables.

BTEQ Steps

Load the records from the table into a staging


table.

Any new records or changes to existing


records are loaded into an intermediate table
E_CAL_M_CHG.

Insert/update the records from


E_CAL_M_CHG into the DW_CAL_M.

Update the child table DW_CAL_W with the


changes records from E_CAL_M_CHG table.

Update the child table DW_CAL_DT with the


changes records from E_CAL_M_CHG table.

DELETE FROM $BASEQUANDB.DDT_CAL_M ALL;


INSERT INTO $BASEQUANDB.DDT_CAL_M
(
Q_MON_ID
,
Q_MON_DNUM
,
Q_MON_DESC
,
Q_MON_SDESC
,
Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
,
Q_MON_LY
,
Q_MON_2YA
,
Q_QTR_ID
,
LOAD_DATE
)
SELECT
(FIS_YR_NBR * 100) + FIS_MO_NBR
, (FIS_YR_NBR * 100) + FIS_MO_NBR
, FIS_MO_FULL_DESC
, FIS_MO_DESC
Gap Quantisense Calendar TD

AS
AS
AS
AS

Q_MON_ID
Q_MON_DNUM
Q_MON_DESC
Q_MON_SDESC
Page 71 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, PERD_START_DT
AS Q_FRST_DT_IN_MON
, PERD_END_DT
AS Q_LAST_DT_IN_MON
, ((FIS_YR_NBR - 1) * 10) + FIS_MO_NBR
AS Q_MON_LY
, ((FIS_YR_NBR - 2) * 10) + FIS_MO_NBR
AS Q_MON_2YA
, (FIS_YR_NBR * 100) + FIS_QTR_NBR AS Q_QTR_ID
, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCMD_FIS_CAL_MO_DIM A
WHERE FIS_CAL_ID = 1
AND FIS_CAL_RLN_TYP_CD = 5
AND TM_ZN_GRP_CD = 1
AND (FIS_YR_NBR * 100) + FIS_MO_NBR >= (SELECT (FIS_YR_NBR-3)*100+01
FROM $BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM
WHERE
FIS_CAL_DT=CURRENT_DATE AND TM_ZN_GRP_CD = 1 Group By 1)
;
/*
*/

Detect Changes

DELETE FROM $BASEQUANDB.E_CAL_M_CHG ALL;


INSERT INTO $BASEQUANDB.E_CAL_M_CHG
(
Q_MON_ID
,
Q_MON_DNUM
,
Q_MON_DESC
,
Q_MON_SDESC
,
Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
,
Q_MON_LY
,
Q_MON_2YA
,
Q_QTR_ID
,
LOAD_DATE
,
CHG_FLG
)
SELECT
S.Q_MON_ID
,
S.Q_MON_DNUM
,
S.Q_MON_DESC
,
S.Q_MON_SDESC
,
S.Q_FRST_DT_IN_MON
,
S.Q_LAST_DT_IN_MON
,
S.Q_MON_LY
,
S.Q_MON_2YA
,
S.Q_QTR_ID
,
S.LOAD_DATE
,
CASE WHEN T.Q_MON_ID IS NULL THEN
FROM
$BASEQUANDB.DDT_CAL_M S
LEFT OUTER JOIN
$BASEQUANDB.DW_CAL_M T
ON
T.Q_MON_ID
WHERE
T.Q_MON_DNUM
OR
T.Q_MON_DESC
OR
T.Q_MON_SDESC

Gap Quantisense Calendar TD

'I' ELSE 'X' END

= S.Q_MON_ID
<>
<>
<>

S.Q_MON_DNUM
S.Q_MON_DESC
S.Q_MON_SDESC

Page 72 of 161

Interface Technical Design


Gap Quantisense Calendar TD
OR
OR
OR
OR
OR
OR
;

T.Q_FRST_DT_IN_MON
T.Q_LAST_DT_IN_MON
T.Q_MON_LY
T.Q_MON_2YA
T.Q_QTR_ID
T.Q_MON_ID IS NULL

/*
*/

Insert Changes

ETL Implementation Details

<>
<>
<>
<>
<>

S.Q_FRST_DT_IN_MON
S.Q_LAST_DT_IN_MON
S.Q_MON_LY
S.Q_MON_2YA
S.Q_QTR_ID

INSERT INTO $BASEQUANDB.DW_CAL_M


(
Q_MON_ID
,
Q_MON_DNUM
,
Q_MON_DESC
,
Q_MON_SDESC
,
Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
,
Q_MON_LY
,
Q_MON_2YA
,
Q_QTR_ID
,
Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
,
Q_QTR_LY
,
Q_QTR_2YA
,
Q_SEA_ID
,
Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
,
Q_SEA_LY
,
Q_SEA_2YA
,
Q_YR_ID
,
Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
,
Q_YR_LY
,
Q_YR_2YA
,
LOAD_DATE
)
SELECT
S.Q_MON_ID
,
S.Q_MON_DNUM
,
S.Q_MON_DESC
,
S.Q_MON_SDESC
,
S.Q_FRST_DT_IN_MON
,
S.Q_LAST_DT_IN_MON
,
S.Q_MON_LY
,
S.Q_MON_2YA
,
S.Q_QTR_ID
,
P1.Q_FRST_DT_IN_QTR
,
P1.Q_LAST_DT_IN_QTR
,
P1.Q_QTR_LY
,
P1.Q_QTR_2YA
,
P1.Q_SEA_ID
,
P1.Q_FRST_DT_IN_SEA
,
P1.Q_LAST_DT_IN_SEA
,
P1.Q_SEA_LY

Gap Quantisense Calendar TD

Page 73 of 161

Interface Technical Design


Gap Quantisense Calendar TD
,
,
,
,
,
,
,
FROM
JOIN

ETL Implementation Details

P1.Q_SEA_2YA
P1.Q_YR_ID
P1.Q_FRST_DT_IN_YR
P1.Q_LAST_DT_IN_YR
P1.Q_YR_LY
P1.Q_YR_2YA
S.LOAD_DATE
$BASEQUANDB.E_CAL_M_CHG S
$BASEQUANDB.DW_CAL_Q P1
ON
S.Q_QTR_ID = P1.Q_QTR_ID

WHERE
S.CHG_FLG = 'I'
;
/*
*/

Update Changes

UPDATE $BASEQUANDB.DW_CAL_M T
SET
Q_MON_DNUM
=
$BASEQUANDB.E_CAL_M_CHG.Q_MON_DNUM
,
Q_MON_DESC
=
$BASEQUANDB.E_CAL_M_CHG.Q_MON_DESC
,
Q_MON_SDESC
=
$BASEQUANDB.E_CAL_M_CHG.Q_MON_SDESC
,
Q_FRST_DT_IN_MON
=
$BASEQUANDB.E_CAL_M_CHG.Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
=
$BASEQUANDB.E_CAL_M_CHG.Q_LAST_DT_IN_MON
,
Q_MON_LY
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_LY
,
Q_MON_2YA
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_2YA
,
Q_QTR_ID
= $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID
,
Q_FRST_DT_IN_QTR
=
$BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
=
$BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_QTR
,
Q_QTR_LY
= $BASEQUANDB.DW_CAL_Q.Q_QTR_LY
,
Q_QTR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_QTR_2YA
,
Q_SEA_ID
= $BASEQUANDB.DW_CAL_Q.Q_SEA_ID
,
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.DW_CAL_Q.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.DW_CAL_Q.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.DW_CAL_Q.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_Q.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_YR_2YA

Gap Quantisense Calendar TD

Page 74 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

WHERE
AND
AND
;
/*
*/

$BASEQUANDB.E_CAL_M_CHG.Q_MON_ID = T.Q_MON_ID
$BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID = $BASEQUANDB.DW_CAL_Q.Q_QTR_ID
$BASEQUANDB.E_CAL_M_CHG.CHG_FLG = 'X'
Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_W T
SET
Q_FRST_DT_IN_MON
=
$BASEQUANDB.E_CAL_M_CHG.Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
=
$BASEQUANDB.E_CAL_M_CHG.Q_LAST_DT_IN_MON
,
Q_MON_LY
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_LY
,
Q_MON_2YA
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_2YA
,
Q_QTR_ID
= $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID
,
Q_FRST_DT_IN_QTR
=
$BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
=
$BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_QTR
,
Q_QTR_LY
= $BASEQUANDB.DW_CAL_Q.Q_QTR_LY
,
Q_QTR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_QTR_2YA
,
Q_SEA_ID
= $BASEQUANDB.DW_CAL_Q.Q_SEA_ID
,
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.DW_CAL_Q.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.DW_CAL_Q.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.DW_CAL_Q.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_Q.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_M_CHG.Q_MON_ID = T.Q_MON_ID
AND $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID = $BASEQUANDB.DW_CAL_Q.Q_QTR_ID
AND $BASEQUANDB.E_CAL_M_CHG.CHG_FLG = 'X'
;
/*
*/

Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_FRST_DT_IN_MON
=
$BASEQUANDB.E_CAL_M_CHG.Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
=
$BASEQUANDB.E_CAL_M_CHG.Q_LAST_DT_IN_MON
,
Q_MON_LY
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_LY
,
Q_MON_2YA
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_2YA

Gap Quantisense Calendar TD

Page 75 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
Q_QTR_ID
= $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID
,
Q_FRST_DT_IN_QTR
=
$BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
=
$BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_QTR
,
Q_QTR_LY
= $BASEQUANDB.DW_CAL_Q.Q_QTR_LY
,
Q_QTR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_QTR_2YA
,
Q_SEA_ID
= $BASEQUANDB.DW_CAL_Q.Q_SEA_ID
,
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.DW_CAL_Q.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.DW_CAL_Q.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.DW_CAL_Q.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_Q.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_M_CHG.Q_MON_ID = T.Q_MON_ID
AND $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID = $BASEQUANDB.DW_CAL_Q.Q_QTR_ID
AND $BASEQUANDB.E_CAL_M_CHG.CHG_FLG = 'X'
;

8.7.2.1

/*

PROCESSING SPECIFICS

Insert Into Staging Table

*/

DELETE FROM $BASEQUANDB.DDT_CAL_M ALL;


INSERT INTO $BASEQUANDB.DDT_CAL_M
(
Q_MON_ID
, Q_MON_DNUM
, Q_MON_DESC
, Q_MON_SDESC
, Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
, Q_MON_LY
, Q_MON_2YA
, Q_QTR_ID
, LOAD_DATE
)
SELECT
(FIS_YR_NBR * 100) + FIS_MO_NBR
AS
, (FIS_YR_NBR * 100) + FIS_MO_NBR
AS
, FIS_MO_FULL_DESC
AS
, FIS_MO_DESC
AS
, PERD_START_DT
AS
, PERD_END_DT
, ((FIS_YR_NBR - 1) * 10) + FIS_MO_NBR
, ((FIS_YR_NBR - 2) * 10) + FIS_MO_NBR

Gap Quantisense Calendar TD

Q_MON_ID
Q_MON_DNUM
Q_MON_DESC
Q_MON_SDESC
Q_FRST_DT_IN_MON
AS Q_LAST_DT_IN_MON
AS Q_MON_LY
AS Q_MON_2YA

Page 76 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, (FIS_YR_NBR * 100) + FIS_QTR_NBR AS Q_QTR_ID


, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCMD_FIS_CAL_MO_DIM A
WHERE FIS_CAL_ID = 1
AND FIS_CAL_RLN_TYP_CD = 5
AND TM_ZN_GRP_CD = 1
AND (FIS_YR_NBR * 100) + FIS_MO_NBR >= (SELECT FIS_YR_NBR*100+FIS_MO_NBR FROM
$BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM WHERE FIS_YR_NBR=EXTRACT(YEAR FROM CURRENT_DATE)-3
AND FIS_MO_NBR=1 group by 1)
;
/*

Detect Changes

*/

DELETE FROM $BASEQUANDB.E_CAL_M_CHG ALL;


INSERT INTO $BASEQUANDB.E_CAL_M_CHG
(
Q_MON_ID
, Q_MON_DNUM
, Q_MON_DESC
, Q_MON_SDESC
, Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
, Q_MON_LY
, Q_MON_2YA
, Q_QTR_ID
, LOAD_DATE
, CHG_FLG
)
SELECT
S.Q_MON_ID
, S.Q_MON_DNUM
, S.Q_MON_DESC
, S.Q_MON_SDESC
, S.Q_FRST_DT_IN_MON
, S.Q_LAST_DT_IN_MON
, S.Q_MON_LY
, S.Q_MON_2YA
, S.Q_QTR_ID
, S.LOAD_DATE
, CASE WHEN T.Q_MON_ID IS NULL THEN 'I' ELSE 'X' END
FROM
$BASEQUANDB.DDT_CAL_M S
LEFT OUTER JOIN
$BASEQUANDB.DW_CAL_M T
ON T.Q_MON_ID
= S.Q_MON_ID
WHERE
T.Q_MON_DNUM
<> S.Q_MON_DNUM
OR T.Q_MON_DESC
<> S.Q_MON_DESC
OR T.Q_MON_SDESC
<> S.Q_MON_SDESC
OR T.Q_FRST_DT_IN_MON
<> S.Q_FRST_DT_IN_MON
OR T.Q_LAST_DT_IN_MON
<> S.Q_LAST_DT_IN_MON
OR T.Q_MON_LY
<> S.Q_MON_LY
OR T.Q_MON_2YA
<> S.Q_MON_2YA
OR T.Q_QTR_ID
<> S.Q_QTR_ID
OR T.Q_MON_ID IS NULL
;
/*

Insert Changes

Gap Quantisense Calendar TD

*/

Page 77 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

INSERT INTO $BASEQUANDB.DW_CAL_M


(
Q_MON_ID
, Q_MON_DNUM
, Q_MON_DESC
, Q_MON_SDESC
, Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
, Q_MON_LY
, Q_MON_2YA
, Q_QTR_ID
, Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
, Q_QTR_LY
, Q_QTR_2YA
, Q_SEA_ID
, Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
, Q_SEA_LY
, Q_SEA_2YA
, Q_YR_ID
, Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
, Q_YR_LY
, Q_YR_2YA
, LOAD_DATE
)
SELECT
S.Q_MON_ID
, S.Q_MON_DNUM
, S.Q_MON_DESC
, S.Q_MON_SDESC
, S.Q_FRST_DT_IN_MON
, S.Q_LAST_DT_IN_MON
, S.Q_MON_LY
, S.Q_MON_2YA
, S.Q_QTR_ID
, P1.Q_FRST_DT_IN_QTR
, P1.Q_LAST_DT_IN_QTR
, P1.Q_QTR_LY
, P1.Q_QTR_2YA
, P1.Q_SEA_ID
, P1.Q_FRST_DT_IN_SEA
, P1.Q_LAST_DT_IN_SEA
, P1.Q_SEA_LY
, P1.Q_SEA_2YA
, P1.Q_YR_ID
, P1.Q_FRST_DT_IN_YR
, P1.Q_LAST_DT_IN_YR
, P1.Q_YR_LY
, P1.Q_YR_2YA
, S.LOAD_DATE
FROM
$BASEQUANDB.E_CAL_M_CHG S
JOIN
$BASEQUANDB.DW_CAL_Q P1
ON S.Q_QTR_ID = P1.Q_QTR_ID
WHERE
S.CHG_FLG = 'I'
;

Gap Quantisense Calendar TD

Page 78 of 161

Interface Technical Design


Gap Quantisense Calendar TD

/*

Update Changes

ETL Implementation Details

*/

UPDATE $BASEQUANDB.DW_CAL_M T
SET
Q_MON_DNUM
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_DNUM
, Q_MON_DESC
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_DESC
, Q_MON_SDESC
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_SDESC
, Q_FRST_DT_IN_MON
= $BASEQUANDB.E_CAL_M_CHG.Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
= $BASEQUANDB.E_CAL_M_CHG.Q_LAST_DT_IN_MON
, Q_MON_LY
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_LY
, Q_MON_2YA
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_2YA
, Q_QTR_ID
= $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID
, Q_FRST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_QTR
, Q_QTR_LY
= $BASEQUANDB.DW_CAL_Q.Q_QTR_LY
, Q_QTR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_QTR_2YA
, Q_SEA_ID
= $BASEQUANDB.DW_CAL_Q.Q_SEA_ID
, Q_FRST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= $BASEQUANDB.DW_CAL_Q.Q_SEA_LY
, Q_SEA_2YA
= $BASEQUANDB.DW_CAL_Q.Q_SEA_2YA
, Q_YR_ID
= $BASEQUANDB.DW_CAL_Q.Q_YR_ID
, Q_FRST_DT_IN_YR
= $BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= $BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_YR
, Q_YR_LY
= $BASEQUANDB.DW_CAL_Q.Q_YR_LY
, Q_YR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_M_CHG.Q_MON_ID = T.Q_MON_ID
AND $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID = $BASEQUANDB.DW_CAL_Q.Q_QTR_ID
AND $BASEQUANDB.E_CAL_M_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE $BASEQUANDB.DW_CAL_W T
SET
Q_FRST_DT_IN_MON
= $BASEQUANDB.E_CAL_M_CHG.Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
= $BASEQUANDB.E_CAL_M_CHG.Q_LAST_DT_IN_MON
, Q_MON_LY
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_LY
, Q_MON_2YA
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_2YA
, Q_QTR_ID
= $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID
, Q_FRST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_QTR
, Q_QTR_LY
= $BASEQUANDB.DW_CAL_Q.Q_QTR_LY
, Q_QTR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_QTR_2YA
, Q_SEA_ID
= $BASEQUANDB.DW_CAL_Q.Q_SEA_ID
, Q_FRST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= $BASEQUANDB.DW_CAL_Q.Q_SEA_LY
, Q_SEA_2YA
= $BASEQUANDB.DW_CAL_Q.Q_SEA_2YA
, Q_YR_ID
= $BASEQUANDB.DW_CAL_Q.Q_YR_ID
, Q_FRST_DT_IN_YR
= $BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= $BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_YR
, Q_YR_LY
= $BASEQUANDB.DW_CAL_Q.Q_YR_LY
, Q_YR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_M_CHG.Q_MON_ID = T.Q_MON_ID

Gap Quantisense Calendar TD

Page 79 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

AND $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID = $BASEQUANDB.DW_CAL_Q.Q_QTR_ID


AND $BASEQUANDB.E_CAL_M_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_FRST_DT_IN_MON
= $BASEQUANDB.E_CAL_M_CHG.Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
= $BASEQUANDB.E_CAL_M_CHG.Q_LAST_DT_IN_MON
, Q_MON_LY
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_LY
, Q_MON_2YA
= $BASEQUANDB.E_CAL_M_CHG.Q_MON_2YA
, Q_QTR_ID
= $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID
, Q_FRST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_QTR
, Q_QTR_LY
= $BASEQUANDB.DW_CAL_Q.Q_QTR_LY
, Q_QTR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_QTR_2YA
, Q_SEA_ID
= $BASEQUANDB.DW_CAL_Q.Q_SEA_ID
, Q_FRST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= $BASEQUANDB.DW_CAL_Q.Q_SEA_LY
, Q_SEA_2YA
= $BASEQUANDB.DW_CAL_Q.Q_SEA_2YA
, Q_YR_ID
= $BASEQUANDB.DW_CAL_Q.Q_YR_ID
, Q_FRST_DT_IN_YR
= $BASEQUANDB.DW_CAL_Q.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= $BASEQUANDB.DW_CAL_Q.Q_LAST_DT_IN_YR
, Q_YR_LY
= $BASEQUANDB.DW_CAL_Q.Q_YR_LY
, Q_YR_2YA
= $BASEQUANDB.DW_CAL_Q.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_M_CHG.Q_MON_ID = T.Q_MON_ID
AND $BASEQUANDB.E_CAL_M_CHG.Q_QTR_ID = $BASEQUANDB.DW_CAL_Q.Q_QTR_ID
AND $BASEQUANDB.E_CAL_M_CHG.CHG_FLG = 'X'
;

7.7.2 PROCESSING SPECIFICS


Processing
Steps Covered

Process P4 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements:
The source table TFCMD_FIS_CAL_MO_DIM should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

Gap Quantisense Calendar TD

Page 80 of 161

Interface Technical Design


Gap Quantisense Calendar TD

8.8
8.8.1.1
8.8.2

ETL Implementation Details

COMPONENT: PDWQ05DU_CAL_W_ETL.BTQ
DESCRIPTION OF STAGE
DESCRIPTION OF STAGE
Source Table

TFCWD_FIS_CAL_WK_DIM

Target Table

DW_CAL_W

Business Function

Extracts week data from source table


TFCWD_FIS_CAL_WK_DIM and Detects changes
and adds/updates to the table DW_CAL_Q, and child
tables.

BTEQ Steps

Load the records from the table into a staging


table.

Any new records or changes to existing


records are loaded into an intermediate table
E_CAL_W_CHG.

Insert/update the records from


E_CAL_W_CHG into the DW_CAL_W.

Update the child table DW_CAL_DT with the


changes records from E_CAL_M_CHG table.

DELETE FROM $BASEQUANDB.DDT_CAL_W ALL;


INSERT INTO $BASEQUANDB.DDT_CAL_W
(
Q_WK_ID
,
Q_WK_DNUM
,
Q_WK_DESC
,
Q_WK_SDESC
,
Q_FRST_DT_IN_WK
,
Q_LAST_DT_IN_WK
,
Q_WK_LY
,
Q_WK_2YA
,
Q_WK_LW
,
Q_WK_2WA
,
Q_WK_3WA
,
Q_WK_4WA
,
Q_MON_ID
,
CUR_WK_IND
,
PRV_WK_IND
,
LOAD_DATE
)
SELECT
A.PERD_END_DT
AS Q_WK_ID
, A.PERD_END_DT
AS Q_WK_DNUM
, A.FIS_WK_FULL_DESC
AS Q_WK_DESC
, A.FIS_WK_DESC
AS Q_WK_SDESC
, A.PERD_START_DT
AS Q_FRST_DT_IN_WK

Gap Quantisense Calendar TD

Page 81 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, A.PERD_END_DT
AS Q_LAST_DT_IN_WK
, B.PERD_END_DT
AS Q_WK_LY
, C.PERD_END_DT
AS Q_WK_2YA
, A.PERD_END_DT - 7
AS Q_WK_LW
, A.PERD_END_DT - 14
AS Q_WK_2WA
, A.PERD_END_DT - 21
AS Q_WK_3WA
, A.PERD_END_DT - 28
AS Q_WK_4WA
, (A.FIS_YR_NBR * 100) + A.FIS_MO_NBR
AS Q_MON_ID
, A.CUR_WK_IND AS CUR_WK_IND
, A.NXT_WK_IND AS PRV_WK_IND
, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCWD_FIS_CAL_WK_DIM A
JOIN $BASEVIEWDBF.TFCWD_FIS_CAL_WK_DIM B
ON A.LY_FIS_WK_NBR = B.FIS_WK_NBR
AND A.LY_FIS_YR_NBR = B.FIS_YR_NBR
JOIN $BASEVIEWDBF.TFCWD_FIS_CAL_WK_DIM C
ON A.LLY_FIS_WK_NBR = C.FIS_WK_NBR
AND A.LLY_FIS_YR_NBR = C.FIS_YR_NBR
WHERE A.FIS_CAL_ID = 1
AND A.FIS_CAL_RLN_TYP_CD = 5
AND A.TM_ZN_GRP_CD = 1
AND B.FIS_CAL_ID = 1
AND B.FIS_CAL_RLN_TYP_CD = 5
AND B.TM_ZN_GRP_CD = 1
AND C.FIS_CAL_ID = 1
AND C.FIS_CAL_RLN_TYP_CD = 5
AND C.TM_ZN_GRP_CD = 1
AND A.PERD_END_DT >= (SELECT YR_STRT_DT FROM
$BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM
WHERE FIS_YR_NBR=(SELECT FIS_YR_NBR -3 FROM
$BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM WHERE FIS_CAL_DT=CURRENT_DATE
AND TM_ZN_GRP_CD = 1 GROUP BY 1) GROUP BY 1)
;
/*
*/

Detect Changes

DELETE FROM $BASEQUANDB.E_CAL_W_CHG ALL;


INSERT INTO $BASEQUANDB.E_CAL_W_CHG
(
Q_WK_ID
,
Q_WK_DNUM
,
Q_WK_DESC
,
Q_WK_SDESC
,
Q_FRST_DT_IN_WK
,
Q_LAST_DT_IN_WK
,
Q_WK_LY
,
Q_WK_2YA
,
Q_WK_LW
,
Q_WK_2WA
,
Q_WK_3WA
,
Q_WK_4WA
,
Q_MON_ID
,
CUR_WK_IND

Gap Quantisense Calendar TD

Page 82 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
PRV_WK_IND
,
LOAD_DATE
,
CHG_FLG
)
SELECT
S.Q_WK_ID
,
S.Q_WK_DNUM
,
S.Q_WK_DESC
,
S.Q_WK_SDESC
,
S.Q_FRST_DT_IN_WK
,
S.Q_LAST_DT_IN_WK
,
S.Q_WK_LY
,
S.Q_WK_2YA
,
S.Q_WK_LW
,
S.Q_WK_2WA
,
S.Q_WK_3WA
,
S.Q_WK_4WA
,
S.Q_MON_ID
,
S.CUR_WK_IND
,
S.PRV_WK_IND
,
S.LOAD_DATE
,
CASE WHEN T.Q_WK_ID IS NULL THEN 'I' ELSE 'X' END
FROM
$BASEQUANDB.DDT_CAL_W S
LEFT OUTER JOIN
$BASEQUANDB.DW_CAL_W T
ON
T.Q_WK_ID
= S.Q_WK_ID
WHERE
T.Q_WK_DNUM
<> S.Q_WK_DNUM
OR
T.Q_WK_DESC
<> S.Q_WK_DESC
OR
T.Q_WK_SDESC
<> S.Q_WK_SDESC
OR
T.Q_FRST_DT_IN_WK
<> S.Q_FRST_DT_IN_WK
OR
T.Q_LAST_DT_IN_WK
<> S.Q_LAST_DT_IN_WK
OR
T.Q_WK_LY
<> S.Q_WK_LY
OR
T.Q_WK_2YA
<> S.Q_WK_2YA
OR
T.Q_WK_LW
<> S.Q_WK_LW
OR
T.Q_WK_2WA
<> S.Q_WK_2WA
OR
T.Q_WK_3WA
<> S.Q_WK_3WA
OR
T.Q_WK_4WA
<> S.Q_WK_4WA
OR
T.Q_MON_ID
<> S.Q_MON_ID
OR
T.CUR_WK_IND
<> S.CUR_WK_IND
OR
T.PRV_WK_IND
<> S.PRV_WK_IND
OR
T.Q_WK_ID IS NULL
;
/*
*/

Insert Changes

INSERT INTO $BASEQUANDB.DW_CAL_W


(
Q_WK_ID
,
Q_WK_DNUM
,
Q_WK_DESC
,
Q_WK_SDESC
,
Q_FRST_DT_IN_WK
,
Q_LAST_DT_IN_WK

Gap Quantisense Calendar TD

Page 83 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
Q_WK_LY
,
Q_WK_2YA
,
Q_WK_LW
,
Q_WK_2WA
,
Q_WK_3WA
,
Q_WK_4WA
,
Q_MON_ID
,
Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
,
Q_MON_LY
,
Q_MON_2YA
,
Q_QTR_ID
,
Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
,
Q_QTR_LY
,
Q_QTR_2YA
,
Q_SEA_ID
,
Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
,
Q_SEA_LY
,
Q_SEA_2YA
,
Q_YR_ID
,
Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
,
Q_YR_LY
,
Q_YR_2YA
,
CUR_WK_IND
,
PRV_WK_IND
,
LOAD_DATE
)
SELECT
S.Q_WK_ID
,
S.Q_WK_DNUM
,
S.Q_WK_DESC
,
S.Q_WK_SDESC
,
S.Q_FRST_DT_IN_WK
,
S.Q_LAST_DT_IN_WK
,
S.Q_WK_LY
,
S.Q_WK_2YA
,
S.Q_WK_LW
,
S.Q_WK_2WA
,
S.Q_WK_3WA
,
S.Q_WK_4WA
,
S.Q_MON_ID
,
P1.Q_FRST_DT_IN_MON
,
P1.Q_LAST_DT_IN_MON
,
P1.Q_MON_LY
,
P1.Q_MON_2YA
,
P1.Q_QTR_ID
,
P1.Q_FRST_DT_IN_QTR
,
P1.Q_LAST_DT_IN_QTR
,
P1.Q_QTR_LY
,
P1.Q_QTR_2YA
,
P1.Q_SEA_ID
,
P1.Q_FRST_DT_IN_SEA
,
P1.Q_LAST_DT_IN_SEA

Gap Quantisense Calendar TD

Page 84 of 161

Interface Technical Design


Gap Quantisense Calendar TD
,
,
,
,
,
,
,
,
,
,
FROM
JOIN

ETL Implementation Details

P1.Q_SEA_LY
P1.Q_SEA_2YA
P1.Q_YR_ID
P1.Q_FRST_DT_IN_YR
P1.Q_LAST_DT_IN_YR
P1.Q_YR_LY
P1.Q_YR_2YA
S.CUR_WK_IND
S.PRV_WK_IND
S.LOAD_DATE
$BASEQUANDB.E_CAL_W_CHG S
$BASEQUANDB.DW_CAL_M P1
ON
S.Q_MON_ID = P1.Q_MON_ID

WHERE
S.CHG_FLG = 'I'
;
.IF ERRORCODE <> 0 THEN .QUIT 99
END TRANSACTION;
CALL
CALL
CALL
CALL
/*
*/

SYSADMIN.COLLECTSTATS('
SYSADMIN.COLLECTSTATS('
SYSADMIN.COLLECTSTATS('
SYSADMIN.COLLECTSTATS('
Update Changes

$BASEQUANDB.DDT_CAL_W');
$BASEQUANDB.E_CAL_W_CHG');
$BASEQUANDB.DW_CAL_W');
$BASEQUANDB.DW_CAL_DT');

UPDATE $BASEQUANDB.DW_CAL_W T
SET
Q_WK_DNUM
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_DNUM
,
Q_WK_DESC
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_DESC
,
Q_WK_SDESC
=
$BASEQUANDB.E_CAL_W_CHG.Q_WK_SDESC
,
Q_FRST_DT_IN_WK
=
$BASEQUANDB.E_CAL_W_CHG.Q_FRST_DT_IN_WK
,
Q_LAST_DT_IN_WK
=
$BASEQUANDB.E_CAL_W_CHG.Q_LAST_DT_IN_WK
,
Q_WK_LY
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_LY
,
Q_WK_2YA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_2YA
,
Q_WK_LW
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_LW
,
Q_WK_2WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_2WA
,
Q_WK_3WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_3WA
,
Q_WK_4WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_4WA
,
Q_MON_ID
= $BASEQUANDB.E_CAL_W_CHG.Q_MON_ID
,
Q_FRST_DT_IN_MON
=
$BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
=
$BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_MON
,
Q_MON_LY
= $BASEQUANDB.DW_CAL_M.Q_MON_LY
,
Q_MON_2YA
= $BASEQUANDB.DW_CAL_M.Q_MON_2YA
,
Q_QTR_ID
= $BASEQUANDB.DW_CAL_M.Q_QTR_ID
,
Q_FRST_DT_IN_QTR
=
$BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
=
$BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_QTR

Gap Quantisense Calendar TD

Page 85 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
Q_QTR_LY
= $BASEQUANDB.DW_CAL_M.Q_QTR_LY
,
Q_QTR_2YA
= $BASEQUANDB.DW_CAL_M.Q_QTR_2YA
,
Q_SEA_ID
= $BASEQUANDB.DW_CAL_M.Q_SEA_ID
,
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.DW_CAL_M.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.DW_CAL_M.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.DW_CAL_M.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_M.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_M.Q_YR_2YA
,
CUR_WK_IND
= $BASEQUANDB.E_CAL_W_CHG.CUR_WK_IND
,
PRV_WK_IND
= $BASEQUANDB.E_CAL_W_CHG.CUR_WK_IND
WHERE
$BASEQUANDB.E_CAL_W_CHG.Q_WK_ID = T.Q_WK_ID
AND $BASEQUANDB.E_CAL_W_CHG.Q_MON_ID = $BASEQUANDB.DW_CAL_M.Q_MON_ID
AND $BASEQUANDB.E_CAL_W_CHG.CHG_FLG = 'X'
;
/*
*/

Update Changes in Child

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_FRST_DT_IN_WK
=
$BASEQUANDB.E_CAL_W_CHG.Q_FRST_DT_IN_WK
,
Q_LAST_DT_IN_WK
=
$BASEQUANDB.E_CAL_W_CHG.Q_LAST_DT_IN_WK
,
Q_WK_LY
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_LY
,
Q_WK_2YA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_2YA
,
Q_WK_LW
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_LW
,
Q_WK_2WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_2WA
,
Q_WK_3WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_3WA
,
Q_WK_4WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_4WA
,
Q_MON_ID
= $BASEQUANDB.E_CAL_W_CHG.Q_MON_ID
,
Q_FRST_DT_IN_MON
=
$BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
=
$BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_MON
,
Q_MON_LY
= $BASEQUANDB.DW_CAL_M.Q_MON_LY
,
Q_MON_2YA
= $BASEQUANDB.DW_CAL_M.Q_MON_2YA
,
Q_QTR_ID
= $BASEQUANDB.DW_CAL_M.Q_QTR_ID
,
Q_FRST_DT_IN_QTR
=
$BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
=
$BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_QTR
,
Q_QTR_LY
= $BASEQUANDB.DW_CAL_M.Q_QTR_LY
,
Q_QTR_2YA
= $BASEQUANDB.DW_CAL_M.Q_QTR_2YA
,
Q_SEA_ID
= $BASEQUANDB.DW_CAL_M.Q_SEA_ID
,
Q_FRST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_SEA

Gap Quantisense Calendar TD

Page 86 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
Q_LAST_DT_IN_SEA
=
$BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_SEA
,
Q_SEA_LY
= $BASEQUANDB.DW_CAL_M.Q_SEA_LY
,
Q_SEA_2YA
= $BASEQUANDB.DW_CAL_M.Q_SEA_2YA
,
Q_YR_ID
= $BASEQUANDB.DW_CAL_M.Q_YR_ID
,
Q_FRST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
=
$BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_YR
,
Q_YR_LY
= $BASEQUANDB.DW_CAL_M.Q_YR_LY
,
Q_YR_2YA
= $BASEQUANDB.DW_CAL_M.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_W_CHG.Q_WK_ID = T.Q_WK_ID
AND $BASEQUANDB.E_CAL_W_CHG.Q_MON_ID = $BASEQUANDB.DW_CAL_M.Q_MON_ID
AND $BASEQUANDB.E_CAL_W_CHG.CHG_FLG = 'X'
;

8.8.2.1

/*

PROCESSING SPECIFICS

Insert Into Staging Table

*/

DELETE FROM $BASEQUANDB.DDT_CAL_W ALL;


INSERT INTO $BASEQUANDB.DDT_CAL_W
(
Q_WK_ID
, Q_WK_DNUM
, Q_WK_DESC
, Q_WK_SDESC
, Q_FRST_DT_IN_WK
, Q_LAST_DT_IN_WK
, Q_WK_LY
, Q_WK_2YA
, Q_WK_LW
, Q_WK_2WA
, Q_WK_3WA
, Q_WK_4WA
, Q_MON_ID
, CUR_WK_IND
, PRV_WK_IND
, LOAD_DATE
)
SELECT
A.PERD_END_DT
AS Q_WK_ID
, A.PERD_END_DT
AS Q_WK_DNUM
, A.FIS_WK_FULL_DESC AS Q_WK_DESC
, A.FIS_WK_DESC
AS Q_WK_SDESC
, A.PERD_START_DT
AS Q_FRST_DT_IN_WK
, A.PERD_END_DT
AS Q_LAST_DT_IN_WK
, B.PERD_END_DT
AS Q_WK_LY
, C.PERD_END_DT
AS Q_WK_2YA
, A.PERD_END_DT - 7
AS Q_WK_LW
, A.PERD_END_DT - 14
AS Q_WK_2WA
, A.PERD_END_DT - 21
AS Q_WK_3WA
, A.PERD_END_DT - 28
AS Q_WK_4WA

Gap Quantisense Calendar TD

Page 87 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, (A.FIS_YR_NBR * 100) + A.FIS_MO_NBR


AS Q_MON_ID
, A.CUR_WK_IND AS CUR_WK_IND
, A.NXT_WK_IND AS PRV_WK_IND
, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCWD_FIS_CAL_WK_DIM A
JOIN $BASEVIEWDBF.TFCWD_FIS_CAL_WK_DIM B
ON A.LY_FIS_WK_NBR = B.FIS_WK_NBR
AND A.LY_FIS_YR_NBR = B.FIS_YR_NBR
JOIN $BASEVIEWDBF.TFCWD_FIS_CAL_WK_DIM C
ON A.LLY_FIS_WK_NBR = C.FIS_WK_NBR
AND A.LLY_FIS_YR_NBR = C.FIS_YR_NBR
WHERE A.FIS_CAL_ID = 1
AND A.FIS_CAL_RLN_TYP_CD = 5
AND A.TM_ZN_GRP_CD = 1
AND B.FIS_CAL_ID = 1
AND B.FIS_CAL_RLN_TYP_CD = 5
AND B.TM_ZN_GRP_CD = 1
AND C.FIS_CAL_ID = 1
AND C.FIS_CAL_RLN_TYP_CD = 5
AND C.TM_ZN_GRP_CD = 1
AND A.PERD_END_DT >= (SELECT YR_STRT_DT FROM $BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM WHERE
FIS_YR_NBR=EXTRACT ( YEAR FROM CURRENT_DATE)-3 GROUP BY 1)
;
/*

Detect Changes

*/

DELETE FROM $BASEQUANDB.E_CAL_W_CHG ALL;


INSERT INTO $BASEQUANDB.E_CAL_W_CHG
(
Q_WK_ID
, Q_WK_DNUM
, Q_WK_DESC
, Q_WK_SDESC
, Q_FRST_DT_IN_WK
, Q_LAST_DT_IN_WK
, Q_WK_LY
, Q_WK_2YA
, Q_WK_LW
, Q_WK_2WA
, Q_WK_3WA
, Q_WK_4WA
, Q_MON_ID
, CUR_WK_IND
, PRV_WK_IND
, LOAD_DATE
, CHG_FLG
)
SELECT
S.Q_WK_ID
, S.Q_WK_DNUM
, S.Q_WK_DESC
, S.Q_WK_SDESC
, S.Q_FRST_DT_IN_WK
, S.Q_LAST_DT_IN_WK
, S.Q_WK_LY
, S.Q_WK_2YA
, S.Q_WK_LW
, S.Q_WK_2WA

Gap Quantisense Calendar TD

Page 88 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, S.Q_WK_3WA
, S.Q_WK_4WA
, S.Q_MON_ID
, S.CUR_WK_IND
, S.PRV_WK_IND
, S.LOAD_DATE
, CASE WHEN T.Q_WK_ID IS NULL THEN 'I' ELSE 'X' END
FROM
$BASEQUANDB.DDT_CAL_W S
LEFT OUTER JOIN
$BASEQUANDB.DW_CAL_W T
ON T.Q_WK_ID
= S.Q_WK_ID
WHERE
T.Q_WK_DNUM
<> S.Q_WK_DNUM
OR T.Q_WK_DESC
<> S.Q_WK_DESC
OR T.Q_WK_SDESC
<> S.Q_WK_SDESC
OR T.Q_FRST_DT_IN_WK
<> S.Q_FRST_DT_IN_WK
OR T.Q_LAST_DT_IN_WK
<> S.Q_LAST_DT_IN_WK
OR T.Q_WK_LY
<> S.Q_WK_LY
OR T.Q_WK_2YA
<> S.Q_WK_2YA
OR T.Q_WK_LW
<> S.Q_WK_LW
OR T.Q_WK_2WA
<> S.Q_WK_2WA
OR T.Q_WK_3WA
<> S.Q_WK_3WA
OR T.Q_WK_4WA
<> S.Q_WK_4WA
OR T.Q_MON_ID
<> S.Q_MON_ID
OR T.CUR_WK_IND
<> S.CUR_WK_IND
OR T.PRV_WK_IND
<> S.PRV_WK_IND
OR T.Q_WK_ID IS NULL
;
/*

Insert Changes

*/

INSERT INTO $BASEQUANDB.DW_CAL_W


(
Q_WK_ID
, Q_WK_DNUM
, Q_WK_DESC
, Q_WK_SDESC
, Q_FRST_DT_IN_WK
, Q_LAST_DT_IN_WK
, Q_WK_LY
, Q_WK_2YA
, Q_WK_LW
, Q_WK_2WA
, Q_WK_3WA
, Q_WK_4WA
, Q_MON_ID
, Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
, Q_MON_LY
, Q_MON_2YA
, Q_QTR_ID
, Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
, Q_QTR_LY
, Q_QTR_2YA
, Q_SEA_ID
, Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
, Q_SEA_LY

Gap Quantisense Calendar TD

Page 89 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, Q_SEA_2YA
, Q_YR_ID
, Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
, Q_YR_LY
, Q_YR_2YA
, CUR_WK_IND
, PRV_WK_IND
, LOAD_DATE
)
SELECT
S.Q_WK_ID
, S.Q_WK_DNUM
, S.Q_WK_DESC
, S.Q_WK_SDESC
, S.Q_FRST_DT_IN_WK
, S.Q_LAST_DT_IN_WK
, S.Q_WK_LY
, S.Q_WK_2YA
, S.Q_WK_LW
, S.Q_WK_2WA
, S.Q_WK_3WA
, S.Q_WK_4WA
, S.Q_MON_ID
, P1.Q_FRST_DT_IN_MON
, P1.Q_LAST_DT_IN_MON
, P1.Q_MON_LY
, P1.Q_MON_2YA
, P1.Q_QTR_ID
, P1.Q_FRST_DT_IN_QTR
, P1.Q_LAST_DT_IN_QTR
, P1.Q_QTR_LY
, P1.Q_QTR_2YA
, P1.Q_SEA_ID
, P1.Q_FRST_DT_IN_SEA
, P1.Q_LAST_DT_IN_SEA
, P1.Q_SEA_LY
, P1.Q_SEA_2YA
, P1.Q_YR_ID
, P1.Q_FRST_DT_IN_YR
, P1.Q_LAST_DT_IN_YR
, P1.Q_YR_LY
, P1.Q_YR_2YA
, S.CUR_WK_IND
, S.PRV_WK_IND
, S.LOAD_DATE
FROM
$BASEQUANDB.E_CAL_W_CHG S
JOIN
$BASEQUANDB.DW_CAL_M P1
ON S.Q_MON_ID = P1.Q_MON_ID
WHERE
S.CHG_FLG = 'I'
;
/*

Update Changes

*/

UPDATE $BASEQUANDB.DW_CAL_W T
SET
Q_WK_DNUM
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_DNUM

Gap Quantisense Calendar TD

Page 90 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, Q_WK_DESC
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_DESC
, Q_WK_SDESC
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_SDESC
, Q_FRST_DT_IN_WK
= $BASEQUANDB.E_CAL_W_CHG.Q_FRST_DT_IN_WK
, Q_LAST_DT_IN_WK
= $BASEQUANDB.E_CAL_W_CHG.Q_LAST_DT_IN_WK
, Q_WK_LY
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_LY
, Q_WK_2YA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_2YA
, Q_WK_LW
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_LW
, Q_WK_2WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_2WA
, Q_WK_3WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_3WA
, Q_WK_4WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_4WA
, Q_MON_ID
= $BASEQUANDB.E_CAL_W_CHG.Q_MON_ID
, Q_FRST_DT_IN_MON
= $BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
= $BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_MON
, Q_MON_LY
= $BASEQUANDB.DW_CAL_M.Q_MON_LY
, Q_MON_2YA
= $BASEQUANDB.DW_CAL_M.Q_MON_2YA
, Q_QTR_ID
= $BASEQUANDB.DW_CAL_M.Q_QTR_ID
, Q_FRST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_QTR
, Q_QTR_LY
= $BASEQUANDB.DW_CAL_M.Q_QTR_LY
, Q_QTR_2YA
= $BASEQUANDB.DW_CAL_M.Q_QTR_2YA
, Q_SEA_ID
= $BASEQUANDB.DW_CAL_M.Q_SEA_ID
, Q_FRST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= $BASEQUANDB.DW_CAL_M.Q_SEA_LY
, Q_SEA_2YA
= $BASEQUANDB.DW_CAL_M.Q_SEA_2YA
, Q_YR_ID
= $BASEQUANDB.DW_CAL_M.Q_YR_ID
, Q_FRST_DT_IN_YR
= $BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= $BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_YR
, Q_YR_LY
= $BASEQUANDB.DW_CAL_M.Q_YR_LY
, Q_YR_2YA
= $BASEQUANDB.DW_CAL_M.Q_YR_2YA
, CUR_WK_IND
= $BASEQUANDB.E_CAL_W_CHG.CUR_WK_IND
, PRV_WK_IND
= $BASEQUANDB.E_CAL_W_CHG.CUR_WK_IND
WHERE
$BASEQUANDB.E_CAL_W_CHG.Q_WK_ID = T.Q_WK_ID
AND $BASEQUANDB.E_CAL_W_CHG.Q_MON_ID = $BASEQUANDB.DW_CAL_M.Q_MON_ID
AND $BASEQUANDB.E_CAL_W_CHG.CHG_FLG = 'X'
;
/*

Update Changes in Child

*/

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_FRST_DT_IN_WK
= $BASEQUANDB.E_CAL_W_CHG.Q_FRST_DT_IN_WK
, Q_LAST_DT_IN_WK
= $BASEQUANDB.E_CAL_W_CHG.Q_LAST_DT_IN_WK
, Q_WK_LY
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_LY
, Q_WK_2YA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_2YA
, Q_WK_LW
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_LW
, Q_WK_2WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_2WA
, Q_WK_3WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_3WA
, Q_WK_4WA
= $BASEQUANDB.E_CAL_W_CHG.Q_WK_4WA
, Q_MON_ID
= $BASEQUANDB.E_CAL_W_CHG.Q_MON_ID
, Q_FRST_DT_IN_MON
= $BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
= $BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_MON
, Q_MON_LY
= $BASEQUANDB.DW_CAL_M.Q_MON_LY
, Q_MON_2YA
= $BASEQUANDB.DW_CAL_M.Q_MON_2YA
, Q_QTR_ID
= $BASEQUANDB.DW_CAL_M.Q_QTR_ID
, Q_FRST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_QTR
, Q_QTR_LY
= $BASEQUANDB.DW_CAL_M.Q_QTR_LY
, Q_QTR_2YA
= $BASEQUANDB.DW_CAL_M.Q_QTR_2YA

Gap Quantisense Calendar TD

Page 91 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, Q_SEA_ID
= $BASEQUANDB.DW_CAL_M.Q_SEA_ID
, Q_FRST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= $BASEQUANDB.DW_CAL_M.Q_SEA_LY
, Q_SEA_2YA
= $BASEQUANDB.DW_CAL_M.Q_SEA_2YA
, Q_YR_ID
= $BASEQUANDB.DW_CAL_M.Q_YR_ID
, Q_FRST_DT_IN_YR
= $BASEQUANDB.DW_CAL_M.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= $BASEQUANDB.DW_CAL_M.Q_LAST_DT_IN_YR
, Q_YR_LY
= $BASEQUANDB.DW_CAL_M.Q_YR_LY
, Q_YR_2YA
= $BASEQUANDB.DW_CAL_M.Q_YR_2YA
WHERE
$BASEQUANDB.E_CAL_W_CHG.Q_WK_ID = T.Q_WK_ID
AND $BASEQUANDB.E_CAL_W_CHG.Q_MON_ID = $BASEQUANDB.DW_CAL_M.Q_MON_ID
AND $BASEQUANDB.E_CAL_W_CHG.CHG_FLG = 'X'
;

7.8.2 PROCESSING SPECIFICS

8.9
8.9.1.1

Processing
Steps Covered

Process P5 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements:
The source table TFCWD_FIS_CAL_WK_DIM should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

COMPONENT: PDWQ06DU_CAL_DT_ETL.BTQ
DESCRIPTION OF STAGE
Source Table

TFCDD_FIS_CAL_DT_DIM

Lookup Table

TFCWD_FIS_CAL_WK_DIM
TFCFD_FIS_CAL_FLATTENED_DIM

Target Table

DW_CAL_DT

Business Function

Extracts Date data from source table


TFCDD_FIS_CAL_DT_DIM and Detects changes and
adds/updates to the table DW_CAL_DT, and child tables.

BTEQ Steps

Gap Quantisense Calendar TD

Load the records from the table into a staging table.

Any new records or changes to existing records are


Page 92 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

loaded into an intermediate table E_CAL_DT_CHG.

Insert/update the records from E_CAL_DT_CHG into


the DW_CAL_DT.

DELETE FROM $BASEQUANDB.DDT_CAL_DT ALL;


INSERT INTO $BASEQUANDB.DDT_CAL_DT
(
Q_DT_ID
,
Q_DT_DESC
,
Q_DT_SDESC
,
Q_DAY_IN_WK_NUM
,
Q_DAY_IN_WK_DESC
,
Q_DAY_IN_WK_SDESC
,
Q_DT_1DA
,
Q_DT_LY
,
Q_DT_2YA
,
Q_DT_LW
,
Q_DT_2WA
,
Q_DT_3WA
,
Q_DT_4WA
,
Q_WK_ID
,
CUR_DY_IND
,
PRV_DY_IND
,
WTD_IND
,
MTD_IND
,
QTD_IND
,
STD_IND
,
YTD_IND
,
WTD_LY_IND
,
MTD_LY_IND
,
QTD_LY_IND
,
STD_LY_IND
,
YTD_LY_IND
,
LOAD_DATE
)
SELECT
A.FIS_CAL_DT AS Q_DT_ID
, A.FIS_CAL_DT AS Q_DT_DESC
, A.FIS_DT_DESC AS Q_DT_SDESC
, A.FIS_DY_OF_WK_NBR AS Q_DAY_IN_WK_NUM
, A.FIS_DT_FULL_DESC AS Q_DAY_IN_WK_DESC
, A.FIS_DT_DESC AS Q_DAY_IN_WK_SDESC
, A.FIS_CAL_DT - 1 AS Q_DT_1DA
, COALESCE(A.LY_FIS_CAL_DT, Date '1900-01-01') AS Q_DT_LY
, COALESCE(A.LLY_FIS_CAL_DT, Date '1900-01-01') AS Q_DT_2YA
, A.FIS_CAL_DT - 7 AS Q_DT_LW
, A.FIS_CAL_DT - 14 AS Q_DT_2WA
, A.FIS_CAL_DT - 21 AS Q_DT_3WA
, A.FIS_CAL_DT - 28 AS Q_DT_4WA
, B.PERD_END_DT AS Q_WK_ID
, A.CUR_DY_IND AS CUR_DY_IND
, A.PRV_DY_IND AS PRV_DY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_WK_IND = 1) THEN 1 ELSE 0
END AS WTD_IND
Gap Quantisense Calendar TD

Page 93 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_MO_IND = 1) THEN 1 ELSE 0


END AS MTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_QTR_IND = 1) THEN 1 ELSE 0
END AS QTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_HALF_IND = 1) THEN 1 ELSE 0
END AS STD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_YR_IND = 1) THEN 1 ELSE 0
END AS YTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_WK_IND = 1) THEN 1 ELSE 0
END AS WTD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_MO_IND = 1) THEN 1 ELSE 0
END AS MTD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_QTR_IND = 1) THEN 1 ELSE
0 END AS QTD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_HALF_IND = 1) THEN 1 ELSE
0 END AS STD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_YR_IND = 1) THEN 1 ELSE 0
END AS YTD_LY_IND
, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCDD_FIS_CAL_DT_DIM A
JOIN
$BASEVIEWDBF.TFCWD_FIS_CAL_WK_DIM B
ON
A.FIS_WK_NBR = B.FIS_WK_NBR
AND A.FIS_YR_NBR = B.FIS_YR_NBR
JOIN
$BASEVIEWDBF.TFCFD_FIS_CAL_FLATTENED_DIM C
ON A.FIS_CAL_DT = C.FIS_CAL_DT
LEFT OUTER JOIN
$BASEVIEWDBF.TFCFD_FIS_CAL_FLATTENED_DIM D
ON A.FIS_CAL_DT = D.LY_FIS_CAL_DT
JOIN
$BASEVIEWDBF.TFCDD_FIS_CAL_DT_DIM E
ON E.CUR_DY_IND = 1
WHERE A.FIS_CAL_ID = 1
AND A.FIS_CAL_RLN_TYP_CD = 5
AND A.TM_ZN_GRP_CD = 1
AND B.FIS_CAL_ID = 1
AND B.FIS_CAL_RLN_TYP_CD = 5
AND B.TM_ZN_GRP_CD = 1
AND E.FIS_CAL_ID = 1
AND E.FIS_CAL_RLN_TYP_CD = 5
AND E.TM_ZN_GRP_CD = 1
AND A.FIS_CAL_DT >= (SELECT YR_STRT_DT FROM
$BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM
WHERE FIS_YR_NBR=(SELECT FIS_YR_NBR -3 FROM
$BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM WHERE FIS_CAL_DT=CURRENT_DATE
AND TM_ZN_GRP_CD = 1 GROUP BY 1) GROUP BY 1)
;
/*

Detect Changes

*/

DELETE FROM $BASEQUANDB.E_CAL_DT_CHG ALL;


INSERT INTO $BASEQUANDB.E_CAL_DT_CHG
(

Gap Quantisense Calendar TD

Page 94 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Q_DT_ID
,
Q_DT_DESC
,
Q_DT_SDESC
,
Q_DAY_IN_WK_NUM
,
Q_DAY_IN_WK_DESC
,
Q_DAY_IN_WK_SDESC
,
Q_DT_1DA
,
Q_DT_LY
,
Q_DT_2YA
,
Q_DT_LW
,
Q_DT_2WA
,
Q_DT_3WA
,
Q_DT_4WA
,
Q_WK_ID
,
CUR_DY_IND
,
PRV_DY_IND
,
WTD_IND
,
MTD_IND
,
QTD_IND
,
STD_IND
,
YTD_IND
,
WTD_LY_IND
,
MTD_LY_IND
,
QTD_LY_IND
,
STD_LY_IND
,
YTD_LY_IND
,
LOAD_DATE
,
CHG_FLG
)
SELECT
S.Q_DT_ID
,
S.Q_DT_DESC
,
S.Q_DT_SDESC
,
S.Q_DAY_IN_WK_NUM
,
S.Q_DAY_IN_WK_DESC
,
S.Q_DAY_IN_WK_SDESC
,
S.Q_DT_1DA
,
S.Q_DT_LY
,
S.Q_DT_2YA
,
S.Q_DT_LW
,
S.Q_DT_2WA
,
S.Q_DT_3WA
,
S.Q_DT_4WA
,
S.Q_WK_ID
,
S.CUR_DY_IND
,
S.PRV_DY_IND
,
S.WTD_IND
,
S.MTD_IND
,
S.QTD_IND
,
S.STD_IND
,
S.YTD_IND
,
S.WTD_LY_IND
,
S.MTD_LY_IND
,
S.QTD_LY_IND
,
S.STD_LY_IND
,
S.YTD_LY_IND

Gap Quantisense Calendar TD

Page 95 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
S.LOAD_DATE
,
CASE WHEN T.Q_DT_ID IS NULL THEN 'I' ELSE 'X' END
FROM
$BASEQUANDB.DDT_CAL_DT S
LEFT OUTER JOIN
$BASEQUANDB.DW_CAL_DT T
ON
T.Q_DT_ID
= S.Q_DT_ID
WHERE
T.Q_DT_DESC
<> S.Q_DT_DESC
OR
T.Q_DT_SDESC
<> S.Q_DT_SDESC
OR
T.Q_DAY_IN_WK_NUM
<> S.Q_DAY_IN_WK_NUM
OR
T.Q_DAY_IN_WK_DESC
<> S.Q_DAY_IN_WK_DESC
OR
T.Q_DAY_IN_WK_SDESC
<> S.Q_DAY_IN_WK_SDESC
OR
T.Q_DT_1DA
<> S.Q_DT_1DA
OR
T.Q_DT_LY
<> S.Q_DT_LY
OR
T.Q_DT_2YA
<> S.Q_DT_2YA
OR
T.Q_DT_LW
<> S.Q_DT_LW
OR
T.Q_DT_2WA
<> S.Q_DT_2WA
OR
T.Q_DT_3WA
<> S.Q_DT_3WA
OR
T.Q_DT_4WA
<> S.Q_DT_4WA
OR
T.Q_WK_ID
<> S.Q_WK_ID
OR
T.CUR_DY_IND
<> S.CUR_DY_IND
OR
T.PRV_DY_IND
<> S.PRV_DY_IND
OR
T.WTD_IND
<> S.WTD_IND
OR
T.MTD_IND
<> S.MTD_IND
OR
T.QTD_IND
<> S.QTD_IND
OR
T.STD_IND
<> S.STD_IND
OR
T.YTD_IND
<> S.YTD_IND
OR
T.WTD_LY_IND
<> S.WTD_LY_IND
OR
T.MTD_LY_IND
<> S.MTD_LY_IND
OR
T.QTD_LY_IND
<> S.QTD_LY_IND
OR
T.STD_LY_IND
<> S.STD_LY_IND
OR
T.YTD_LY_IND
<> S.YTD_LY_IND
OR
T.Q_DT_ID IS NULL
;
/*

Insert Changes

*/

INSERT INTO $BASEQUANDB.DW_CAL_DT


(
Q_DT_ID
,
Q_DT_DESC
,
Q_DT_SDESC
,
Q_DAY_IN_WK_NUM
,
Q_DAY_IN_WK_DESC
,
Q_DAY_IN_WK_SDESC
,
Q_DT_1DA
,
Q_DT_LY
,
Q_DT_2YA
,
Q_DT_LW
,
Q_DT_2WA
,
Q_DT_3WA
,
Q_DT_4WA
,
Q_WK_ID
,
Q_FRST_DT_IN_WK
,
Q_LAST_DT_IN_WK

Gap Quantisense Calendar TD

Page 96 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
Q_WK_LY
,
Q_WK_2YA
,
Q_WK_LW
,
Q_WK_2WA
,
Q_WK_3WA
,
Q_WK_4WA
,
Q_MON_ID
,
Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
,
Q_MON_LY
,
Q_MON_2YA
,
Q_QTR_ID
,
Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
,
Q_QTR_LY
,
Q_QTR_2YA
,
Q_SEA_ID
,
Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
,
Q_SEA_LY
,
Q_SEA_2YA
,
Q_YR_ID
,
Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
,
Q_YR_LY
,
Q_YR_2YA
,
CUR_DY_IND
,
PRV_DY_IND
,
WTD_IND
,
MTD_IND
,
QTD_IND
,
STD_IND
,
YTD_IND
,
WTD_LY_IND
,
MTD_LY_IND
,
QTD_LY_IND
,
STD_LY_IND
,
YTD_LY_IND
,
LOAD_DATE
)
SELECT
S.Q_DT_ID
,
S.Q_DT_DESC
,
S.Q_DT_SDESC
,
S.Q_DAY_IN_WK_NUM
,
S.Q_DAY_IN_WK_DESC
,
S.Q_DAY_IN_WK_SDESC
,
S.Q_DT_1DA
,
S.Q_DT_LY
,
S.Q_DT_2YA
,
S.Q_DT_LW
,
S.Q_DT_2WA
,
S.Q_DT_3WA
,
S.Q_DT_4WA
,
S.Q_WK_ID
,
P1.Q_FRST_DT_IN_WK

Gap Quantisense Calendar TD

Page 97 of 161

Interface Technical Design


Gap Quantisense Calendar TD
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
FROM
JOIN

ETL Implementation Details

P1.Q_LAST_DT_IN_WK
P1.Q_WK_LY
P1.Q_WK_2YA
P1.Q_WK_LW
P1.Q_WK_2WA
P1.Q_WK_3WA
P1.Q_WK_4WA
P1.Q_MON_ID
P1.Q_FRST_DT_IN_MON
P1.Q_LAST_DT_IN_MON
P1.Q_MON_LY
P1.Q_MON_2YA
P1.Q_QTR_ID
P1.Q_FRST_DT_IN_QTR
P1.Q_LAST_DT_IN_QTR
P1.Q_QTR_LY
P1.Q_QTR_2YA
P1.Q_SEA_ID
P1.Q_FRST_DT_IN_SEA
P1.Q_LAST_DT_IN_SEA
P1.Q_SEA_LY
P1.Q_SEA_2YA
P1.Q_YR_ID
P1.Q_FRST_DT_IN_YR
P1.Q_LAST_DT_IN_YR
P1.Q_YR_LY
P1.Q_YR_2YA
S.CUR_DY_IND
S.PRV_DY_IND
S.WTD_IND
S.MTD_IND
S.QTD_IND
S.STD_IND
S.YTD_IND
S.WTD_LY_IND
S.MTD_LY_IND
S.QTD_LY_IND
S.STD_LY_IND
S.YTD_LY_IND
S.LOAD_DATE
$BASEQUANDB.E_CAL_DT_CHG S
$BASEQUANDB.DW_CAL_W P1
ON
S.Q_WK_ID = P1.Q_WK_ID

WHERE
S.CHG_FLG = 'I'
;
/*

Update Changes

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_DT_DESC
,
Q_DT_SDESC
,
Q_DAY_IN_WK_NUM

Gap Quantisense Calendar TD

*/

=
=
=

$BASEQUANDB.E_CAL_DT_CHG.Q_DT_DESC
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_SDESC
$BASEQUANDB.E_CAL_DT_CHG.Q_DAY_IN_WK_NUM

Page 98 of 161

Interface Technical Design


Gap Quantisense Calendar TD
,
Q_DAY_IN_WK_DESC
=
,
Q_DAY_IN_WK_SDESC
=
,
Q_DT_1DA
=
,
Q_DT_LY
=
,
Q_DT_2YA
=
,
Q_DT_LW
=
,
Q_DT_2WA
=
,
Q_DT_3WA
=
,
Q_DT_4WA
=
,
Q_WK_ID
=
,
Q_FRST_DT_IN_WK
=
,
Q_LAST_DT_IN_WK
=
,
Q_WK_LY
=
,
Q_WK_2YA
=
,
Q_WK_LW
=
,
Q_WK_2WA
=
,
Q_WK_3WA
=
,
Q_WK_4WA
=
,
Q_MON_ID
=
,
Q_FRST_DT_IN_MON
=
,
Q_LAST_DT_IN_MON
=
,
Q_MON_LY
=
,
Q_MON_2YA
=
,
Q_QTR_ID
=
,
Q_FRST_DT_IN_QTR
=
,
Q_LAST_DT_IN_QTR
=
,
Q_QTR_LY
=
,
Q_QTR_2YA
=
,
Q_SEA_ID
=
,
Q_FRST_DT_IN_SEA
=
,
Q_LAST_DT_IN_SEA
=
,
Q_SEA_LY
=
,
Q_SEA_2YA
=
,
Q_YR_ID
=
,
Q_FRST_DT_IN_YR
=
,
Q_LAST_DT_IN_YR
=
,
Q_YR_LY
=
,
Q_YR_2YA
=
,
CUR_DY_IND
=
,
PRV_DY_IND
=
,
WTD_IND
=
,
MTD_IND
=
,
QTD_IND
=
,
STD_IND
=
,
YTD_IND
=
,
WTD_LY_IND
=
,
MTD_LY_IND
=
,
QTD_LY_IND
=
,
STD_LY_IND
=
,
YTD_LY_IND
=
WHERE
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_ID
AND $BASEQUANDB.E_CAL_DT_CHG.Q_WK_ID
AND $BASEQUANDB.E_CAL_DT_CHG.CHG_FLG
;

Gap Quantisense Calendar TD

ETL Implementation Details

$BASEQUANDB.E_CAL_DT_CHG.Q_DAY_IN_WK_DESC
$BASEQUANDB.E_CAL_DT_CHG.Q_DAY_IN_WK_SDESC
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_1DA
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_LY
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_2YA
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_LW
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_2WA
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_3WA
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_4WA
$BASEQUANDB.E_CAL_DT_CHG.Q_WK_ID
$BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_WK
$BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_WK
$BASEQUANDB.DW_CAL_W.Q_WK_LY
$BASEQUANDB.DW_CAL_W.Q_WK_2YA
$BASEQUANDB.DW_CAL_W.Q_WK_LW
$BASEQUANDB.DW_CAL_W.Q_WK_2WA
$BASEQUANDB.DW_CAL_W.Q_WK_3WA
$BASEQUANDB.DW_CAL_W.Q_WK_4WA
$BASEQUANDB.DW_CAL_W.Q_MON_ID
$BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_MON
$BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_MON
$BASEQUANDB.DW_CAL_W.Q_MON_LY
$BASEQUANDB.DW_CAL_W.Q_MON_2YA
$BASEQUANDB.DW_CAL_W.Q_QTR_ID
$BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_QTR
$BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_QTR
$BASEQUANDB.DW_CAL_W.Q_QTR_LY
$BASEQUANDB.DW_CAL_W.Q_QTR_2YA
$BASEQUANDB.DW_CAL_W.Q_SEA_ID
$BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_SEA
$BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_SEA
$BASEQUANDB.DW_CAL_W.Q_SEA_LY
$BASEQUANDB.DW_CAL_W.Q_SEA_2YA
$BASEQUANDB.DW_CAL_W.Q_YR_ID
$BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_YR
$BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_YR
$BASEQUANDB.DW_CAL_W.Q_YR_LY
$BASEQUANDB.DW_CAL_W.Q_YR_2YA
$BASEQUANDB.E_CAL_DT_CHG.CUR_DY_IND
$BASEQUANDB.E_CAL_DT_CHG.PRV_DY_IND
$BASEQUANDB.E_CAL_DT_CHG.WTD_IND
$BASEQUANDB.E_CAL_DT_CHG.MTD_IND
$BASEQUANDB.E_CAL_DT_CHG.QTD_IND
$BASEQUANDB.E_CAL_DT_CHG.STD_IND
$BASEQUANDB.E_CAL_DT_CHG.YTD_IND
$BASEQUANDB.E_CAL_DT_CHG.WTD_LY_IND
$BASEQUANDB.E_CAL_DT_CHG.MTD_LY_IND
$BASEQUANDB.E_CAL_DT_CHG.QTD_LY_IND
$BASEQUANDB.E_CAL_DT_CHG.STD_LY_IND
$BASEQUANDB.E_CAL_DT_CHG.YTD_LY_IND
= T.Q_DT_ID
= $BASEQUANDB.DW_CAL_W.Q_WK_ID
= 'X'

Page 99 of 161

Interface Technical Design


Gap Quantisense Calendar TD

8.9.1.2

ETL Implementation Details

PROCESSING SPECIFCS

Processing
Steps Covered

Process P6 in FD is implemented in this job.

7.9.1 DESCRIPTION OF STAGES


Source Table

TFCDD_FIS_CAL_DT_DIM

Lookup Table

TFCWD_FIS_CAL_WK_DIM
TFCFD_FIS_CAL_FLATTENED_DIM

Target Table

DW_CAL_DT

Business Function

Extracts Date data from source table


TFCDD_FIS_CAL_DT_DIM and Detects changes and
adds/updates to the table DW_CAL_DT, and child tables.

BTEQ Steps

/*

Insert Into Staging Table

Load the records from the table into a staging table.

Any new records or changes to existing records are


loaded into an intermediate table E_CAL_DT_CHG.

Insert/update the records from E_CAL_DT_CHG into


the DW_CAL_DT.

*/

DELETE FROM $BASEQUANDB.DDT_CAL_DT ALL;


INSERT INTO $BASEQUANDB.DDT_CAL_DT
(
Q_DT_ID
, Q_DT_DESC
, Q_DT_SDESC
, Q_DAY_IN_WK_NUM
, Q_DAY_IN_WK_DESC
, Q_DAY_IN_WK_SDESC
, Q_DT_1DA
, Q_DT_LY
, Q_DT_2YA
, Q_DT_LW
, Q_DT_2WA
, Q_DT_3WA
, Q_DT_4WA
, Q_WK_ID
, CUR_DY_IND
, PRV_DY_IND
, WTD_IND
, MTD_IND
, QTD_IND

Gap Quantisense Calendar TD

Page 100 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, STD_IND
, YTD_IND
, WTD_LY_IND
, MTD_LY_IND
, QTD_LY_IND
, STD_LY_IND
, YTD_LY_IND
, LOAD_DATE
)
SELECT
A.FIS_CAL_DT AS Q_DT_ID
, A.FIS_CAL_DT AS Q_DT_DESC
, A.FIS_DT_DESC AS Q_DT_SDESC
, A.FIS_DY_OF_WK_NBR AS Q_DAY_IN_WK_NUM
, A.FIS_DT_FULL_DESC AS Q_DAY_IN_WK_DESC
, A.FIS_DT_DESC AS Q_DAY_IN_WK_SDESC
, A.FIS_CAL_DT - 1 AS Q_DT_1DA
, COALESCE(A.LY_FIS_CAL_DT, Date '1900-01-01') AS Q_DT_LY
, COALESCE(A.LLY_FIS_CAL_DT, Date '1900-01-01') AS Q_DT_2YA
, A.FIS_CAL_DT - 7 AS Q_DT_LW
, A.FIS_CAL_DT - 14 AS Q_DT_2WA
, A.FIS_CAL_DT - 21 AS Q_DT_3WA
, A.FIS_CAL_DT - 28 AS Q_DT_4WA
, B.PERD_END_DT AS Q_WK_ID
, A.CUR_DY_IND AS CUR_DY_IND
, A.PRV_DY_IND AS PRV_DY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_WK_IND = 1) THEN 1 ELSE 0 END AS WTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_MO_IND = 1) THEN 1 ELSE 0 END AS MTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_QTR_IND = 1) THEN 1 ELSE 0 END AS QTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_HALF_IND = 1) THEN 1 ELSE 0 END AS STD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_YR_IND = 1) THEN 1 ELSE 0 END AS YTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_WK_IND = 1) THEN 1 ELSE 0 END AS WTD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_MO_IND = 1) THEN 1 ELSE 0 END AS MTD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_QTR_IND = 1) THEN 1 ELSE 0 END AS QTD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_HALF_IND = 1) THEN 1 ELSE 0 END AS STD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_YR_IND = 1) THEN 1 ELSE 0 END AS YTD_LY_IND
, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCDD_FIS_CAL_DT_DIM A
JOIN
$BASEVIEWDBF.TFCWD_FIS_CAL_WK_DIM B
ON A.FIS_WK_NBR = B.FIS_WK_NBR
AND A.FIS_YR_NBR = B.FIS_YR_NBR
JOIN
$BASEVIEWDBF.TFCFD_FIS_CAL_FLATTENED_DIM C
ON A.FIS_CAL_DT = C.FIS_CAL_DT
LEFT OUTER JOIN
$BASEVIEWDBF.TFCFD_FIS_CAL_FLATTENED_DIM D
ON A.FIS_CAL_DT = D.LY_FIS_CAL_DT
JOIN
$BASEVIEWDBF.TFCDD_FIS_CAL_DT_DIM E
ON E.CUR_DY_IND = 1
WHERE A.FIS_CAL_ID = 1
AND A.FIS_CAL_RLN_TYP_CD = 5
AND A.TM_ZN_GRP_CD = 1
AND B.FIS_CAL_ID = 1
AND B.FIS_CAL_RLN_TYP_CD = 5
AND B.TM_ZN_GRP_CD = 1
AND E.FIS_CAL_ID = 1
AND E.FIS_CAL_RLN_TYP_CD = 5
AND E.TM_ZN_GRP_CD = 1

Gap Quantisense Calendar TD

Page 101 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

AND A.FIS_CAL_DT >= (SELECT YR_STRT_DT FROM $BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM WHERE


FIS_YR_NBR=EXTRACT (YEAR FROM CURRENT_DATE)-3 GROUP BY 1)
;
/*

Detect Changes

*/

DELETE FROM $BASEQUANDB.E_CAL_DT_CHG ALL;


INSERT INTO $BASEQUANDB.E_CAL_DT_CHG
(
Q_DT_ID
, Q_DT_DESC
, Q_DT_SDESC
, Q_DAY_IN_WK_NUM
, Q_DAY_IN_WK_DESC
, Q_DAY_IN_WK_SDESC
, Q_DT_1DA
, Q_DT_LY
, Q_DT_2YA
, Q_DT_LW
, Q_DT_2WA
, Q_DT_3WA
, Q_DT_4WA
, Q_WK_ID
, CUR_DY_IND
, PRV_DY_IND
, WTD_IND
, MTD_IND
, QTD_IND
, STD_IND
, YTD_IND
, WTD_LY_IND
, MTD_LY_IND
, QTD_LY_IND
, STD_LY_IND
, YTD_LY_IND
, LOAD_DATE
, CHG_FLG
)
SELECT
S.Q_DT_ID
, S.Q_DT_DESC
, S.Q_DT_SDESC
, S.Q_DAY_IN_WK_NUM
, S.Q_DAY_IN_WK_DESC
, S.Q_DAY_IN_WK_SDESC
, S.Q_DT_1DA
, S.Q_DT_LY
, S.Q_DT_2YA
, S.Q_DT_LW
, S.Q_DT_2WA
, S.Q_DT_3WA
, S.Q_DT_4WA
, S.Q_WK_ID
, S.CUR_DY_IND
, S.PRV_DY_IND
, S.WTD_IND
, S.MTD_IND
, S.QTD_IND
, S.STD_IND

Gap Quantisense Calendar TD

Page 102 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, S.YTD_IND
, S.WTD_LY_IND
, S.MTD_LY_IND
, S.QTD_LY_IND
, S.STD_LY_IND
, S.YTD_LY_IND
, S.LOAD_DATE
, CASE WHEN T.Q_DT_ID IS NULL THEN 'I' ELSE 'X' END
FROM
$BASEQUANDB.DDT_CAL_DT S
LEFT OUTER JOIN
$BASEQUANDB.DW_CAL_DT T
ON T.Q_DT_ID
= S.Q_DT_ID
WHERE
T.Q_DT_DESC
<> S.Q_DT_DESC
OR T.Q_DT_SDESC
<> S.Q_DT_SDESC
OR T.Q_DAY_IN_WK_NUM
<> S.Q_DAY_IN_WK_NUM
OR T.Q_DAY_IN_WK_DESC
<> S.Q_DAY_IN_WK_DESC
OR T.Q_DAY_IN_WK_SDESC
<> S.Q_DAY_IN_WK_SDESC
OR T.Q_DT_1DA
<> S.Q_DT_1DA
OR T.Q_DT_LY
<> S.Q_DT_LY
OR T.Q_DT_2YA
<> S.Q_DT_2YA
OR T.Q_DT_LW
<> S.Q_DT_LW
OR T.Q_DT_2WA
<> S.Q_DT_2WA
OR T.Q_DT_3WA
<> S.Q_DT_3WA
OR T.Q_DT_4WA
<> S.Q_DT_4WA
OR T.Q_WK_ID
<> S.Q_WK_ID
OR T.CUR_DY_IND
<> S.CUR_DY_IND
OR T.PRV_DY_IND
<> S.PRV_DY_IND
OR T.WTD_IND
<> S.WTD_IND
OR T.MTD_IND
<> S.MTD_IND
OR T.QTD_IND
<> S.QTD_IND
OR T.STD_IND
<> S.STD_IND
OR T.YTD_IND
<> S.YTD_IND
OR T.WTD_LY_IND
<> S.WTD_LY_IND
OR T.MTD_LY_IND
<> S.MTD_LY_IND
OR T.QTD_LY_IND
<> S.QTD_LY_IND
OR T.STD_LY_IND
<> S.STD_LY_IND
OR T.YTD_LY_IND
<> S.YTD_LY_IND
OR T.Q_DT_ID IS NULL
;
/*

Insert Changes

*/

INSERT INTO $BASEQUANDB.DW_CAL_DT


(
Q_DT_ID
, Q_DT_DESC
, Q_DT_SDESC
, Q_DAY_IN_WK_NUM
, Q_DAY_IN_WK_DESC
, Q_DAY_IN_WK_SDESC
, Q_DT_1DA
, Q_DT_LY
, Q_DT_2YA
, Q_DT_LW
, Q_DT_2WA
, Q_DT_3WA
, Q_DT_4WA
, Q_WK_ID

Gap Quantisense Calendar TD

Page 103 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, Q_FRST_DT_IN_WK
, Q_LAST_DT_IN_WK
, Q_WK_LY
, Q_WK_2YA
, Q_WK_LW
, Q_WK_2WA
, Q_WK_3WA
, Q_WK_4WA
, Q_MON_ID
, Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
, Q_MON_LY
, Q_MON_2YA
, Q_QTR_ID
, Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
, Q_QTR_LY
, Q_QTR_2YA
, Q_SEA_ID
, Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
, Q_SEA_LY
, Q_SEA_2YA
, Q_YR_ID
, Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
, Q_YR_LY
, Q_YR_2YA
, FRST_DT_IN_YR_IND
, CUR_DY_IND
, PRV_DY_IND
, WTD_IND
, MTD_IND
, QTD_IND
, STD_IND
, YTD_IND
, WTD_LY_IND
, MTD_LY_IND
, QTD_LY_IND
, STD_LY_IND
, YTD_LY_IND
, LOAD_DATE
)
SELECT
S.Q_DT_ID
, S.Q_DT_DESC
, S.Q_DT_SDESC
, S.Q_DAY_IN_WK_NUM
, S.Q_DAY_IN_WK_DESC
, S.Q_DAY_IN_WK_SDESC
, S.Q_DT_1DA
, S.Q_DT_LY
, S.Q_DT_2YA
, S.Q_DT_LW
, S.Q_DT_2WA
, S.Q_DT_3WA
, S.Q_DT_4WA
, S.Q_WK_ID
, P1.Q_FRST_DT_IN_WK
, P1.Q_LAST_DT_IN_WK
, P1.Q_WK_LY

Gap Quantisense Calendar TD

Page 104 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, P1.Q_WK_2YA
, P1.Q_WK_LW
, P1.Q_WK_2WA
, P1.Q_WK_3WA
, P1.Q_WK_4WA
, P1.Q_MON_ID
, P1.Q_FRST_DT_IN_MON
, P1.Q_LAST_DT_IN_MON
, P1.Q_MON_LY
, P1.Q_MON_2YA
, P1.Q_QTR_ID
, P1.Q_FRST_DT_IN_QTR
, P1.Q_LAST_DT_IN_QTR
, P1.Q_QTR_LY
, P1.Q_QTR_2YA
, P1.Q_SEA_ID
, P1.Q_FRST_DT_IN_SEA
, P1.Q_LAST_DT_IN_SEA
, P1.Q_SEA_LY
, P1.Q_SEA_2YA
, P1.Q_YR_ID
, P1.Q_FRST_DT_IN_YR
, P1.Q_LAST_DT_IN_YR
, P1.Q_YR_LY
, P1.Q_YR_2YA
, CASE WHEN S.Q_DT_ID = P1.Q_FRST_DT_IN_YR THEN 1 ELSE 0 END AS FRST_DT_IN_YR_IND
, S.CUR_DY_IND
, S.PRV_DY_IND
, S.WTD_IND
, S.MTD_IND
, S.QTD_IND
, S.STD_IND
, S.YTD_IND
, S.WTD_LY_IND
, S.MTD_LY_IND
, S.QTD_LY_IND
, S.STD_LY_IND
, S.YTD_LY_IND
, S.LOAD_DATE
FROM
$BASEQUANDB.E_CAL_DT_CHG S
JOIN
$BASEQUANDB.DW_CAL_W P1
ON S.Q_WK_ID = P1.Q_WK_ID
WHERE
S.CHG_FLG = 'I'
;
/*

Update Changes

*/

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_DT_DESC
= $BASEQUANDB.E_CAL_DT_CHG.Q_DT_DESC
, Q_DT_SDESC
= $BASEQUANDB.E_CAL_DT_CHG.Q_DT_SDESC
, Q_DAY_IN_WK_NUM
= $BASEQUANDB.E_CAL_DT_CHG.Q_DAY_IN_WK_NUM
, Q_DAY_IN_WK_DESC
= $BASEQUANDB.E_CAL_DT_CHG.Q_DAY_IN_WK_DESC
, Q_DAY_IN_WK_SDESC
= $BASEQUANDB.E_CAL_DT_CHG.Q_DAY_IN_WK_SDESC
, Q_DT_1DA
= $BASEQUANDB.E_CAL_DT_CHG.Q_DT_1DA
, Q_DT_LY
= $BASEQUANDB.E_CAL_DT_CHG.Q_DT_LY
, Q_DT_2YA
= $BASEQUANDB.E_CAL_DT_CHG.Q_DT_2YA

Gap Quantisense Calendar TD

Page 105 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

, Q_DT_LW
= $BASEQUANDB.E_CAL_DT_CHG.Q_DT_LW
, Q_DT_2WA
= $BASEQUANDB.E_CAL_DT_CHG.Q_DT_2WA
, Q_DT_3WA
= $BASEQUANDB.E_CAL_DT_CHG.Q_DT_3WA
, Q_DT_4WA
= $BASEQUANDB.E_CAL_DT_CHG.Q_DT_4WA
, Q_WK_ID
= $BASEQUANDB.E_CAL_DT_CHG.Q_WK_ID
, Q_FRST_DT_IN_WK
= $BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_WK
, Q_LAST_DT_IN_WK
= $BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_WK
, Q_WK_LY
= $BASEQUANDB.DW_CAL_W.Q_WK_LY
, Q_WK_2YA
= $BASEQUANDB.DW_CAL_W.Q_WK_2YA
, Q_WK_LW
= $BASEQUANDB.DW_CAL_W.Q_WK_LW
, Q_WK_2WA
= $BASEQUANDB.DW_CAL_W.Q_WK_2WA
, Q_WK_3WA
= $BASEQUANDB.DW_CAL_W.Q_WK_3WA
, Q_WK_4WA
= $BASEQUANDB.DW_CAL_W.Q_WK_4WA
, Q_MON_ID
= $BASEQUANDB.DW_CAL_W.Q_MON_ID
, Q_FRST_DT_IN_MON
= $BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_MON
, Q_LAST_DT_IN_MON
= $BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_MON
, Q_MON_LY
= $BASEQUANDB.DW_CAL_W.Q_MON_LY
, Q_MON_2YA
= $BASEQUANDB.DW_CAL_W.Q_MON_2YA
, Q_QTR_ID
= $BASEQUANDB.DW_CAL_W.Q_QTR_ID
, Q_FRST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_QTR
, Q_LAST_DT_IN_QTR
= $BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_QTR
, Q_QTR_LY
= $BASEQUANDB.DW_CAL_W.Q_QTR_LY
, Q_QTR_2YA
= $BASEQUANDB.DW_CAL_W.Q_QTR_2YA
, Q_SEA_ID
= $BASEQUANDB.DW_CAL_W.Q_SEA_ID
, Q_FRST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_SEA
, Q_LAST_DT_IN_SEA
= $BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_SEA
, Q_SEA_LY
= $BASEQUANDB.DW_CAL_W.Q_SEA_LY
, Q_SEA_2YA
= $BASEQUANDB.DW_CAL_W.Q_SEA_2YA
, Q_YR_ID
= $BASEQUANDB.DW_CAL_W.Q_YR_ID
, Q_FRST_DT_IN_YR
= $BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_YR
, Q_LAST_DT_IN_YR
= $BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_YR
, Q_YR_LY
= $BASEQUANDB.DW_CAL_W.Q_YR_LY
, Q_YR_2YA
= $BASEQUANDB.DW_CAL_W.Q_YR_2YA
, CUR_DY_IND
= $BASEQUANDB.E_CAL_DT_CHG.CUR_DY_IND
, PRV_DY_IND
= $BASEQUANDB.E_CAL_DT_CHG.PRV_DY_IND
, WTD_IND
= $BASEQUANDB.E_CAL_DT_CHG.WTD_IND
, MTD_IND
= $BASEQUANDB.E_CAL_DT_CHG.MTD_IND
, QTD_IND
= $BASEQUANDB.E_CAL_DT_CHG.QTD_IND
, STD_IND
= $BASEQUANDB.E_CAL_DT_CHG.STD_IND
, YTD_IND
= $BASEQUANDB.E_CAL_DT_CHG.YTD_IND
, WTD_LY_IND
= $BASEQUANDB.E_CAL_DT_CHG.WTD_LY_IND
, MTD_LY_IND
= $BASEQUANDB.E_CAL_DT_CHG.MTD_LY_IND
, QTD_LY_IND
= $BASEQUANDB.E_CAL_DT_CHG.QTD_LY_IND
, STD_LY_IND
= $BASEQUANDB.E_CAL_DT_CHG.STD_LY_IND
, YTD_LY_IND
= $BASEQUANDB.E_CAL_DT_CHG.YTD_LY_IND
WHERE
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_ID = T.Q_DT_ID
AND $BASEQUANDB.E_CAL_DT_CHG.Q_WK_ID = $BASEQUANDB.DW_CAL_W.Q_WK_ID
AND $BASEQUANDB.E_CAL_DT_CHG.CHG_FLG = 'X'
;

Gap Quantisense Calendar TD

Page 106 of 161

Interface Technical Design


Gap Quantisense Calendar TD

7.9.2

ETL Implementation Details

PROCESSING SPECIFICS
Processing
Steps Covered

Process P6 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements: The source table


TFCDD_FIS_CAL_DT_DIM should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

8.10

PDWQ07DU_CAL_4W8W_ETL.BTQ

8.10.1.1 7.10.1

Description of stages:

Source Table

DW_CAL_W

Target Table

DW_CAL_W_L4W, DW_CAL_W_L8W,
DW_CAL_W_N4W, DW_CAL_W_LY_N4W

Business Function

Extracts week data from source table DW_CAL_W


and loads into the tables DW_CAL_W_L4W,
DW_CAL_W_L8W, DW_CAL_W_N4W,
DW_CAL_W_LY_N4W.

BTEQ Steps

Gap Quantisense Calendar TD

Truncates and Loads the week and the


corresponding last 4 weeks in the
DW_CAL_W_L4W from DW_CAT_W.

Truncates and Loads the week and the


corresponding last 8 weeks in the
DW_CAL_W_L8W from DW_CAT_W.

Truncates and Loads the week and the


corresponding next 4 weeks in the
DW_CAL_W_N4W from DW_CAT_W.

Truncates and Loads the week and the


corresponding next 4 weeks as of last year in
the DW_CAL_W_LY_N4W from DW_CAT_W.

Page 107 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

DELETE FROM $BASEQUANDB.DW_CAL_W_L4W ALL;


INSERT INTO $BASEQUANDB.DW_CAL_W_L4W
(
Q_WK_ID
,
Q_WK_L4W
)
SELECT
A.Q_WK_ID
AS Q_WK_ID
,
B.Q_WK_ID
AS Q_WK_L4W
FROM
$BASEQUANDB.DW_CAL_W A
JOIN
$BASEQUANDB.DW_CAL_W B
ON
B.Q_WK_ID BETWEEN A.Q_WK_ID - 21 AND A.Q_WK_ID
;
/* Populate DW Table for Last 8 Weeks

*/

DELETE FROM $BASEQUANDB.DW_CAL_W_L8W ALL;


INSERT INTO $BASEQUANDB.DW_CAL_W_L8W
(
Q_WK_ID
,
Q_WK_L8W
)
SELECT
A.Q_WK_ID
AS Q_WK_ID
,
B.Q_WK_ID
AS Q_WK_L8W
FROM
$BASEQUANDB.DW_CAL_W A
JOIN
$BASEQUANDB.DW_CAL_W B
ON
B.Q_WK_ID BETWEEN A.Q_WK_ID - 49 AND A.Q_WK_ID
;
/* Populate DW Table for Next 4 Weeks

*/

DELETE FROM $BASEQUANDB.DW_CAL_W_N4W ALL;


INSERT INTO $BASEQUANDB.DW_CAL_W_N4W
(
Q_WK_ID
,
Q_WK_N4W
)
SELECT
A.Q_WK_ID
AS Q_WK_ID
,
B.Q_WK_ID
AS Q_WK_N4W
FROM
$BASEQUANDB.DW_CAL_W A
JOIN
$BASEQUANDB.DW_CAL_W B
ON
B.Q_WK_ID BETWEEN A.Q_WK_ID AND A.Q_WK_ID + 21
;

Gap Quantisense Calendar TD

Page 108 of 161

Interface Technical Design


Gap Quantisense Calendar TD
/* Populate DW Table

ETL Implementation Details

last Year Next 4 Weeks

*/

DELETE FROM $BASEQUANDB.DW_CAL_W_LY_N4W ALL;


INSERT INTO $BASEQUANDB.DW_CAL_W_LY_N4W
(
Q_WK_ID
,
Q_WK_LYN4W
)
SELECT
A.Q_WK_ID
AS Q_WK_ID
,
B.Q_WK_ID
AS Q_WK_LYN4W
FROM
$BASEQUANDB.DW_CAL_W A
JOIN
$BASEQUANDB.DW_CAL_W B
ON
B.Q_WK_ID BETWEEN A.Q_WK_LY AND A.Q_WK_LY + 21
;

8.10.1.2

PROCESSING SPECIFIC

/* Populate DW Table for Last 4 Weeks

*/

DELETE FROM $BASEQUANDB.DW_CAL_W_L4W ALL;


INSERT INTO $BASEQUANDB.DW_CAL_W_L4W
(
Q_WK_ID
, Q_WK_L4W
)
SELECT
A.Q_WK_ID AS Q_WK_ID
, B.Q_WK_ID AS Q_WK_L4W
FROM
$BASEQUANDB.DW_CAL_W A
JOIN
$BASEQUANDB.DW_CAL_W B
ON B.Q_WK_ID BETWEEN A.Q_WK_ID - 21 AND A.Q_WK_ID
;
/* Populate DW Table for Last 8 Weeks

*/

DELETE FROM $BASEQUANDB.DW_CAL_W_L8W ALL;


INSERT INTO $BASEQUANDB.DW_CAL_W_L8W

Gap Quantisense Calendar TD

Page 109 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

(
Q_WK_ID
, Q_WK_L8W
)
SELECT
A.Q_WK_ID AS Q_WK_ID
, B.Q_WK_ID AS Q_WK_L8W
FROM
$BASEQUANDB.DW_CAL_W A
JOIN
$BASEQUANDB.DW_CAL_W B
ON B.Q_WK_ID BETWEEN A.Q_WK_ID - 49 AND A.Q_WK_ID
;
/* Populate DW Table for Next 4 Weeks

*/

DELETE FROM $BASEQUANDB.DW_CAL_W_N4W ALL;


INSERT INTO $BASEQUANDB.DW_CAL_W_N4W
(
Q_WK_ID
, Q_WK_N4W
)
SELECT
A.Q_WK_ID AS Q_WK_ID
, B.Q_WK_ID AS Q_WK_N4W
FROM
$BASEQUANDB.DW_CAL_W A
JOIN
$BASEQUANDB.DW_CAL_W B
ON B.Q_WK_ID BETWEEN A.Q_WK_ID AND A.Q_WK_ID + 21
;

/* Populate DW Table last Year Next 4 Weeks

*/

DELETE FROM $BASEQUANDB.DW_CAL_W_LY_N4W ALL;


INSERT INTO $BASEQUANDB.DW_CAL_W_LY_N4W
(
Q_WK_ID
, Q_WK_LYN4W
)
SELECT
A.Q_WK_ID AS Q_WK_ID
, B.Q_WK_ID AS Q_WK_LYN4W
FROM
$BASEQUANDB.DW_CAL_W A
JOIN
$BASEQUANDB.DW_CAL_W B
ON B.Q_WK_ID BETWEEN A.Q_WK_LY AND A.Q_WK_LY + 21
;

Gap Quantisense Calendar TD

Page 110 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

7.10.2 PROCESSING SPECIFICS


Processing
Steps Covered

Process P6 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements: The source table DW_CAL_W should be


loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

8.11 COMPONENT: PDWQ06DU_CAL_DT_ETL.BTQ


8.11.1.1 DESCRIPTION OF STAGE
Source Table

TFCDD_FIS_CAL_DT_DIM

Lookup Table

TFCWD_FIS_CAL_WK_DIM
TFCFD_FIS_CAL_FLATTENED_DIM

Target Table

DW_CAL_DT

Business Function

Extracts Date data from source table


TFCDD_FIS_CAL_DT_DIM and Detects changes and
adds/updates to the table DW_CAL_DT, and child tables.

BTEQ Steps

Gap Quantisense Calendar TD

Load the records from the table into a staging table.

Any new records or changes to existing records are


loaded into an intermediate table E_CAL_DT_CHG.

Insert/update the records from E_CAL_DT_CHG into


the DW_CAL_DT.

Page 111 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

DELETE FROM $BASEQUANDB.DDT_CAL_DT ALL;


INSERT INTO $BASEQUANDB.DDT_CAL_DT
(
Q_DT_ID
,
Q_DT_DESC
,
Q_DT_SDESC
,
Q_DAY_IN_WK_NUM
,
Q_DAY_IN_WK_DESC
,
Q_DAY_IN_WK_SDESC
,
Q_DT_1DA
,
Q_DT_LY
,
Q_DT_2YA
,
Q_DT_LW
,
Q_DT_2WA
,
Q_DT_3WA
,
Q_DT_4WA
,
Q_WK_ID
,
CUR_DY_IND
,
PRV_DY_IND
,
WTD_IND
,
MTD_IND
,
QTD_IND
,
STD_IND
,
YTD_IND
,
WTD_LY_IND
,
MTD_LY_IND
,
QTD_LY_IND
,
STD_LY_IND
,
YTD_LY_IND
,
LOAD_DATE
)
SELECT
A.FIS_CAL_DT AS Q_DT_ID
, A.FIS_CAL_DT AS Q_DT_DESC
, A.FIS_DT_DESC AS Q_DT_SDESC
, A.FIS_DY_OF_WK_NBR AS Q_DAY_IN_WK_NUM
, A.FIS_DT_FULL_DESC AS Q_DAY_IN_WK_DESC
, A.FIS_DT_DESC AS Q_DAY_IN_WK_SDESC
, A.FIS_CAL_DT - 1 AS Q_DT_1DA
, COALESCE(A.LY_FIS_CAL_DT, Date '1900-01-01') AS Q_DT_LY
, COALESCE(A.LLY_FIS_CAL_DT, Date '1900-01-01') AS Q_DT_2YA
, A.FIS_CAL_DT - 7 AS Q_DT_LW
, A.FIS_CAL_DT - 14 AS Q_DT_2WA
, A.FIS_CAL_DT - 21 AS Q_DT_3WA
, A.FIS_CAL_DT - 28 AS Q_DT_4WA
, B.PERD_END_DT AS Q_WK_ID
, A.CUR_DY_IND AS CUR_DY_IND
, A.PRV_DY_IND AS PRV_DY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_WK_IND = 1) THEN 1 ELSE 0
END AS WTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_MO_IND = 1) THEN 1 ELSE 0
END AS MTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_QTR_IND = 1) THEN 1 ELSE 0
END AS QTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_HALF_IND = 1) THEN 1 ELSE 0

Gap Quantisense Calendar TD

Page 112 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

END AS STD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.FIS_CAL_DT AND C.CUR_YR_IND = 1) THEN 1 ELSE 0
END AS YTD_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_WK_IND = 1) THEN 1 ELSE 0
END AS WTD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_MO_IND = 1) THEN 1 ELSE 0
END AS MTD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_QTR_IND = 1) THEN 1 ELSE
0 END AS QTD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_HALF_IND = 1) THEN 1 ELSE
0 END AS STD_LY_IND
, CASE WHEN (A.FIS_CAL_DT <= E.LY_FIS_CAL_DT AND D.CUR_YR_IND = 1) THEN 1 ELSE 0
END AS YTD_LY_IND
, CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TFCDD_FIS_CAL_DT_DIM A
JOIN
$BASEVIEWDBF.TFCWD_FIS_CAL_WK_DIM B
ON
A.FIS_WK_NBR = B.FIS_WK_NBR
AND A.FIS_YR_NBR = B.FIS_YR_NBR
JOIN
$BASEVIEWDBF.TFCFD_FIS_CAL_FLATTENED_DIM C
ON A.FIS_CAL_DT = C.FIS_CAL_DT
LEFT OUTER JOIN
$BASEVIEWDBF.TFCFD_FIS_CAL_FLATTENED_DIM D
ON A.FIS_CAL_DT = D.LY_FIS_CAL_DT
JOIN
$BASEVIEWDBF.TFCDD_FIS_CAL_DT_DIM E
ON E.CUR_DY_IND = 1
WHERE A.FIS_CAL_ID = 1
AND A.FIS_CAL_RLN_TYP_CD = 5
AND A.TM_ZN_GRP_CD = 1
AND B.FIS_CAL_ID = 1
AND B.FIS_CAL_RLN_TYP_CD = 5
AND B.TM_ZN_GRP_CD = 1
AND E.FIS_CAL_ID = 1
AND E.FIS_CAL_RLN_TYP_CD = 5
AND E.TM_ZN_GRP_CD = 1
AND A.FIS_CAL_DT >= (SELECT YR_STRT_DT FROM
$BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM
WHERE FIS_YR_NBR=(SELECT FIS_YR_NBR -3 FROM
$BASEVIEWDBF.TFCZD_FIS_CAL_TM_ZN_FLT_DIM WHERE FIS_CAL_DT=CURRENT_DATE
AND TM_ZN_GRP_CD = 1 GROUP BY 1) GROUP BY 1)
;
/*

Detect Changes

*/

DELETE FROM $BASEQUANDB.E_CAL_DT_CHG ALL;


INSERT INTO $BASEQUANDB.E_CAL_DT_CHG
(
Q_DT_ID
,
Q_DT_DESC
,
Q_DT_SDESC
,
Q_DAY_IN_WK_NUM
,
Q_DAY_IN_WK_DESC

Gap Quantisense Calendar TD

Page 113 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
Q_DAY_IN_WK_SDESC
,
Q_DT_1DA
,
Q_DT_LY
,
Q_DT_2YA
,
Q_DT_LW
,
Q_DT_2WA
,
Q_DT_3WA
,
Q_DT_4WA
,
Q_WK_ID
,
CUR_DY_IND
,
PRV_DY_IND
,
WTD_IND
,
MTD_IND
,
QTD_IND
,
STD_IND
,
YTD_IND
,
WTD_LY_IND
,
MTD_LY_IND
,
QTD_LY_IND
,
STD_LY_IND
,
YTD_LY_IND
,
LOAD_DATE
,
CHG_FLG
)
SELECT
S.Q_DT_ID
,
S.Q_DT_DESC
,
S.Q_DT_SDESC
,
S.Q_DAY_IN_WK_NUM
,
S.Q_DAY_IN_WK_DESC
,
S.Q_DAY_IN_WK_SDESC
,
S.Q_DT_1DA
,
S.Q_DT_LY
,
S.Q_DT_2YA
,
S.Q_DT_LW
,
S.Q_DT_2WA
,
S.Q_DT_3WA
,
S.Q_DT_4WA
,
S.Q_WK_ID
,
S.CUR_DY_IND
,
S.PRV_DY_IND
,
S.WTD_IND
,
S.MTD_IND
,
S.QTD_IND
,
S.STD_IND
,
S.YTD_IND
,
S.WTD_LY_IND
,
S.MTD_LY_IND
,
S.QTD_LY_IND
,
S.STD_LY_IND
,
S.YTD_LY_IND
,
S.LOAD_DATE
,
CASE WHEN T.Q_DT_ID IS NULL THEN 'I' ELSE 'X' END
FROM
$BASEQUANDB.DDT_CAL_DT S
LEFT OUTER JOIN

Gap Quantisense Calendar TD

Page 114 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

$BASEQUANDB.DW_CAL_DT T
ON
T.Q_DT_ID
WHERE
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
OR
;
/*

T.Q_DT_DESC
T.Q_DT_SDESC
T.Q_DAY_IN_WK_NUM
T.Q_DAY_IN_WK_DESC
T.Q_DAY_IN_WK_SDESC
T.Q_DT_1DA
T.Q_DT_LY
T.Q_DT_2YA
T.Q_DT_LW
T.Q_DT_2WA
T.Q_DT_3WA
T.Q_DT_4WA
T.Q_WK_ID
T.CUR_DY_IND
T.PRV_DY_IND
T.WTD_IND
T.MTD_IND
T.QTD_IND
T.STD_IND
T.YTD_IND
T.WTD_LY_IND
T.MTD_LY_IND
T.QTD_LY_IND
T.STD_LY_IND
T.YTD_LY_IND
T.Q_DT_ID IS NULL

= S.Q_DT_ID
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>
<>

S.Q_DT_DESC
S.Q_DT_SDESC
S.Q_DAY_IN_WK_NUM
S.Q_DAY_IN_WK_DESC
S.Q_DAY_IN_WK_SDESC
S.Q_DT_1DA
S.Q_DT_LY
S.Q_DT_2YA
S.Q_DT_LW
S.Q_DT_2WA
S.Q_DT_3WA
S.Q_DT_4WA
S.Q_WK_ID
S.CUR_DY_IND
S.PRV_DY_IND
S.WTD_IND
S.MTD_IND
S.QTD_IND
S.STD_IND
S.YTD_IND
S.WTD_LY_IND
S.MTD_LY_IND
S.QTD_LY_IND
S.STD_LY_IND
S.YTD_LY_IND

Insert Changes

*/

INSERT INTO $BASEQUANDB.DW_CAL_DT


(
Q_DT_ID
,
Q_DT_DESC
,
Q_DT_SDESC
,
Q_DAY_IN_WK_NUM
,
Q_DAY_IN_WK_DESC
,
Q_DAY_IN_WK_SDESC
,
Q_DT_1DA
,
Q_DT_LY
,
Q_DT_2YA
,
Q_DT_LW
,
Q_DT_2WA
,
Q_DT_3WA
,
Q_DT_4WA
,
Q_WK_ID
,
Q_FRST_DT_IN_WK
,
Q_LAST_DT_IN_WK
,
Q_WK_LY
,
Q_WK_2YA
,
Q_WK_LW
,
Q_WK_2WA
,
Q_WK_3WA

Gap Quantisense Calendar TD

Page 115 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
Q_WK_4WA
,
Q_MON_ID
,
Q_FRST_DT_IN_MON
,
Q_LAST_DT_IN_MON
,
Q_MON_LY
,
Q_MON_2YA
,
Q_QTR_ID
,
Q_FRST_DT_IN_QTR
,
Q_LAST_DT_IN_QTR
,
Q_QTR_LY
,
Q_QTR_2YA
,
Q_SEA_ID
,
Q_FRST_DT_IN_SEA
,
Q_LAST_DT_IN_SEA
,
Q_SEA_LY
,
Q_SEA_2YA
,
Q_YR_ID
,
Q_FRST_DT_IN_YR
,
Q_LAST_DT_IN_YR
,
Q_YR_LY
,
Q_YR_2YA
,
CUR_DY_IND
,
PRV_DY_IND
,
WTD_IND
,
MTD_IND
,
QTD_IND
,
STD_IND
,
YTD_IND
,
WTD_LY_IND
,
MTD_LY_IND
,
QTD_LY_IND
,
STD_LY_IND
,
YTD_LY_IND
,
LOAD_DATE
)
SELECT
S.Q_DT_ID
,
S.Q_DT_DESC
,
S.Q_DT_SDESC
,
S.Q_DAY_IN_WK_NUM
,
S.Q_DAY_IN_WK_DESC
,
S.Q_DAY_IN_WK_SDESC
,
S.Q_DT_1DA
,
S.Q_DT_LY
,
S.Q_DT_2YA
,
S.Q_DT_LW
,
S.Q_DT_2WA
,
S.Q_DT_3WA
,
S.Q_DT_4WA
,
S.Q_WK_ID
,
P1.Q_FRST_DT_IN_WK
,
P1.Q_LAST_DT_IN_WK
,
P1.Q_WK_LY
,
P1.Q_WK_2YA
,
P1.Q_WK_LW
,
P1.Q_WK_2WA

Gap Quantisense Calendar TD

Page 116 of 161

Interface Technical Design


Gap Quantisense Calendar TD
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
FROM
JOIN

ETL Implementation Details

P1.Q_WK_3WA
P1.Q_WK_4WA
P1.Q_MON_ID
P1.Q_FRST_DT_IN_MON
P1.Q_LAST_DT_IN_MON
P1.Q_MON_LY
P1.Q_MON_2YA
P1.Q_QTR_ID
P1.Q_FRST_DT_IN_QTR
P1.Q_LAST_DT_IN_QTR
P1.Q_QTR_LY
P1.Q_QTR_2YA
P1.Q_SEA_ID
P1.Q_FRST_DT_IN_SEA
P1.Q_LAST_DT_IN_SEA
P1.Q_SEA_LY
P1.Q_SEA_2YA
P1.Q_YR_ID
P1.Q_FRST_DT_IN_YR
P1.Q_LAST_DT_IN_YR
P1.Q_YR_LY
P1.Q_YR_2YA
S.CUR_DY_IND
S.PRV_DY_IND
S.WTD_IND
S.MTD_IND
S.QTD_IND
S.STD_IND
S.YTD_IND
S.WTD_LY_IND
S.MTD_LY_IND
S.QTD_LY_IND
S.STD_LY_IND
S.YTD_LY_IND
S.LOAD_DATE
$BASEQUANDB.E_CAL_DT_CHG S
$BASEQUANDB.DW_CAL_W P1
ON
S.Q_WK_ID = P1.Q_WK_ID

WHERE
S.CHG_FLG = 'I'
;
/*

Update Changes

UPDATE $BASEQUANDB.DW_CAL_DT T
SET
Q_DT_DESC
,
Q_DT_SDESC
,
Q_DAY_IN_WK_NUM
,
Q_DAY_IN_WK_DESC
,
Q_DAY_IN_WK_SDESC
,
Q_DT_1DA
,
Q_DT_LY
,
Q_DT_2YA

Gap Quantisense Calendar TD

*/

=
=
=
=
=
=
=
=

$BASEQUANDB.E_CAL_DT_CHG.Q_DT_DESC
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_SDESC
$BASEQUANDB.E_CAL_DT_CHG.Q_DAY_IN_WK_NUM
$BASEQUANDB.E_CAL_DT_CHG.Q_DAY_IN_WK_DESC
$BASEQUANDB.E_CAL_DT_CHG.Q_DAY_IN_WK_SDESC
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_1DA
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_LY
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_2YA

Page 117 of 161

Interface Technical Design


Gap Quantisense Calendar TD
,
Q_DT_LW
=
,
Q_DT_2WA
=
,
Q_DT_3WA
=
,
Q_DT_4WA
=
,
Q_WK_ID
=
,
Q_FRST_DT_IN_WK
=
,
Q_LAST_DT_IN_WK
=
,
Q_WK_LY
=
,
Q_WK_2YA
=
,
Q_WK_LW
=
,
Q_WK_2WA
=
,
Q_WK_3WA
=
,
Q_WK_4WA
=
,
Q_MON_ID
=
,
Q_FRST_DT_IN_MON
=
,
Q_LAST_DT_IN_MON
=
,
Q_MON_LY
=
,
Q_MON_2YA
=
,
Q_QTR_ID
=
,
Q_FRST_DT_IN_QTR
=
,
Q_LAST_DT_IN_QTR
=
,
Q_QTR_LY
=
,
Q_QTR_2YA
=
,
Q_SEA_ID
=
,
Q_FRST_DT_IN_SEA
=
,
Q_LAST_DT_IN_SEA
=
,
Q_SEA_LY
=
,
Q_SEA_2YA
=
,
Q_YR_ID
=
,
Q_FRST_DT_IN_YR
=
,
Q_LAST_DT_IN_YR
=
,
Q_YR_LY
=
,
Q_YR_2YA
=
,
CUR_DY_IND
=
,
PRV_DY_IND
=
,
WTD_IND
=
,
MTD_IND
=
,
QTD_IND
=
,
STD_IND
=
,
YTD_IND
=
,
WTD_LY_IND
=
,
MTD_LY_IND
=
,
QTD_LY_IND
=
,
STD_LY_IND
=
,
YTD_LY_IND
=
WHERE
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_ID
AND $BASEQUANDB.E_CAL_DT_CHG.Q_WK_ID
AND $BASEQUANDB.E_CAL_DT_CHG.CHG_FLG
;

Gap Quantisense Calendar TD

ETL Implementation Details

$BASEQUANDB.E_CAL_DT_CHG.Q_DT_LW
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_2WA
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_3WA
$BASEQUANDB.E_CAL_DT_CHG.Q_DT_4WA
$BASEQUANDB.E_CAL_DT_CHG.Q_WK_ID
$BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_WK
$BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_WK
$BASEQUANDB.DW_CAL_W.Q_WK_LY
$BASEQUANDB.DW_CAL_W.Q_WK_2YA
$BASEQUANDB.DW_CAL_W.Q_WK_LW
$BASEQUANDB.DW_CAL_W.Q_WK_2WA
$BASEQUANDB.DW_CAL_W.Q_WK_3WA
$BASEQUANDB.DW_CAL_W.Q_WK_4WA
$BASEQUANDB.DW_CAL_W.Q_MON_ID
$BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_MON
$BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_MON
$BASEQUANDB.DW_CAL_W.Q_MON_LY
$BASEQUANDB.DW_CAL_W.Q_MON_2YA
$BASEQUANDB.DW_CAL_W.Q_QTR_ID
$BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_QTR
$BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_QTR
$BASEQUANDB.DW_CAL_W.Q_QTR_LY
$BASEQUANDB.DW_CAL_W.Q_QTR_2YA
$BASEQUANDB.DW_CAL_W.Q_SEA_ID
$BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_SEA
$BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_SEA
$BASEQUANDB.DW_CAL_W.Q_SEA_LY
$BASEQUANDB.DW_CAL_W.Q_SEA_2YA
$BASEQUANDB.DW_CAL_W.Q_YR_ID
$BASEQUANDB.DW_CAL_W.Q_FRST_DT_IN_YR
$BASEQUANDB.DW_CAL_W.Q_LAST_DT_IN_YR
$BASEQUANDB.DW_CAL_W.Q_YR_LY
$BASEQUANDB.DW_CAL_W.Q_YR_2YA
$BASEQUANDB.E_CAL_DT_CHG.CUR_DY_IND
$BASEQUANDB.E_CAL_DT_CHG.PRV_DY_IND
$BASEQUANDB.E_CAL_DT_CHG.WTD_IND
$BASEQUANDB.E_CAL_DT_CHG.MTD_IND
$BASEQUANDB.E_CAL_DT_CHG.QTD_IND
$BASEQUANDB.E_CAL_DT_CHG.STD_IND
$BASEQUANDB.E_CAL_DT_CHG.YTD_IND
$BASEQUANDB.E_CAL_DT_CHG.WTD_LY_IND
$BASEQUANDB.E_CAL_DT_CHG.MTD_LY_IND
$BASEQUANDB.E_CAL_DT_CHG.QTD_LY_IND
$BASEQUANDB.E_CAL_DT_CHG.STD_LY_IND
$BASEQUANDB.E_CAL_DT_CHG.YTD_LY_IND
= T.Q_DT_ID
= $BASEQUANDB.DW_CAL_W.Q_WK_ID
= 'X'

Page 118 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

8.11.1.2 PROCESSING SPECIFCS

Processing
Steps Covered

Process P6 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements: The source table


TFCDD_FIS_CAL_DT_DIM should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

8.12

COMPONENT: PDWQ08DU_LOC_CMP_STR_D_ETL.B

8.12.1.1

Description of stages:

Source Table

TSFCW_STR_FIN_CMPSLS_FCT

Target Table

DW_LOC_CMP_STR_D

Business Function

Extracts Store Comp data from source into staging


table TSFCW_STR_FIN_CMPSLS_FCT and
loads in to DW_LOC_CMP_STR_D.

BTEQ Steps

Gap Quantisense Calendar TD

Load the comp stores details to


DDT_LOC_CMP_STR_D.

Compare the data in the


DDT_LOC_CMP_STR_D table with
Q_QL_LOC_STR_V. Any new records or
changes to existing records are loaded into an
intermediate table
E_LOC_CMP_STR_D_CHG.

Insert the new records from


E_LOC_CMP_STR_D_CHG into the
DW_LOC_CMP_STR_D.

Update the DW_LOC_CMP_STR_D table with


the changes recorded in
E_LOC_CMP_STR_D_CHG table.

Page 119 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

DELETE FROM $BASEQUANDB.DDT_LOC_CMP_STR_D ALL;


INSERT INTO $BASEQUANDB.DDT_LOC_CMP_STR_D
(
Q_DT_ID
,
Q_STR_ID
,
Q_CMP_FLG
,
SRC_ID
,
LOAD_DATE
)
SELECT DISTINCT
SLS_TXN_DT
AS Q_DT_ID
,
LOC_KEY
AS Q_STR_ID
,
CASE WHEN MIN(STR_COMP_GRP_ID) = 'C' THEN 1 ELSE 0 END
Q_CMP_FLG
,
0
AS SRC_ID
,
CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBS.TSFCW_STR_FIN_CMPSLS_FCT S
WHERE REC_TYP_CD = '1'
GROUP BY SLS_TXN_DT, LOC_KEY
;
/*

Detect Changes

- TY

*/

DELETE FROM $BASEQUANDB.E_LOC_CMP_STR_D_CHG ALL;


INSERT INTO $BASEQUANDB.E_LOC_CMP_STR_D_CHG
(
Q_DT_ID
,
Q_STR_ID
,
Q_STR_SNUM
,
Q_CMP_FLG
,
Q_CMP_NEXT_YR_FLG
,
SRC_ID
,
LOAD_DATE
,
CHG_FLG
)
SELECT
S.Q_DT_ID
,
S.Q_STR_ID
,
P2.Q_STR_SNUM
,
S.Q_CMP_FLG
,
COALESCE(NY.Q_CMP_FLG, 0)
,
S.SRC_ID
,
S.LOAD_DATE
,
CASE WHEN T.Q_DT_ID IS NULL THEN 'I' ELSE 'X' END
FROM
$BASEQUANDB.DDT_LOC_CMP_STR_D S
JOIN
$BASEQUANVIEW.Q_QL_LOC_STR_V P2
ON
S.Q_STR_ID = P2.Q_STR_ID
LEFT OUTER JOIN
$BASEQUANDB.DW_LOC_CMP_STR_D T
ON
T.Q_DT_ID
= S.Q_DT_ID
AND T.Q_STR_ID
= S.Q_STR_ID

Gap Quantisense Calendar TD

AS

Page 120 of 161

Interface Technical Design


Gap Quantisense Calendar TD
LEFT OUTER JOIN
$BASEQUANVIEW.Q_QL_CAL_DT_V P1
ON
S.Q_DT_ID
= P1.Q_DT_LY
LEFT OUTER JOIN
$BASEQUANDB.DDT_LOC_CMP_STR_D NY
ON
P1.Q_DT_ID
AND NY.Q_STR_ID
WHERE
T.Q_CMP_FLG
OR
T.Q_CMP_FLG
OR
T.Q_DT_ID IS NULL
;
/*

ETL Implementation Details

= NY.Q_DT_ID
= S.Q_STR_ID
<>
<>

S.Q_CMP_FLG
NY.Q_CMP_FLG

Insert Changes

*/

CALL SYSADMIN.COLLECTSTATS(' $BASEQUANDB.E_LOC_CMP_STR_D_CHG');


INSERT INTO $BASEQUANDB.DW_LOC_CMP_STR_D
(
Q_DT_ID
,
Q_STR_ID
,
Q_STR_SNUM
,
Q_CMP_FLG
,
Q_CMP_NEXT_YR_FLG
,
SRC_ID
,
LOAD_DATE
,
LAST_UPDATE
)
SELECT
S.Q_DT_ID
,
S.Q_STR_ID
,
S.Q_STR_SNUM
,
S.Q_CMP_FLG
,
S.Q_CMP_NEXT_YR_FLG
,
S.SRC_ID
,
S.LOAD_DATE
,
S.LOAD_DATE
FROM
$BASEQUANDB.E_LOC_CMP_STR_D_CHG S
WHERE S.CHG_FLG = 'I'
;
/*
Update Changes

*/

UPDATE $BASEQUANDB.DW_LOC_CMP_STR_D T
SET
Q_CMP_FLG
=
$BASEQUANDB.E_LOC_CMP_STR_D_CHG.Q_CMP_FLG
,
Q_CMP_NEXT_YR_FLG
=
$BASEQUANDB.E_LOC_CMP_STR_D_CHG.Q_CMP_NEXT_YR_FLG
,
LAST_UPDATE
=
$BASEQUANDB.E_LOC_CMP_STR_D_CHG.LOAD_DATE
WHERE
$BASEQUANDB.E_LOC_CMP_STR_D_CHG.Q_DT_ID
T.Q_DT_ID
AND
$BASEQUANDB.E_LOC_CMP_STR_D_CHG.Q_STR_ID
T.Q_STR_ID

Gap Quantisense Calendar TD

=
=

Page 121 of 161

Interface Technical Design


Gap Quantisense Calendar TD
AND
;

8.12.1.2

ETL Implementation Details

$BASEQUANDB.E_LOC_CMP_STR_D_CHG.CHG_FLG = 'X'

PROCESSING SPECIFIC

Processing
Steps Covered

Process P8 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements: The source table table


TSFCW_STR_FIN_CMPSLS_FCT should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

8.13 COMPONENT: PDWQ09DU_CCY_EXCH_ETL.BTQ


8.13.1.1

Description of stages:

Source Table

TCXRW_CNCY_XCHG_RAT_FCT

Target Table

DW_CCY_EXCH

Business Function

Gap Quantisense Calendar TD

Page 122 of 161

Interface Technical Design


Gap Quantisense Calendar TD
BTEQ Steps

ETL Implementation Details

Load the native and target currency to the


staging DDT_CCY_EXCH.

Create the view Q_QL_CCY_EXCH_V with


staging table DDT_CCY_EXCH data..

Load the newly inserted/updated data to the


table E_CCY_EXCH_CHG.

Load the new records from


E_CCY_EXCH_CHG table to
DW_CCY_EXCH.

Update the changed records from


E_CCY_EXCH_CHG table to
DW_CCY_EXCH.

DELETE FROM $BASEQUANDB.DDT_CCY_EXCH ALL;


INSERT INTO $BASEQUANDB.DDT_CCY_EXCH
(
Q_CCY_LCL_ID
,
Q_CCY_RPT_ID
,
XCHG_RAT_TYP_CD
,
Q_DT_ID
,
Q_EXCH_RAT
,
LOAD_DATE
)
SELECT
S.XCHG_RAT_FRM_CNCY_CD
AS Q_CCY_LCL_ID /* The "native"
currency */
,
S.XCHG_RAT_TO_CNCY_CD
AS Q_CCY_RPT_ID /* The "target"
currency */
,
S.XCHG_RAT_TYP_CD
,
P1.Q_DT_ID
AS Q_DT_ID
,
CAST (S.XCHG_CONV_RAT AS DECIMAL(18,4))
AS Q_EXCH_RAT
,
CURRENT_DATE
AS LOAD_DATE
FROM
$BASEVIEWDBF.TCXRW_CNCY_XCHG_RAT_FCT S
JOIN /* DECOMPRESS TABLE */
$BASEQUANVIEW.Q_QL_CAL_DT_V P1
ON
P1.Q_DT_ID BETWEEN S.XCHG_RAT_STRT_EFF_DT AND
S.XCHG_RAT_END_EFF_DT
WHERE
((S.XCHG_RAT_FRM_CNCY_CD in ('EUR')
and S.XCHG_RAT_TO_CNCY_CD in ('EUR', 'GBP', 'USD'))
or (S.XCHG_RAT_FRM_CNCY_CD in ('CNY')
and S.XCHG_RAT_TO_CNCY_CD in ('CNY', 'USD'))
or (S.XCHG_RAT_FRM_CNCY_CD in ('GBP')
and S.XCHG_RAT_TO_CNCY_CD in ('GBP', 'USD'))
or (S.XCHG_RAT_FRM_CNCY_CD in ('JPY')
and S.XCHG_RAT_TO_CNCY_CD in ('JPY', 'USD'))
AND S.XCHG_RAT_FRM_CNCY_CD <> S.XCHG_RAT_TO_CNCY_CD )
UNION
SELECT
A.Q_CCY_LCL_ID
AS Q_CCY_LCL_ID
Gap Quantisense Calendar TD

Page 123 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
A.Q_CCY_LCL_ID
AS Q_CCY_RPT_ID
,
'SPR'
AS XCHG_RAT_TYP_CD
,
B.Q_DT_ID
AS Q_DT_ID
,
1.0000
AS Q_EXCH_RAT
,
CURRENT_DATE
AS LOAD_DATE
FROM
$BASEQUANVIEW.Q_QL_CCY_LCL_V A
CROSS JOIN $BASEQUANVIEW.Q_QL_CAL_DT_V B ;
/*

Detect Changes

*/

DELETE FROM $BASEQUANDB.E_CCY_EXCH_CHG ALL;


INSERT INTO $BASEQUANDB.E_CCY_EXCH_CHG
(
Q_CCY_LCL_ID
,
Q_CCY_RPT_ID
,
XCHG_RAT_TYP_CD
,
Q_DT_ID
,
Q_EXCH_RAT
,
LOAD_DATE
,
CHG_FLG
)
SELECT
S.Q_CCY_LCL_ID
,
S.Q_CCY_RPT_ID
,
S.XCHG_RAT_TYP_CD
,
S.Q_DT_ID
,
S.Q_EXCH_RAT
,
S.LOAD_DATE
,
CASE WHEN T.Q_DT_ID IS NULL THEN 'I' ELSE 'X' END
FROM
$BASEQUANDB.DDT_CCY_EXCH S
LEFT OUTER JOIN
$BASEQUANDB.DW_CCY_EXCH T
ON T.Q_DT_ID
= S.Q_DT_ID
AND T.Q_CCY_LCL_ID
= S.Q_CCY_LCL_ID
AND T.Q_CCY_RPT_ID
= S.Q_CCY_RPT_ID
AND T.XCHG_RAT_TYP_CD
= S.XCHG_RAT_TYP_CD
WHERE
T.Q_EXCH_RAT
<> S.Q_EXCH_RAT
OR
T.Q_DT_ID IS NULL
;
/*

Insert Changes

*/

INSERT INTO $BASEQUANDB.DW_CCY_EXCH


(
Q_CCY_LCL_ID
,
Q_CCY_RPT_ID
,
XCHG_RAT_TYP_CD
,
Q_DT_ID
,
Q_EXCH_RAT
,
LOAD_DATE
)
SELECT

Gap Quantisense Calendar TD

Page 124 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

S.Q_CCY_LCL_ID
,
S.Q_CCY_RPT_ID
,
S.XCHG_RAT_TYP_CD
,
S.Q_DT_ID
,
S.Q_EXCH_RAT
,
S.LOAD_DATE
FROM
$BASEQUANDB.E_CCY_EXCH_CHG S
WHERE
S.CHG_FLG = 'I'
;
/*

Update Changes

*/

UPDATE $BASEQUANDB.DW_CCY_EXCH T
SET
Q_EXCH_RAT
= $BASEQUANDB.E_CCY_EXCH_CHG.Q_EXCH_RAT
WHERE
$BASEQUANDB.E_CCY_EXCH_CHG.Q_CCY_LCL_ID
= T.Q_CCY_LCL_ID
AND $BASEQUANDB.E_CCY_EXCH_CHG.Q_CCY_RPT_ID
= T.Q_CCY_RPT_ID
AND $BASEQUANDB.E_CCY_EXCH_CHG.XCHG_RAT_TYP_CD = T.XCHG_RAT_TYP_CD
AND $BASEQUANDB.E_CCY_EXCH_CHG.Q_DT_ID
= T.Q_DT_ID
AND $BASEQUANDB.E_CCY_EXCH_CHG.CHG_FLG
= 'X'
;

8.13.1.2

PROCESSING SPECIFIC

Processing
Steps Covered

Process P11 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements: The source table


TCXRW_CNCY_XCHG_RAT_FCT should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

8.14 COMPONENT: PDWQ10DU_RLI_SO_ISO_ETL.BTQ


8.14.1.1

Description of stages:

Gap Quantisense Calendar TD

Page 125 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Source Table

Q_PA_SLS_SKU_STR_L13W_V,
Q_QF_INV_SKU_STR_W_EOP_V

Target Table

DW_ISO_SKU_STR_W

Business Function

Calculates and populates Stock Out and Imminent


Stock Out data for last complete week.

BTEQ Steps

Load the Imminent Stock out and Stock out


parameters in DW_SO_PAR_CLS.

Load the Sales for the trailing 13 weeks in the


intermediate table E_SO_ISO_SKU_STR_W.

Load the Inventory for the current week in


E_SO_ISO_SKU_STR_W.

Load the Imminent Stock outs in the table


DW_ISO_SKU_STR_W.

Load the Stock outs in the table


DW_ISO_SKU_STR_W.

DELETE FROM $BASEQUANDB.DW_OS_PAR_CLS ALL;


INSERT INTO $BASEQUANDB.DW_OS_PAR_CLS
(
Q_CLS_ID
,
Q_CLS_SNUM
,
Q_OS_THRSHLD_WKS
,
Q_OS_HLDNG_COST_FCTR
)
SELECT
S.Q_CLS_ID
,
S.Q_CLS_SNUM
,
COALESCE(P1.Q_OS_THRSHLD_WKS, P2.Q_OS_THRSHLD_WKS_DFLT)
,
COALESCE(P1.Q_OS_HLDNG_COST_FCTR, P2.Q_OS_HLDNG_COST_FCTR_DFLT)
FROM
$BASEQUANVIEW.Q_QL_PRD_CLS_V S
LEFT OUTER JOIN
$BASEQUANDB.U_OS_PAR_CLS P1 ON
S.Q_CLS_SNUM =
P1.Q_CLS_SNUM
CROSS JOIN
$BASEQUANDB.U_OS_PAR_DFLT P2
;
/*
*/

Insert Sales For Trailing N Weeks

DELETE FROM $BASEQUANDB.E_OS_SKU_STR_W ALL;


INSERT INTO $BASEQUANDB.E_OS_SKU_STR_W
(
Q_WK_ID
,
Q_SKU_ID
,
Q_STR_ID
,
BRD_KEY

Gap Quantisense Calendar TD

Page 126 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

,
MKT_KEY
,
CHNL_KEY
,
Q_CCY_LCL_ID
,
Q_OS_CNT
,
Q_OS_HLDNG_CDLRS
,
Q_OS_INV_UNTS
,
Q_OS_INV_CDLRS
,
Q_OS_INV_RDLRS
,
Q_OS_THRSLD_UNTS
)
SELECT
P8.Q_WK_ID
,
S.Q_SKU_ID
,
S.Q_STR_ID
,
0
AS BRD_KEY
,
0
AS MKT_KEY
,
0
AS CHNL_KEY
,
COALESCE(T.Q_CCY_LCL_ID, 'USD')
,
1
AS Q_OS_CNT
,
0
AS Q_OS_HLDNG_CDLRS
,
0
AS Q_OS_INV_UNTS
,
0
AS Q_OS_INV_CDLRS
,
0
AS Q_OS_INV_RDLRS
,
S.Q_SLS_UNTS
AS Q_OS_THRSLD_UNTS
FROM
(
SELECT
T.Q_WK_ID AS Q_WK_ID , S.LOC_KEY AS Q_STR_ID , S.BRD_SKU_ID AS
Q_SKU_ID ,
SUM ( S.ITM_QTY ) AS Q_SLS_UNTS , SUM ( S.TOT_SLS_AMT ) AS
Q_SLS_RDLRS
FROM $BASEVIEWDBS.TSTIW_SLS_TXN_LN_ITM_FCT S , $BASEQUANVIEW.Q_QL_CAL_DT_V
T ,
VIEWFNDT.TSKUD_BRD_SKU_DIM P3 ,
VIEWFNDT.TBMFD_BMC_MDSE_HIER_FLAT_DIM U
WHERE
TXN_DT>=Date '$l' AND TXN_DT <= CURRENT_DATE
AND
S.TXN_DT = T.Q_DT_ID
AND
S.BRD_SKU_ID = P3.BRD_SKU_KEY
AND
P3.SKU_TYP_CD_ID = 141
AND
P3.BRD_STY_CLR_KEY = U.BRD_STY_CLR_KEY
AND
U.MKT_KEY IN ( 3 , 4 , 5 )
GROUP BY 1 , 2 , 3 ) S , (
SELECT
P2.Q_SKU_ID (NAMED B_Q_SKU_ID ) , ( 7 * ( P7.Q_OS_THRSHLD_WKS 1 ) ) (NAMED THRSHLD_WKS )
FROM $BASEQUANVIEW.Q_QL_PRD_SKU_V P2 , $BASEQUANVIEW.Q_QL_PRD_STY_V P3 ,
$BASEQUANVIEW.Q_PL_PRD_TBRSD_V P4 , $BASEQUANVIEW.Q_PL_PRD_TBSCD_V P5
,
$BASEQUANVIEW.Q_QL_PRD_CLS_V P6 , $BASEQUANVIEW.Q_QR_OS_PAR_CLS_V P7
WHERE P2.Q_STY_ID = P3.Q_STY_ID
AND
P3.BRD_STY_KEY = P4.BRD_STY_KEY
AND
P4.BRD_SCLS_KEY = P5.BRD_SCLS_KEY
AND
P5.Q_CLS_ID = P6.Q_CLS_ID
AND
P6.Q_CLS_ID = P7.Q_CLS_ID ) B , $BASEQUANVIEW.Q_QL_CAL_W_V P8 ,
$BASEQUANVIEW.Q_QL_LOC_STR_V T
WHERE S.Q_STR_ID = T.Q_STR_ID
AND
B.B_Q_SKU_ID = S.Q_SKU_ID
AND
S.Q_WK_ID BETWEEN P8.Q_WK_ID - THRSHLD_WKS

Gap Quantisense Calendar TD

Page 127 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

AND
AND

P8.Q_WK_ID
P8.Q_WK_ID IN (
SELECT
MAXIMUM ( A.Q_WK_ID )
FROM $BASEQUANVIEW.Q_QL_CAL_W_V A
WHERE A.Q_WK_ID<CURRENT_DATE )
;
/*
*/

Insert Inventory for Current Week

INSERT INTO $BASEQUANDB.E_OS_SKU_STR_W


(
Q_WK_ID
,
Q_SKU_ID
,
Q_STR_ID
,
BRD_KEY
,
MKT_KEY
,
CHNL_KEY
,
Q_CCY_LCL_ID
,
Q_OS_CNT
,
Q_OS_HLDNG_CDLRS
,
Q_OS_INV_UNTS
,
Q_OS_INV_CDLRS
,
Q_OS_INV_RDLRS
,
Q_OS_THRSLD_UNTS
)
SELECT
S.Q_WK_ID
,
S.Q_SKU_ID
,
S.Q_STR_ID
,
0
AS BRD_KEY
,
0
AS MKT_KEY
,
0
AS CHNL_KEY
,
COALESCE(T.Q_CCY_LCL_ID, 'USD')
,
1
AS Q_OS_CNT
,
Q_OS_HLDNG_COST_FCTR * 0.01 * (Q_INV_OH_CDLRS_EOP +
Q_INV_IT_CDLRS_EOP)
AS Q_OS_HLDNG_CDLRS
,
Q_INV_OH_UNTS_EOP + Q_INV_IT_UNTS_EOP
AS Q_OS_INV_UNTS
,
Q_INV_OH_CDLRS_EOP + Q_INV_IT_CDLRS_EOP
AS Q_OS_INV_CDLRS
,
Q_INV_OH_RDLRS_EOP + Q_INV_IT_RDLRS_EOP
AS Q_OS_INV_RDLRS
,
0
AS Q_OS_THRSLD_UNTS
FROM
$BASEQUANVIEW.Q_QF_INV_SKU_STR_W_EOP_V S
JOIN
$BASEQUANVIEW.Q_QL_LOC_STR_V T ON S.Q_STR_ID = T.Q_STR_ID
JOIN
$BASEQUANVIEW.Q_QL_PRD_SKU_V P3
ON S.Q_SKU_ID = P3.Q_SKU_ID
JOIN
$BASEQUANVIEW.Q_QL_PRD_STY_V
P4
ON P3.Q_STY_ID = P4.Q_STY_ID
JOIN
$BASEQUANVIEW.Q_PL_PRD_TBRSD_V P5
ON P4.BRD_STY_KEY =
P5.BRD_STY_KEY
JOIN
$BASEQUANVIEW.Q_PL_PRD_TBSCD_V
P6
ON P5.BRD_SCLS_KEY =
P6.BRD_SCLS_KEY
JOIN

Gap Quantisense Calendar TD

Page 128 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

$BASEQUANDB.DW_OS_PAR_CLS P7
ON P6.Q_CLS_ID = P7.Q_CLS_ID
WHERE
--S.Q_WK_ID IN (SELECT MAX(A.Q_WK_ID) FROM
$BASEQUANVIEW.Q_QL_CAL_DT_V A WHERE A.Q_DT_ID = DATE '2011-01-22') /* FOR
TESTING ONLY */
S.Q_WK_ID IN (SELECT MAX(A.Q_WK_ID) FROM $BASEQUANVIEW.Q_QL_CAL_W_V A
WHERE A.Q_WK_ID<CURRENT_DATE) /* IN PRODUCTION */
AND (Q_INV_OH_UNTS_EOP + Q_INV_IT_UNTS_EOP) > 0
;
/*
*/

Insert Over Stocks

DELETE FROM $BASEQUANDB.DW_OS_SKU_STR_W S


WHERE
--S.Q_WK_ID IN (SELECT MAX(A.Q_WK_ID) FROM
$BASEQUANVIEW.Q_QL_CAL_DT_V A WHERE A.Q_DT_ID = DATE '2011-01-22') /* FOR
TESTING ONLY */
Q_WK_ID IN (SELECT MAX(A.Q_WK_ID) FROM $BASEQUANVIEW.Q_QL_CAL_W_V A WHERE
A.Q_WK_ID<CURRENT_DATE)/* IN PRODUCTION */
;
INSERT INTO $BASEQUANDB.DW_OS_SKU_STR_W
(
Q_WK_ID
,
Q_SKU_ID
,
Q_STR_ID
,
Q_CCY_LCL_ID
,
BRD_KEY
,
MKT_KEY
,
CHNL_KEY
,
Q_OS_CNT
,
Q_OS_HLDNG_CDLRS
,
Q_OS_INV_UNTS
,
Q_OS_INV_CDLRS
,
Q_OS_INV_RDLRS
,
Q_OS_THRSLD_UNTS
)
SELECT
S.Q_WK_ID
,
S.Q_SKU_ID
,
S.Q_STR_ID
,
S.Q_CCY_LCL_ID
,
SUM(S.BRD_KEY)
,
SUM(S.MKT_KEY)
,
SUM(S.CHNL_KEY )
,
MAX(S.Q_OS_CNT)
,
CASE WHEN SUM(S.Q_OS_INV_UNTS) <> 0 THEN 1.0 * SUM(S.Q_OS_HLDNG_CDLRS)
* (SUM(S.Q_OS_INV_UNTS) - SUM(Q_OS_THRSLD_UNTS)) / SUM(S.Q_OS_INV_UNTS)
ELSE 0.0 END
,
SUM(S.Q_OS_INV_UNTS) - SUM(Q_OS_THRSLD_UNTS)
,
CASE WHEN SUM(S.Q_OS_INV_UNTS) <> 0 THEN 1.0 * SUM(S.Q_OS_INV_CDLRS)
* (SUM(S.Q_OS_INV_UNTS) - SUM(Q_OS_THRSLD_UNTS)) / SUM(S.Q_OS_INV_UNTS)
ELSE 0.0 END
,
CASE WHEN SUM(S.Q_OS_INV_UNTS) <> 0 THEN 1.0 * SUM(S.Q_OS_INV_RDLRS)
* (SUM(S.Q_OS_INV_UNTS) - SUM(Q_OS_THRSLD_UNTS)) / SUM(S.Q_OS_INV_UNTS)

Gap Quantisense Calendar TD

Page 129 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

ELSE 0.0 END


,
SUM(S.Q_OS_THRSLD_UNTS)
FROM
$BASEQUANDB.E_OS_SKU_STR_W S
GROUP BY
S.Q_WK_ID
,
S.Q_SKU_ID
,
S.Q_STR_ID
,
S.BRD_KEY
,
S.MKT_KEY
,
S.CHNL_KEY
,
S.Q_CCY_LCL_ID
HAVING
SUM(S.Q_OS_INV_UNTS) > SUM(S.Q_OS_THRSLD_UNTS)
AND SUM(S.Q_OS_INV_UNTS) > 0
AND SUM(S.Q_OS_THRSLD_UNTS) > 0
;
DELETE FROM $BASEQUANDB.DW_OS_SKU_STR_W WHERE Q_WK_ID<CURRENT_DATE-98;

8.14.1.2

PROCESSING SPECIFIC

Processing
Steps Covered

Process P9 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements: The source table table


Q_PA_SLS_SKU_STR_L13W_V, Q_QF_INV_SKU_STR_W_EOP_V
should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

8.15 COMPONENT: PDWQ11DU_RLI_OS_ETL.BTQ


8.15.1.1

Description of stages:

Source Table

TFCHD_FIS_CAL_HALF_YR_DIM

Target Table

DW_CAL_S

Business Function

Calculates and populates Overstock data for last

Gap Quantisense Calendar TD

Page 130 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

complete week.
BTEQ Steps

Load the Overstock parameters in


DW_OS_PAR_CLS.

Load the Sales for the trailing 13 weeks in the


intermediate table E_OS_SKU_STR_W.

Load the Inventory for the current week in


E_OS_SKU_STR_W.

Load the O in the table


DW_OS_SKU_STR_W.

DELETE FROM $BASEQUANDB.DW_SO_PAR_CLS ALL;


INSERT INTO $BASEQUANDB.DW_SO_PAR_CLS
(
Q_CLS_ID
,
Q_CLS_SNUM
,
Q_SO_SLS_RATE_WKS
,
Q_ISO_THRSHLD_WKS
)
SELECT
S.Q_CLS_ID
,
S.Q_CLS_SNUM
,
COALESCE(P1.Q_SO_SLS_RATE_WKS, P2.Q_SO_SLS_RATE_WKS_DFLT)
,
COALESCE(P1.Q_ISO_THRSHLD_WKS, P2.Q_ISO_THRSHLD_WKS_DFLT)
FROM
$BASEQUANVIEW.Q_QL_PRD_CLS_V S
LEFT OUTER JOIN
$BASEQUANDB.U_SO_PAR_CLS P1 ON
S.Q_CLS_SNUM =
P1.Q_CLS_SNUM
CROSS JOIN
$BASEQUANDB.U_SO_PAR_DFLT P2
;
/*
*/

Insert Sales For Trailing N Weeks

DELETE FROM $BASEQUANDB.E_SO_ISO_SKU_STR_W ALL;


INSERT INTO $BASEQUANDB.E_SO_ISO_SKU_STR_W
(
Q_WK_ID
,
Q_SKU_ID
,
Q_STR_ID
,
BRD_KEY
,
MKT_KEY
,
CHNL_KEY
,
Q_CCY_LCL_ID
,
Q_ISO_CNT
,
Q_ISO_IMM_LOST_SLS_UNTS
,
Q_ISO_IMM_LOST_SLS_RDLRS
,
Q_ISO_INV_UNTS
,
Q_ISO_THRSLD_UNTS
Gap Quantisense Calendar TD

Page 131 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

)
SELECT
P8.Q_WK_ID
,
S.Q_SKU_ID
,
S.Q_STR_ID
,
B.BRD_KEY
AS BRD_KEY
,
B.MKT_KEY
AS MKT_KEY
,
B.CHNL_KEY
AS CHNL_KEY
,
COALESCE(T.Q_CCY_LCL_ID, 'USD')
,
1
AS
Q_ISO_CNT
,
1.0 * S.Q_SLS_UNTS / B.Q_SO_SLS_RATE_WKS
Q_ISO_IMM_LOST_SLS_UNTS
,
S.Q_SLS_RDLRS / B.Q_SO_SLS_RATE_WKS
Q_ISO_IMM_LOST_SLS_RDLRS
,
0
AS
Q_ISO_INV_UNTS
,
1.0 * S.Q_SLS_UNTS * B.Q_ISO_THRSHLD_WKS/ B.Q_SO_SLS_RATE_WKS
Q_ISO_THRSLD_UNTS
FROM

AS
AS

AS

(SELECT T.Q_WK_ID AS Q_WK_ID , S.LOC_KEY AS Q_STR_ID , S.BRD_SKU_ID AS


Q_SKU_ID ,
SUM ( S.ITM_QTY ) AS Q_SLS_UNTS , SUM ( S.TOT_SLS_AMT ) AS Q_SLS_RDLRS
FROM $BASEVIEWDBS.TSTIW_SLS_TXN_LN_ITM_FCT S , $BASEQUANVIEW.Q_QL_CAL_DT_V
T ,
$BASEVIEWDBF.TSKUD_BRD_SKU_DIM P3 ,
$BASEVIEWDBF.TBMFD_BMC_MDSE_HIER_FLAT_DIM U
WHERE
TXN_DT>=Date '$l' AND TXN_DT <= CURRENT_DATE
AND S.TXN_DT = T.Q_DT_ID
AND S.BRD_SKU_ID = P3.BRD_SKU_KEY
AND P3.SKU_TYP_CD_ID = 141
AND P3.BRD_STY_CLR_KEY = U.BRD_STY_CLR_KEY
AND U.MKT_KEY IN ( 3 , 4 , 5 )
GROUP BY 1 , 2 , 3 ) S,
(SELECT
P3.Q_SKU_ID Q_SKU_ID ,
( 7 * ( P7.Q_SO_SLS_RATE_WKS - 1 ) ) SLS_RATE_WKS,
P7.Q_SO_SLS_RATE_WKS Q_SO_SLS_RATE_WKS,
P7.Q_ISO_THRSHLD_WKS Q_ISO_THRSHLD_WKS,
U.BRD_KEY BRD_KEY,
U.MKT_KEY MKT_KEY,
U.CHNL_KEY CHNL_KEY
FROM $BASEQUANVIEW.Q_QL_PRD_SKU_V P3 ,
$BASEVIEWDBF.TBMFD_BMC_MDSE_HIER_FLAT_DIM U,$BASEQUANVIEW.Q_QR_SO_PAR_CLS_V
P7
WHERE
P3.Q_STY_ID = U.BRD_STY_CLR_KEY AND U.BRD_CLS_KEY = P7.Q_CLS_ID)B,
$BASEQUANVIEW.Q_QL_LOC_STR_V T,
$BASEQUANVIEW.Q_QL_CAL_W_V P8
WHERE
S.Q_SKU_ID=B.Q_SKU_ID AND
S.Q_STR_ID = T.Q_STR_ID AND
S.Q_WK_ID BETWEEN P8.Q_WK_ID - B.SLS_RATE_WKS AND P8.Q_WK_ID AND
P8.Q_WK_ID IN (SELECT MAX(A.Q_WK_ID) FROM $BASEQUANVIEW.Q_QL_CAL_W_V A
WHERE A.Q_WK_ID<CURRENT_DATE);

Gap Quantisense Calendar TD

Page 132 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

;
/*
*/

Insert Inventory For Current Week

INSERT INTO $BASEQUANDB.E_SO_ISO_SKU_STR_W


(
Q_WK_ID
,
Q_SKU_ID
,
Q_STR_ID
,
BRD_KEY
,
MKT_KEY
,
CHNL_KEY
,
Q_CCY_LCL_ID
,
Q_ISO_CNT
,
Q_ISO_IMM_LOST_SLS_UNTS
,
Q_ISO_IMM_LOST_SLS_RDLRS
,
Q_ISO_INV_UNTS
,
Q_ISO_THRSLD_UNTS
)
SELECT
S.Q_WK_ID
,
S.Q_SKU_ID
,
S.Q_STR_ID
,
S.BRD_KEY
AS BRD_KEY
,
S.MKT_KEY
AS MKT_KEY
,
S.CHNL_KEY
AS CHNL_KEY
,
COALESCE(T.Q_CCY_LCL_ID, 'USD')
,
1
AS
Q_ISO_CNT
,
0
AS
Q_ISO_IMM_LOST_SLS_UNTS
,
0
AS
Q_ISO_IMM_LOST_SLS_RDLRS
,
COALESCE(Q_INV_OH_UNTS_EOP + Q_INV_IT_UNTS_EOP,0)
AS
Q_ISO_INV_UNTS
,
0
AS
Q_ISO_THRSLD_UNTS
FROM
$BASEQUANVIEW.Q_QF_INV_SKU_STR_W_EOP_V S
JOIN
$BASEQUANVIEW.Q_QL_LOC_STR_V T ON S.Q_STR_ID = T.Q_STR_ID
JOIN
$BASEQUANVIEW.Q_QL_PRD_SKU_V P3
ON S.Q_SKU_ID = P3.Q_SKU_ID
JOIN
$BASEQUANVIEW.Q_QL_PRD_STY_V
P4
ON P3.Q_STY_ID = P4.Q_STY_ID
JOIN
$BASEQUANVIEW.Q_PL_PRD_TBRSD_V P5
ON P4.BRD_STY_KEY =
P5.BRD_STY_KEY
JOIN
$BASEQUANVIEW.Q_PL_PRD_TBSCD_V
P6
ON P5.BRD_SCLS_KEY =
P6.BRD_SCLS_KEY
WHERE
S.Q_WK_ID IN (SELECT MAX(A.Q_WK_ID) FROM $BASEQUANVIEW.Q_QL_CAL_W_V A
WHERE A.Q_WK_ID<CURRENT_DATE) /* IN PRODUCTION */
AND (Q_INV_OH_UNTS_EOP + Q_INV_IT_UNTS_EOP) > 0
;
/*
*/

Insert Imminent Stock Outs

Gap Quantisense Calendar TD

Page 133 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

DELETE FROM $BASEQUANDB.DW_ISO_SKU_STR_W


WHERE
Q_WK_ID IN (SELECT MAX(A.Q_WK_ID) FROM $BASEQUANVIEW.Q_QL_CAL_W_V A WHERE
A.Q_WK_ID<CURRENT_DATE) /* IN PRODUCTION */
;
INSERT INTO $BASEQUANDB.DW_ISO_SKU_STR_W
(
Q_WK_ID
,
Q_SKU_ID
,
Q_STR_ID
,
BRD_KEY
,
MKT_KEY
,
CHNL_KEY
,
Q_CCY_LCL_ID
,
Q_ISO_CNT
,
Q_ISO_IMM_LOST_SLS_UNTS
,
Q_ISO_IMM_LOST_SLS_RDLRS
,
Q_ISO_INV_UNTS
,
Q_ISO_THRSLD_UNTS
)
SELECT
S.Q_WK_ID
,
S.Q_SKU_ID
,
S.Q_STR_ID
,
MAX(S.BRD_KEY)
,
MAX(S.MKT_KEY)
,
MAX(S.CHNL_KEY)
,
S.Q_CCY_LCL_ID
,
MAX(S.Q_ISO_CNT)
,
SUM(S.Q_ISO_IMM_LOST_SLS_UNTS)
,
SUM(S.Q_ISO_IMM_LOST_SLS_RDLRS)
,
SUM(S.Q_ISO_INV_UNTS)
,
SUM(S.Q_ISO_THRSLD_UNTS)
FROM
$BASEQUANDB.E_SO_ISO_SKU_STR_W S
GROUP BY
S.Q_WK_ID
,
S.Q_SKU_ID
,
S.Q_STR_ID
,
S.Q_CCY_LCL_ID
HAVING
SUM(S.Q_ISO_INV_UNTS) BETWEEN 1 AND SUM(S.Q_ISO_THRSLD_UNTS)
AND SUM(S.Q_ISO_IMM_LOST_SLS_UNTS) > 0
;
.IF ERRORCODE <> 0 THEN .QUIT 99
CALL SYSADMIN.COLLECTSTATS(' $BASEQUANDB.DW_ISO_SKU_STR_W')
;
END TRANSACTION;

Gap Quantisense Calendar TD

Page 134 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

BEGIN TRANSACTION;
DELETE FROM $BASEQUANDB.DW_SO_SKU_STR_W
WHERE
Q_WK_ID IN (SELECT MAX(A.Q_WK_ID) FROM $BASEQUANVIEW.Q_QL_CAL_W_V A WHERE
A.Q_WK_ID<CURRENT_DATE) /* IN PRODUCTION */
;
INSERT INTO $BASEQUANDB.DW_SO_SKU_STR_W
(
Q_WK_ID
,
Q_SKU_ID
,
Q_STR_ID
,
BRD_KEY
,
MKT_KEY
,
CHNL_KEY
,
Q_CCY_LCL_ID
,
Q_SO_CNT
,
Q_SO_LOST_SLS_UNTS
,
Q_SO_LOST_SLS_RDLRS
)
SELECT
S.Q_WK_ID
,
S.Q_SKU_ID
,
S.Q_STR_ID
,
MAX(S.BRD_KEY)
,
MAX(S.MKT_KEY)
,
MAX(S.CHNL_KEY)
,
S.Q_CCY_LCL_ID
,
MAX(S.Q_ISO_CNT)
,
SUM(S.Q_ISO_IMM_LOST_SLS_UNTS)
,
SUM(S.Q_ISO_IMM_LOST_SLS_RDLRS)
FROM
$BASEQUANDB.E_SO_ISO_SKU_STR_W S
GROUP BY
S.Q_WK_ID
,
S.Q_SKU_ID
,
S.Q_STR_ID
,
S.Q_CCY_LCL_ID
HAVING
SUM(S.Q_ISO_INV_UNTS) = 0
AND SUM(S.Q_ISO_IMM_LOST_SLS_UNTS) > 0
;
DELETE FROM $BASEQUANDB.DW_ISO_SKU_STR_W WHERE Q_WK_ID<CURRENT_DATE-98;

8.15.1.2

PROCESSING SPECIFIC

Gap Quantisense Calendar TD

Page 135 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Processing
Steps Covered

Process P10 in FD is implemented in this job.

Parallel
Processing

Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.

Pre/Post
Processing
Requirements

Pre-Processing Requirements: The source table


Q_PA_SLS_SKU_STR_L13W_V, Q_QF_INV_SKU_STR_W_EOP_V
should be loaded.
Post:
None

Error / Audit
Handling

Refer Section 11.2

Retry / Restart
Flow

Refer Section 10.2

Other

None

Gap Quantisense Calendar TD

Page 136 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

9 DATA VOLUME AND SIZING


INSTRUCTIONS

Provide a general feel for the volume and performance requirements. These requirements have a
slightly different feel for Batch versus Near Real Time or Request Reply, but the same general
characteristics are needed. Fill in the required information for your Interface Functional Design
9.1.1
Average

Peak

Record Size
Source:

TFCYD_FIS_CAL_YR_DIM

TFCYD_FIS_CAL_YR_DIM

Target:

DW_CAL_Y

DW_CAL_Y

Header to Detail
Ratio:

N/A

N/A
Volume

Source Table / File:


Extracted Records:

TFCYD_FIS_CAL_YR_DIM

TFCYD_FIS_CAL_YR_DIM

Approximately: 10360

Approximately: 10360

TFCYD_FIS_CAL_YR_DIM

TFCYD_FIS_CAL_YR_DIM

Approximately: 10360

Approximately: 10360

Transaction/Message N/A
Rate:
Availability
Requirements:

N/A

Batch:
The source table TFCYD_FIS_CAL_YR_DIM must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

9.1.2

Gap Quantisense Calendar TD

Page 137 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Average

Peak

Record Size
Source:

TFCHD_FIS_CAL_HALF_YR_DIM

TFCHD_FIS_CAL_HALF_YR_DIM

Target:

DW_CAL_S

DW_CAL_S

Header to Detail
Ratio:

N/A

N/A

Volume
TFCHD_FIS_CAL_HALF_YR_DIM

TFCHD_FIS_CAL_HALF_YR_DIM

Approximately: 752

Approximately:

TFCHD_FIS_CAL_HALF_YR_DIM

TFCHD_FIS_CAL_HALF_YR_DIM

Approximately:

Approximately:

Source Table / File:


Extracted Records:

Transaction/Message N/A
Rate:
Availability
Requirements:

N/A

Batch:
The source table TFCHD_FIS_CAL_HALF_YR_DIM must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Gap Quantisense Calendar TD

Page 138 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Average

Peak

Record Size
Source:

TFCQD_FIS_CAL_QTR_DIM

TFCQD_FIS_CAL_QTR_DIM

Target:

DW_CAL_Q

DW_CAL_Q

Header to Detail
Ratio:

N/A

N/A

Source Table / File:

TFCQD_FIS_CAL_QTR_DIM

TFCQD_FIS_CAL_QTR_DIM

Approximately:

Approximately:

TFCQD_FIS_CAL_QTR_DIM

TFCQD_FIS_CAL_QTR_DIM

Approximately:

Approximately:

Volume

Extracted Records:

Transaction/Message N/A
Rate:
Availability
Requirements:

N/A

Batch:
The source table TFCQD_FIS_CAL_QTR_DIM must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Gap Quantisense Calendar TD

Page 139 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Average

Peak

Record Size
Source:

TFCMD_FIS_CAL_MO_DIM

TFCMD_FIS_CAL_MO_DIM

Target:

DW_CAL_S

DW_CAL_S

Header to Detail
Ratio:

N/A

N/A

Source Table / File:

TFCMD_FIS_CAL_MO_DIM

TFCMD_FIS_CAL_MO_DIM

Approximately:

Approximately:

TFCMD_FIS_CAL_MO_DIM

TFCMD_FIS_CAL_MO_DIM

Approximately:

Approximately:

Volume

Extracted Records:

Transaction/Message N/A
Rate:
Availability
Requirements:

N/A

Batch:
The source table TFCMD_FIS_CAL_MO_DIM must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Gap Quantisense Calendar TD

Page 140 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Average

Peak

Record Size
Source:

TFCWD_FIS_CAL_WK_DIM

TFCWD_FIS_CAL_WK_DIM

Target:

DW_CAL_W

DW_CAL_W

Header to Detail
Ratio:

N/A

N/A

Source Table / File:

TFCWD_FIS_CAL_WK_DIM

TFCWD_FIS_CAL_WK_DIM

Approximately:

Approximately:

TFCWD_FIS_CAL_WK_DIM

TFCWD_FIS_CAL_WK_DIM

Approximately:

Approximately:

Volume

Extracted Records:

Transaction/Message N/A
Rate:
Availability
Requirements:

N/A

Batch:
The source table TFCWD_FIS_CAL_WK_DIM must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Gap Quantisense Calendar TD

Page 141 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Average

Peak

Record Size
Source:

TFCDD_FIS_CAL_DT_DIM

TFCDD_FIS_CAL_DT_DIM

Target:

DW_CAL_DT

DW_CAL_DT

Header to Detail
Ratio:

N/A

N/A
Volume

Source Table / File:


Extracted Records:

TFCDD_FIS_CAL_DT_DIM

TFCDD_FIS_CAL_DT_DIM

Approximately:

Approximately:

TFCDD_FIS_CAL_DT_DIM

TFCDD_FIS_CAL_DT_DIM

Approximately:

Approximately:

Transaction/Message N/A
Rate:
Availability
Requirements:

N/A

Batch:
The source table TFCDD_FIS_CAL_DT_DIM must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Gap Quantisense Calendar TD

Page 142 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Average

Peak

Record Size
Source:

TSFCW_STR_FIN_CMPSLS_FCTDW_CAL_W

TSFCW_STR_FIN_CMPSLS_F
CTDW_CAL_W

Target:

DW_LOC_CMP_STR_DDW_CAL_W_L4W,
DW_CAL_W_L8W, DW_CAL_W_N4W,
DW_CAL_W_LY_N4W

DW_LOC_CMP_STR_DDW_CA
L_W_L4W, DW_CAL_W_L8W,
DW_CAL_W_N4W,
DW_CAL_W_LY_N4W

Header to Detail
Ratio:

N/A

Source Table / File:

N/A

Volume
TSFCW_STR_FIN_CMPSLS_FCTDW_CAL_DT
Approximately:

Need to Update

TSFCW_STR_FIN_CMPSLS_F
CT
DW_CAL_W
Approximately:

Need to

Update
Extracted Records:

TSFCW_STR_FIN_CMPSLS_FCT
DW_CAL_W
Approximately:

Need to Update

Transaction/Message N/A
Rate:
Availability
Requirements:

TSFCW_STR_FIN_CMPSLS_F
CTDW_CAL_W
Approximately:

Need to

Update
N/A

Batch:
The source table TSFCW_STR_FIN_CMPSLS_FCT DW_CAL_DT must be available
Near Real Time: NA

Gap Quantisense Calendar TD

Page 143 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Average

Peak

Record Size
Source:

TCXRW_CNCY_XCHG_RAT_FCT

TCXRW_CNCY_XCHG_RAT_FCT

Target:

DW_CCY_EXCH

DW_CCY_EXCH

Header to Detail
Ratio:

N/A

N/A

Volume
TCXRW_CNCY_XCHG_RAT_FCT

TCXRW_CNCY_XCHG_RAT_FCT

Source Table / File:

Approximately:

Extracted Records:

Need to Update

TCXRW_CNCY_XCHG_RAT_FCT
Approximately:

Need to Update

Transaction/Message N/A
Rate:
Availability
Requirements:

Approximately:

Need to Update

TCXRW_CNCY_XCHG_RAT_FCT
Approximately:

Need to Update

N/A

Batch:
The source table TCXRW_CNCY_XCHG_RAT_FCT must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Gap Quantisense Calendar TD

Page 144 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Average

Peak

Record Size
Source:

DW_CAL_W

DW_CAL_W

Target:

DW_CAL_W_L4W, DW_CAL_W_L8W,
DW_CAL_W_N4W, DW_CAL_W_LY_N4W

DW_CAL_W_L4W,
DW_CAL_W_L8W,
DW_CAL_W_N4W,
DW_CAL_W_LY_N4W

Header to Detail
Ratio:

N/A

N/A
Volume

Source Table / File:


Extracted Records:

DW_CAL_DT

DW_CAL_W

Approximately:

Approximately:

DW_CAL_W

DW_CAL_W

Approximately:

Approximately:

Transaction/Message N/A
Rate:
Availability
Requirements:

N/A

Batch:
The source table DW_CAL_DT must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Average

Gap Quantisense Calendar TD

Peak

Page 145 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Record Size
Source:

TSFCW_STR_FIN_CMPSLS_FCT

TSFCW_STR_FIN_CMPSLS_FCT

Target:

DW_LOC_CMP_STR_D

DW_LOC_CMP_STR_D

Header to Detail
Ratio:

N/A

N/A

Volume
TSFCW_STR_FIN_CMPSLS_FCT

TSFCW_STR_FIN_CMPSLS_FCT

Source Table / File:

Approximately:

Extracted Records:

Need to Update

TSFCW_STR_FIN_CMPSLS_FCT
Approximately:

Need to Update

Transaction/Message N/A
Rate:
Availability
Requirements:

Approximately:

Need to Update

TSFCW_STR_FIN_CMPSLS_FCT
Approximately:

Need to Update

N/A

Batch:
The source table TSFCW_STR_FIN_CMPSLS_FCT must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Gap Quantisense Calendar TD

Page 146 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Average

Peak

Record Size
Source:

TCXRW_CNCY_XCHG_RAT_FCT

TCXRW_CNCY_XCHG_RAT_FCT

Target:

DW_CCY_EXCH

DW_CCY_EXCH

Header to Detail
Ratio:

N/A

N/A

Volume
TCXRW_CNCY_XCHG_RAT_FCT

TCXRW_CNCY_XCHG_RAT_FCT

Source Table / File:

Approximately:

Extracted Records:

Need to Update

TCXRW_CNCY_XCHG_RAT_FCT
Approximately:

Need to Update

Transaction/Message N/A
Rate:
Availability
Requirements:

Approximately:

Need to Update

TCXRW_CNCY_XCHG_RAT_FCT
Approximately:

Need to Update

N/A

Batch:
The source table TCXRW_CNCY_XCHG_RAT_FCT must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Average

Gap Quantisense Calendar TD

Peak

Page 147 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

Record Size
Q_PA_SLS_SKU_STR_L13W_V

Q_PA_SLS_SKU_STR_L13W_V

Q_QF_INV_SKU_STR_W_EOP_V

Q_QF_INV_SKU_STR_W_EOP_V

Target:

DW_OS_SKU_STR_W

DW_OS_SKU_STR_W

Header to Detail
Ratio:

N/A

N/A

Volume
Q_PA_SLS_SKU_STR_L13W_V

Q_PA_SLS_SKU_STR_L13W_V

Approximately: Need to Update

Approximately: Need to Update

Q_QF_INV_SKU_STR_W_EOP_V

Q_QF_INV_SKU_STR_W_EOP_V

Approximately:

Approximately:

Q_PA_SLS_SKU_STR_L13W_V

Q_PA_SLS_SKU_STR_L13W_V

Approximately: Need to Update

Approximately: Need to Update

Source:

Source Table / File:

Extracted Records:

Q_QF_INV_SKU_STR_W_EOP_V
Q_QF_INV_SKU_STR_W_EOP_V

Approximately:

Approximately:
Transaction/Message N/A
Rate:
Availability
Requirements:

N/A

Batch:
The source table TFCYD_FIS_CAL_YR_DIM must be available
Near Real Time: NA

Performance
Requirements:

Batch:
Near Real Time: NA

Restart/Recovery
Requirements:

Gap Production Support will monitor any failures and contact the appropriate IT support
person.
Restart from the beginning of the LUW if process fails at any point.

Backup
Requirements:

None

Average

Gap Quantisense Calendar TD

Peak

Page 148 of 161

Interface Technical Design


Gap Quantisense Calendar TD
Record Size
Performance
Source:
Requirements:
Restart/Recovery
Requirements:
Target:
Header to Detail
Backup
Ratio:
Requirements:
Source Table / File:

Extracted Records:

ETL Implementation Details

Batch:
Q_PA_SLS_SKU_STR_L13W_V
Q_PA_SLS_SKU_STR_L13W_V
Near Real Time: NA
Q_QF_INV_SKU_STR_W_EOP_V
Q_QF_INV_SKU_STR_W_EOP_V
Gap Production Support will monitor any failures and contact the appropriate IT support
person.
DW_SO_SKU_STR_W
DW_SO_SKU_STR_W
Restart from the beginning of the LUW if process fails at any point.
N/A
N/A
None
Volume
Q_PA_SLS_SKU_STR_L13W_V

Q_PA_SLS_SKU_STR_L13W_V

Approximately: Need to Update

Approximately: Need to Update

Q_QF_INV_SKU_STR_W_EOP_V

Q_QF_INV_SKU_STR_W_EOP_V

Approximately:

Approximately:

Q_PA_SLS_SKU_STR_L13W_V

Q_PA_SLS_SKU_STR_L13W_V

Approximately: Need to Update

Approximately: Need to Update


Q_QF_INV_SKU_STR_W_EOP_V

Q_QF_INV_SKU_STR_W_EOP_V

Approximately:

Approximately:
Transaction/Message N/A
Rate:
Availability
Requirements:

N/A

Batch:
The source table TFCYD_FIS_CAL_YR_DIM must be available
Near Real Time: NA

Gap Quantisense Calendar TD

Page 149 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

10 INTERFACE TRANSPORT CONFIGURATION


INSTRUCTIONS

Provide a view of the Interface Transport Configuration.


MQ Setup, ODBC setup, FTP configurations if any.
Please refer to the interface flow diagram in section 4.1

Gap Quantisense Calendar TD

Page 150 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

11 ADMINISTRATION & MAINTENANCE


INSTRUCTIONS

Detail all administrative and maintenance activities required for this interface as known
at this time.

11.1 EXECUTION STRATEGY


INSTRUCTIONS

Detail how the interface is expected to be initiated e.g. via ESP, or triggered by a realtime event, etc. This should include a list of the parameters to be passed at the start of
processing, if relevant.
Daily basis.

11.2

RESTART / RETRY STRATEGY


INSTRUCTIONS

Detail how the interface will handle restart/retry requests from the MRF. This should
include detail of any support jobs developed to handle this processing
All jobs can be restarted after fixing the issue. There will not be any need for clean-up or manual
intervention for restart.

11.3

INTERFACE CONFIGURATION DETAILS


INSTRUCTIONS

Provide details on any other configuration requirements needed for this interface to
function successfully, reliably and efficiently.
None

Gap Quantisense Calendar TD

Page 151 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

12 INTERFACE CONTROLS
INSTRUCTIONS

Document the implementation details of the interface controls specified in the Interface
Functional Design below. Interface Controls are used to ensure that the interface is run
at the right time, in the right sequence and using the correct data. In addition, data
interface verification used to validate that the interface is working in production should
be included in this section.
Depending on Business requirements, there may be a need to provide audit trails
and/or alerts to satisfy preventive and detective interface controls. If reports are used
to verify the interface, then a business process should exist to review them Periodically
and take appropriate corrective action where necessary. These details will also be
documented in this section.
Refer to the guidelines published in the IT Control Standards web site.
Required or Optional, and Implement is a two-letter pair. The first is either R = Required
or O = Optional, the second letter Y = Will be Implemented or N = Will not be
implemented. For example, R/Y, R/N, O/Y, or O/N>.
This section is not needed for simple FTP interface as controls should reside on the
target applications.

12.1 INTERFACE CONTROLS COMPLETENESS & ACCURACY


Control
Code

Control Activity

Areas Used

CA1

Input/Output
Controls

Note: programmatic validations are required.


Input & output controls are as following
1. Number of records read from the source
driving table should be equal to the
number of records written to the target
table (T1).

CA2

Data Consolidation/
Expansion

NA

CA5

Duplicate Data
Check

N/A. Since duplicate data checks are


controlled automatically through table
constraints that are used by the interface that
populates the message.

CA7

Run-to-Run

NA

CA8

File Existence Check

NA

Gap Quantisense Calendar TD

Business Process
http://sharepoint.gap.co
m/sites/nsis1/Release
%2015/07%20%20Business
%20Intelligence/Requir
ements/BDF%20BI
%20Business
%20Requirements
%20Release
%201.5%20v7.doc

Page 152 of 161

Interface Technical Design


Gap Quantisense Calendar TD

12.2
Control
Code

INTERFACE CONTROLS EXCEPTION HANDLING


Control Activity

Purpose

CB1

Multiple Points of
Failure

1. Source tables are not available


2. Error while writing to the target table.

CB2

Exception/Error Log

Error messages are provided by ETL in


an error log table.

In the case of ETL errors alerts would be


sent as per problem management
procedures.

The IT Support team would debug any


issue using the error log and resolve the
issue and rerun from the top.

CB3

ETL Implementation Details

Error Handling
Procedures

Gap Quantisense Calendar TD

Business Process
http://sharepoint.gap.co
m/sites/BISAR/BCR
%20Wave2/Teradata/S
OW%20Contracted
%20Deliverables/D503%20BI%20Business
%20and%20Functional
%20Specifications
%20Requirements
%20Documentation/zzF
inal%20Requirements
%20Documents/Drop
%204%20Store
%20Productivity_BI
%20Business%20and
%20Functional
%20Requirements_Fin
al%20(4).doc

Page 153 of 161

Interface Technical Design


Gap Quantisense Calendar TD

12.3
Control
Code

ETL Implementation Details

INTERFACE CONTROLS SECURITY


Control Activity

Purpose

CC1

Program/file
Restrictions

All processes executed through job control


requiring execution authority.

CC2

Encryption

No data encryption or other security checking


is required in this interface. The data
classification is not sensitive to warrant an
encryption process.

Gap Quantisense Calendar TD

Business Process
http://sharepoint.gap.co
m/sites/BISAR/BCR
%20Wave2/Teradata/S
OW%20Contracted
%20Deliverables/D503%20BI%20Business
%20and%20Functional
%20Specifications
%20Requirements
%20Documentation/zzF
inal%20Requirements
%20Documents/Drop
%204%20Store
%20Productivity_BI
%20Business%20and
%20Functional
%20Requirements_Fin
al%20(4).doc

Page 154 of 161

Interface Technical Design


Gap Quantisense Calendar TD

12.4
Control
Code

ETL Implementation Details

INTERFACE CONTROLS TIMING


Control Activity

Purpose

CD1

Job Scheduling

Data should be made available to the


subscribers within the SLA.

CD2

Interface Service
Level Agreements
(SLAs)

Sev 3

CD3

Acknowledgements
and Confirmation
Messages

The ESP scheduler will provide Job start


and end date / time

CD4

Contingency
Planning

Data and issues (i.e. failed records)


should be resolved by IT before output
data is consumed by downstream
applications. A production support
process should be in place for the BI
production support teams.

Data errors in this interface will


correspond to Sev 3. Escalation and
approvals required to fix the problems will
follow standard Gap IT problem resolution
procedures. Please refer to the IT
Problem Support Guide on GapWeb.

Gap Quantisense Calendar TD

Business Process
http://sharepoint.gap.co
m/sites/BISAR/BCR
%20Wave2/Teradata/S
OW%20Contracted
%20Deliverables/D503%20BI%20Business
%20and%20Functional
%20Specifications
%20Requirements
%20Documentation/zzF
inal%20Requirements
%20Documents/Drop
%204%20Store
%20Productivity_BI
%20Business%20and
%20Functional
%20Requirements_Fin
al%20(4).doc

Page 155 of 161

Interface Technical Design


Gap Quantisense Calendar TD

12.5
Control
Code
CE1

INTERFACE CONTROLS TRACEABILITY


Control Activity
Audit Logs

Purpose
The ETL tool will provide:

Records count read/write from the source


and to the target.

Error messages for each failure


associated to table accessing and table
row insert.
Note : Inline audit process will be performed
CE2

ETL Implementation Details

Source Record
Identification

Gap Quantisense Calendar TD

There are no specific columns on target data


that identify the source of the data.

Business Process
http://sharepoint.gap.com
/sites/BISAR/BCR
%20Wave2/Teradata/SO
W%20Contracted
%20Deliverables/D503%20BI%20Business
%20and%20Functional
%20Specifications
%20Requirements
%20Documentation/zzFin
al%20Requirements
%20Documents/Drop
%204%20Store
%20Productivity_BI
%20Business%20and
%20Functional
%20Requirements_Final
%20(4).doc

Page 156 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

13 UNIT TEST CONDITIONS


INSTRUCTIONS

If Unit test conditions and Interface Controls Test conditions are maintained in a
separate document or in Quality center, provide links to the same and the rest of this
section does not need to be filled up.

Gap Quantisense Calendar TD

Page 157 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

14 ISSUE DOCUMENTATION
INSTRUCTIONS

Track all issues in Quality Center however a brief description of the issue must be
provided in the table below.

Sl.
No
1
2
3
4

Gap Quantisense Calendar TD

Issue

Resolution/Answer

Quality
Center #

Page 158 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

15 GLOSSARY
TERM

Gap Quantisense Calendar TD

DEFINITION

Page 159 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

16 LOG MESSAGES
INSTRUCTIONS

Identify any log messages that you expect to use. All log calls will use a single
repository of standard log messages.

Gap Quantisense Calendar TD

Condition

Log Text

Page 160 of 161

Interface Technical Design


Gap Quantisense Calendar TD

ETL Implementation Details

17 APPENDIX

Gap Quantisense Calendar TD

Page 161 of 161

You might also like