07.02.2013 Views

Best Practices for SAP BI using DB2 9 for z/OS - IBM Redbooks

Best Practices for SAP BI using DB2 9 for z/OS - IBM Redbooks

Best Practices for SAP BI using DB2 9 for z/OS - IBM Redbooks

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Step 1 - Join Analysis<br />

Figure 10-2 Step 1 - join analysis<br />

For this process, we can ignore the SELECT list, FROM clause, and GROUP<br />

BY clause, because we are com<strong>for</strong>table that <strong>SAP</strong> has generated a valid SQL<br />

statement. There<strong>for</strong>e, we focus on the WHERE clause, which shows the table<br />

join relationships and filtering predicates.<br />

Within the WHERE clause, we first focus on the join predicates to build the<br />

join graph. See Figure 10-2. We use the local predicates in a later step to<br />

determine where the filtering occurs.<br />

WHERE "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."CURRENCY" = "/<strong>BI</strong>0/SCURRENCY"."CURRENCY"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."G_UVVUOM" = "A0001"."UNIT"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."G_UABSMG" = "A0002"."UNIT"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."REFER_DOC" = "/<strong>BI</strong>0/SREFER_DOC"."REFER_DOC"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."REFER_ITM" = "/<strong>BI</strong>0/SREFER_ITM"."REFER_ITM"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."CO_AREA" = "/<strong>BI</strong>0/SCO_AREA"."CO_AREA"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."PROFIT_CTR" = "/<strong>BI</strong>0/SPROFIT_CTR"."PROFIT_CTR"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."CO_AREA" = "/<strong>BI</strong>0/SPROFIT_CTR"."CO_AREA"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."/<strong>BI</strong>C/ZA_SADIV" = "/<strong>BI</strong>0/PDIVISION"."DIVISION"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."/<strong>BI</strong>C/ZMATLPLNT" = "/<strong>BI</strong>C/XZMATLPLNT"."/<strong>BI</strong>C/ZMATLPLNT"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."PLANT" = "/<strong>BI</strong>C/XZMATLPLNT"."PLANT"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."/<strong>BI</strong>C/ZRLNSP" = "/<strong>BI</strong>C/XZRLNSP"."/<strong>BI</strong>C/ZRLNSP"<br />

AND "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."G_UVVTON" = "<strong>DB2</strong>A0001"."UNIT"<br />

AND "/<strong>BI</strong>0/PDIVISION"."OBJVERS" = 'A'<br />

AND "/<strong>BI</strong>C/XZMATLPLNT"."OBJVERS" = 'A' AND "/<strong>BI</strong>C/XZRLNSP"."OBJVERS" = 'A'<br />

AND (((( "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."ACCNT_ASGN" = '00' OR "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."ACCNT_ASGN" = '01' OR<br />

"/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."ACCNT_ASGN" = '04' OR "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."ACCNT_ASGN" = '06' ))<br />

AND (( "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."CALMONTH" BETWEEN '200311' AND '200404' ))<br />

AND (( "/<strong>BI</strong>0/SCO_AREA"."SID" = 3 ))<br />

AND (( "/<strong>BI</strong>C/AZ<strong>OS</strong>ASALE00"."CURTYPE" = 'B0' ))<br />

AND (( "/<strong>BI</strong>0/SPROFIT_CTR"."SID" = 31 ))<br />

AND (("/<strong>BI</strong>0/PDIVISION"."/<strong>BI</strong>C/ZREPTDIV" = '5X' ))<br />

AND (( "/<strong>BI</strong>C/XZMATLPLNT"."S__ZMATLONLY" = 360013 ))<br />

AND (( "/<strong>BI</strong>C/XZRLNSP"."S__ZA_SASGRP" = 80 ))))<br />

Focus on Join Predicates<br />

Defer Local Predicates<br />

to later<br />

The process of building the join graph involves taking each join predicate and<br />

mapping the table join relationship.<br />

Chapter 10. Tips <strong>for</strong> SQL efficiency 205

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!