Professional Documents
Culture Documents
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
CONTENTS
CONTENTS.........................................................................................................................2
1
DOCUMENT APPROVERS............................................................................................................. 5
1.2
DOCUMENT REVIEWERS.............................................................................................................. 5
1.3
1.4
SUPPORTING DOCUMENTS.......................................................................................................... 5
INTERFACE OVERVIEW.............................................................................................8
3.1
DESIGN ASSUMPTIONS................................................................................................................ 8
DATA........................................................................................... 11
5.2
5.3
5.4
5.5
5.6
5.7
OVERVIEW............................................................................................................................... 15
7.2
DATA DEFINITIONS.................................................................................................................... 16
7.3
7.4
COMPONENT: PDWQ01DU_CAL_Y_ETL.BTQ......................................................................17
Page 2 of 161
COMPONENT: PDWQ02DU_CAL_S_ETL.BTQ......................................................................22
COMPONENT: PDWQ03DU_CAL_Q_ETL.BTQ.....................................................................27
PROCESSING SPECIFICS......................................................................................................... 32
COMPONENT: PDWQ04DU_CAL_M_ETL.BTQ...................................................................32
COMPONENT: PDWQ05DU_CAL_W_ETL.BTQ....................................................................37
COMPONENT: PDWQ06DU_CAL_DT_ETL.BTQ...................................................................43
DESCRIPTION OF STAGES................................................................................................51
7.10.2
PROCESSING SPECIFICS.................................................................................................53
10
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
Page 3 of 161
12
13
ISSUE DOCUMENTATION........................................................................................69
14
GLOSSARY...............................................................................................................70
15
LOG MESSAGES......................................................................................................71
16
APPENDIX................................................................................................................72
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
3/22/2011
0.1.2
Carlos D'Almeida
3/24/2011
0.1.3
Carlos D'Almeida
3/28/2011
0.1.4
Carlos D'Almeida
4/27/11
0.1.5
Carlos D'Almeida
3Need to
Update3/14/2011
Author
Need to Update
Page 4 of 161
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
Page 5 of 161
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
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
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
DOCUMENT TITLE
IGPR.R1.DWQ.INT.01.
PDWQ_STG_BASE_T
D.doc
DOCUMENT
TYPE
Technical Design
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
2 DESIGN ASSUMPTIONS
2.1
DESIGN ASSUMPTIONS
Assumptions:
3.
The table and column names have been chosen to match the
configuration in MicroStrategy for the QuantiSense project.
Page 8 of 161
Page 9 of 161
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.
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.
Page 10 of 161
5.1
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
Page 11 of 161
5.3
Page 12 of 161
5.4
Page 13 of 161
5.5
is as below:
Page 14 of 161
5.6
Page 15 of 161
5.7
Page 16 of 161
5.8
Page 17 of 161
Page 18 of 161
Page 19 of 161
Page 20 of 161
5.9
Page 21 of 161
Page 22 of 161
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.
Page 23 of 161
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.
Page 24 of 161
Page 25 of 161
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.
Page 26 of 161
Page 27 of 161
Page 28 of 161
Page 29 of 161
Page 30 of 161
Page 31 of 161
Time Transformations
The Time Transformation tables are loaded after the Calendar tables have been loaded. Each
transformation is loaded using a separate ETL.
Page 32 of 161
Page 33 of 161
This section depicts the data flow of the entire interface. Label each source, lookup,
and target.
6.1
DETAILED DESCRIPTION
INSTRUCTIONS
6.2
6.3
Page 34 of 161
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
6.5
6.6
Page 35 of 161
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
6.8
6.9
Page 36 of 161
6.10
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
Page 37 of 161
Page 38 of 161
Document the implementation details for message broker interface. This section
should be completed only if message broker is the proposed integration tool.
None
Page 39 of 161
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
Page 40 of 161
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
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
8.2
DATA DEFINITIONS
Input message Structure:
NA
Intermediate Files
NA
Table definitions
8.3
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
Page 42 of 161
Source Table
TFCYD_FIS_CAL_YR_DIM
Target Table
DW_CAL_Y
Business Function
BTEQ Steps
Page 43 of 161
, 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
*/
Page 44 of 161
T.Q_YR_ID IS NULL
/*
Insert Changes
*/
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 $BASEQUANDB.DW_CAL_S T
SET
Q_FRST_DT_IN_YR
*/
$BASEQUANDB.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
Page 45 of 161
,
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 $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 $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 $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 $BASEQUANDB.DW_CAL_DT T
SET
Q_FRST_DT_IN_YR
*/
$BASEQUANDB.E_CAL_Y_CHG.Q_FRST_DT_IN_YR
Page 46 of 161
,
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
*/
Page 47 of 161
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
*/
Update Changes
*/
UPDATE DBQS_DEV.DW_CAL_Y T
Page 48 of 161
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 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 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 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 DBQS_DEV.DW_CAL_W T
Page 49 of 161
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 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.5
8.5.1.1
Processing
Steps Covered
Parallel
Processing
Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.
Pre/Post
Processing
Requirements
Error / Audit
Handling
Retry / Restart
Flow
Other
None
COMPONENT: PDWQ02DU_CAL_S_ETL.BTQ
DESCRIPTION OF STAGES
TFCHD_FIS_CAL_HALF_YR_DIM
Page 50 of 161
Target Table
DW_CAL_S
Business Function
BTEQ Steps
/*
*/
Page 51 of 161
Detect Changes
= 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
T.Q_SEA_LY
T.Q_SEA_2YA
T.Q_YR_ID
T.Q_SEA_ID IS NULL
/*
*/
Insert Changes
<>
<>
<>
S.Q_SEA_LY
S.Q_SEA_2YA
S.Q_YR_ID
Update Changes
UPDATE $BASEQUANDB.DW_CAL_S T
Page 53 of 161
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 $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 $BASEQUANDB.DW_CAL_M T
SET
Page 54 of 161
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 $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 $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
=
Page 55 of 161
$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
*/
Detect Changes
*/
Page 56 of 161
(
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
*/
Page 57 of 161
, 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 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
Page 58 of 161
, 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 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 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 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
Page 59 of 161
, 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
Parallel
Processing
Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.
Pre/Post
Processing
Requirements
Error / Audit
Handling
Retry / Restart
Flow
Other
None
COMPONENT: PDWQ03DU_CAL_Q_ETL.BTQ
TFCQD_FIS_CAL_QTR_DIM
Target Table
DW_CAL_Q
Business Function
BTEQ Steps
Page 60 of 161
/*
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
Page 61 of 161
= 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
Page 62 of 161
,
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
Page 63 of 161
$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'
;
/*
*/
Page 64 of 161
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 $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
Page 65 of 161
$BASEQUANDB.E_CAL_Q_CHG.Q_SEA_ID = $BASEQUANDB.DW_CAL_S.Q_SEA_ID
$BASEQUANDB.E_CAL_Q_CHG.CHG_FLG = 'X'
/*
*/
Page 66 of 161
, 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
*/
/*
Insert Changes
*/
Page 67 of 161
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
Page 68 of 161
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
= $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 $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 $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
Page 69 of 161
, 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 $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
Parallel
Processing
Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.
Pre/Post
Processing
Requirements
Error / Audit
Handling
Retry / Restart
Flow
Other
None
Page 70 of 161
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
BTEQ Steps
AS
AS
AS
AS
Q_MON_ID
Q_MON_DNUM
Q_MON_DESC
Q_MON_SDESC
Page 71 of 161
, 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
= S.Q_MON_ID
<>
<>
<>
S.Q_MON_DNUM
S.Q_MON_DESC
S.Q_MON_SDESC
Page 72 of 161
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
<>
<>
<>
<>
<>
S.Q_FRST_DT_IN_MON
S.Q_LAST_DT_IN_MON
S.Q_MON_LY
S.Q_MON_2YA
S.Q_QTR_ID
Page 73 of 161
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
Page 74 of 161
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 $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
Page 75 of 161
,
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
*/
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
Detect Changes
*/
Insert Changes
*/
Page 77 of 161
Page 78 of 161
/*
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
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 $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
Page 79 of 161
*/
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'
;
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
Retry / Restart
Flow
Other
None
Page 80 of 161
8.8
8.8.1.1
8.8.2
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
BTEQ Steps
Page 81 of 161
, 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
Page 82 of 161
,
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
Page 83 of 161
,
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
Page 84 of 161
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
Page 85 of 161
,
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 $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
Page 86 of 161
,
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
*/
Page 87 of 161
Detect Changes
*/
Page 88 of 161
, 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
*/
Page 89 of 161
, 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
Page 90 of 161
, 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 $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
Page 91 of 161
, 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'
;
8.9
8.9.1.1
Processing
Steps Covered
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
Retry / Restart
Flow
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
BTEQ Steps
Page 93 of 161
Detect Changes
*/
Page 94 of 161
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
Page 95 of 161
,
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
*/
Page 96 of 161
,
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
Page 97 of 161
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
*/
=
=
=
$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
$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
8.9.1.2
PROCESSING SPECIFCS
Processing
Steps Covered
TFCDD_FIS_CAL_DT_DIM
Lookup Table
TFCWD_FIS_CAL_WK_DIM
TFCFD_FIS_CAL_FLATTENED_DIM
Target Table
DW_CAL_DT
Business Function
BTEQ Steps
/*
*/
, 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
Detect Changes
*/
, 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
*/
, 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
, 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
, 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'
;
7.9.2
PROCESSING SPECIFICS
Processing
Steps Covered
Parallel
Processing
Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.
Pre/Post
Processing
Requirements
Error / Audit
Handling
Retry / Restart
Flow
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
BTEQ Steps
*/
*/
*/
8.10.1.2
PROCESSING SPECIFIC
*/
*/
(
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
*/
*/
Parallel
Processing
Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.
Pre/Post
Processing
Requirements
Error / Audit
Handling
Retry / Restart
Flow
Other
None
TFCDD_FIS_CAL_DT_DIM
Lookup Table
TFCWD_FIS_CAL_WK_DIM
TFCFD_FIS_CAL_FLATTENED_DIM
Target Table
DW_CAL_DT
Business Function
BTEQ Steps
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
*/
,
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
$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
*/
,
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
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
*/
=
=
=
=
=
=
=
=
$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
$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'
Processing
Steps Covered
Parallel
Processing
Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.
Pre/Post
Processing
Requirements
Error / Audit
Handling
Retry / Restart
Flow
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
BTEQ Steps
Detect Changes
- TY
*/
AS
= NY.Q_DT_ID
= S.Q_STR_ID
<>
<>
S.Q_CMP_FLG
NY.Q_CMP_FLG
Insert 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
=
=
8.12.1.2
$BASEQUANDB.E_LOC_CMP_STR_D_CHG.CHG_FLG = 'X'
PROCESSING SPECIFIC
Processing
Steps Covered
Parallel
Processing
Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.
Pre/Post
Processing
Requirements
Error / Audit
Handling
Retry / Restart
Flow
Other
None
Description of stages:
Source Table
TCXRW_CNCY_XCHG_RAT_FCT
Target Table
DW_CCY_EXCH
Business Function
,
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
*/
Insert Changes
*/
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
Parallel
Processing
Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.
Pre/Post
Processing
Requirements
Error / Audit
Handling
Retry / Restart
Flow
Other
None
Description of stages:
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
BTEQ Steps
,
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
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 )
;
/*
*/
$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
;
/*
*/
8.14.1.2
PROCESSING SPECIFIC
Processing
Steps Covered
Parallel
Processing
Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.
Pre/Post
Processing
Requirements
Error / Audit
Handling
Retry / Restart
Flow
Other
None
Description of stages:
Source Table
TFCHD_FIS_CAL_HALF_YR_DIM
Target Table
DW_CAL_S
Business Function
complete week.
BTEQ Steps
)
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
;
/*
*/
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
Processing
Steps Covered
Parallel
Processing
Presence of non unique Primary Indexing on the table makes sure that
Teradata runs parallel processing efficiently.
Pre/Post
Processing
Requirements
Error / Audit
Handling
Retry / Restart
Flow
Other
None
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
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
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:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Peak
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
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
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
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
Peak
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
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
Source:
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
Peak
Extracted Records:
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
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
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
Detail all administrative and maintenance activities required for this interface as known
at this time.
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
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
Provide details on any other configuration requirements needed for this interface to
function successfully, reliably and efficiently.
None
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.
Control Activity
Areas Used
CA1
Input/Output
Controls
CA2
Data Consolidation/
Expansion
NA
CA5
Duplicate Data
Check
CA7
Run-to-Run
NA
CA8
NA
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
12.2
Control
Code
Purpose
CB1
Multiple Points of
Failure
CB2
Exception/Error Log
CB3
Error Handling
Procedures
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
12.3
Control
Code
Purpose
CC1
Program/file
Restrictions
CC2
Encryption
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
12.4
Control
Code
Purpose
CD1
Job Scheduling
CD2
Interface Service
Level Agreements
(SLAs)
Sev 3
CD3
Acknowledgements
and Confirmation
Messages
CD4
Contingency
Planning
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
12.5
Control
Code
CE1
Purpose
The ETL tool will provide:
Source Record
Identification
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
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.
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
Issue
Resolution/Answer
Quality
Center #
15 GLOSSARY
TERM
DEFINITION
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.
Condition
Log Text
17 APPENDIX