Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Mapping Load verse JOINs verse ?

<body><p>In the script below, I INNER JOIN a fact table to three dimensional tables.  The reason I perform an INNER JOIN is so that I can limit the data in the fact table by using fields in the dimensional tables.  My main concern is whether or not this is the best way to achieve my goal. </span></p> <p>I have been trying to research Mapping Loads since it was suggested to me that using a Mapping Load may work better.  However, I am confused on how Mapping Loads work and whether they would allow me to achieve my goals. </span></p> <p>My questions are: (1) Would use of a Mapping Load be a more efficient way to limit my data? (2) If the answer to my first question is yes, than how do I use a Mapping Load in my script?</span></p> <p>Any assistance is greatly appreciated. </span></p> <p >Thanks,</span></p> <p >Godfrey</span></p> <p>Script Below:</span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>// First import is the Customer Dimensional table  </span></span></b></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><st1:stockticker><i>DATA</span></i></st1:stockticker><i>:</span></i></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>LOAD</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >SHIP_TO_CODE</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >BUSINESS_SEGMENT_CODE</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >SALES_</span><st1:stockticker>ORG</span></st1:stockticker> </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>FROM</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >.. </span>\</span><st1:stockticker>DATA</span></st1:stockticker>\QVD\DimCustomer.QVD</span></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >(</span>qvd</span>)</span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>WHERE</span></b>( </span>BUSINESS_SEGMENT_CODE</span> =</span><b><i>'$(vCustBusSegment)'</span></i></b> </span><st1:stockticker><b>AND</span></b></st1:stockticker> </span>SALES_</span><st1:stockticker>ORG</span></st1:stockticker> = </span><b><i>'$(vSalesOrg)'</span></i></b>)</span>;</span></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" > </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>// Second import is the Data/Transactional table</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>INNER</span></b> </span><b>JOIN</span></b> (</span><st1:stockticker><i>DATA</span></i></st1:stockticker>)</span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>LOAD</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >SALE_ORDER_NR</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >FINAL_GI_</span><st1:stockticker>ACTL</span></st1:stockticker>_DT_CD</span> </span><b>AS</span></b> </span><st1:stockticker>DAY</span></st1:stockticker>_CODE</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >SOH_SHIP_COND_CD</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >COUNT_ORDER</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >SHIP_TO_CODE</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>FROM</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >.. </span>\</span><st1:stockticker>DATA</span></st1:stockticker>\QVD\ODSDrvdSAPSalesOrderHdr_ETL.QVD</span></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >(</span>qvd</span>) </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>WHERE</span></b>( </span>FINAL_GI_</span><st1:stockticker>ACTL</span></st1:stockticker>_DT_CD</span> &gt;= </span><b><i>'$(vYearStart)'</span></i></b>)</span>;</span></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" > </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>// Third import is the Calendar Dimensional table</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>INNER</span></b> </span><b>JOIN</span></b> (</span><st1:stockticker><i>DATA</span></i></st1:stockticker>)</span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>LOAD</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >     </span></span><st1:stockticker>DAY</span></st1:stockticker>_CODE</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >     </span></span>WEEK_CODE</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >     </span></span>PERIOD_CODE</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >     </span></span>QTR_CODE</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >     </span></span>HYR_CODE</span>,</span><b> </span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >     </span></span>YR_CODE</span><b></span></b></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>FROM</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >.. </span>\</span><st1:stockticker>DATA</span></st1:stockticker>\QVD\DimDailyCalendar.QVD</span></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >(</span>qvd</span>)</span>;</span> </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" > </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>// Fourth import is the Shipping Condition Dimensional table</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>INNER</span></b> </span><b>JOIN</span></b> (</span><st1:stockticker><i>DATA</span></i></st1:stockticker>)</span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>LOAD</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><st1:stockticker>SAP</span></st1:stockticker>_</span><st1:stockticker>DATA</span></st1:stockticker>_CODE</span> </span><b>AS</span></b>  </span></span>SOH_SHIP_COND_CD</span>, </span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><st1:stockticker>SAP</span></st1:stockticker>_</span><st1:stockticker>DATA</span></st1:stockticker>_DESCRIPTION</span> </span><b>AS</span></b> </span>SOH_SHIP_COND_DESC</span></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ><b>FROM</span></b></span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" >.. </span>\</span><st1:stockticker>DATA</span></st1:stockticker>\QVD\VLKPSAPShippingCondition.QVD</span></p> <p style="margin: 0in 0in 0pt; mso-layout-grid-align: none;" ></span>(</span>qvd</span>)</span>;</span></p></body>

1 Solution

Accepted Solutions
Miguel_Angel_Baeyens

Hello Godfrey,

I don't know if loading this or that way is going to be faster before trying myself.

I do use some applymaps in where clauses to reduce the number of records loaded depending on several criteria, take the following example: I have got to load data from several companies every day depending on their daily revenues stored in a QVD file. The reload process is unattended, and scheduled on the server, and I cannot do it manually in the script, since I don't know which companies I have got to check.

CompaniesToBeCheckedMap:MAPPING LOAD CompID, TotalDailyRevenueFROM COMPANIES.QVD (qvd)WHERE 1=1; // Needed since a mapping is not supported for optimized qvd loads Data:LOAD CompID, Field1, Field2FROM FILE.QVD (qvd)WHERE ApplyMap('CompaniesToBeCheckedMap', CompID) > 2000;


I know the example is pretty simple but it may help you to understand (and try, if that suits you) applymap in loading statements.

Hope that helps

View solution in original post

2 Replies
Miguel_Angel_Baeyens

Hello Godfrey,

I don't know if loading this or that way is going to be faster before trying myself.

I do use some applymaps in where clauses to reduce the number of records loaded depending on several criteria, take the following example: I have got to load data from several companies every day depending on their daily revenues stored in a QVD file. The reload process is unattended, and scheduled on the server, and I cannot do it manually in the script, since I don't know which companies I have got to check.

CompaniesToBeCheckedMap:MAPPING LOAD CompID, TotalDailyRevenueFROM COMPANIES.QVD (qvd)WHERE 1=1; // Needed since a mapping is not supported for optimized qvd loads Data:LOAD CompID, Field1, Field2FROM FILE.QVD (qvd)WHERE ApplyMap('CompaniesToBeCheckedMap', CompID) > 2000;


I know the example is pretty simple but it may help you to understand (and try, if that suits you) applymap in loading statements.

Hope that helps

Not applicable
Author

Miguel,

I appreciate your assistance. I was able to use your example to create multiple MAPPING LOAD / APPLY MAP scenario that achieves my goals.

Thanks again,

Godfrey