Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Trying to find best approach to joins and other doubts

1)  I am currently working on scenario where i have to join 4 tables. Each of the table over a 2 million rows. I figured out there are two approaches to this and need to know which one of them is better


  • create qvds of all 4 tables and join them
  • create a view of (joins of these 4 tables) and then make a qvd of it




2)  I am trying to create join among 4 qvds but I am getting an error  - Field names must be unique within table


PROCESS_FLOW:

LOAD

SCENARIONAME AS SCENARIO_NAME,

SITENAME AS SITE_NAME,

PRODUCTNAME AS PRODUCT_NAME,

PROCESSNAME AS PROCESS_NAME,

PROCESSSTEP_NAME AS PROCESS_STEP_NAME,

NEXTPROCESS_STEP_NAME AS NEXT_PROCESS_STEP_NAME,

PRODUCTNAME AS PRODUCT_NAME,

PERIODNAME AS PERIOD_NAME,

FLOWUNITS  AS FLOW_UNITS,

PERIODNO AS PERIOD_NO,

WORKCENTERNAME AS WORKCENTER_NAME,

FLOWHOURS AS FLOW_HOURS,

SETUPACTIVITY AS SETUP_ACTIVITY,

RESOURCEPRODUCT AS RESOURCE_PRODUCT,

PROCESSSTAGE AS  PROCESS_STAGE,

RESOURCETYPE AS RESOURCE_TYPE,

RESOURCENAME AS RESOURCE_NAME,

PROCESSSTEP AS  PROCESS_STEP,

PKGGROUP AS PKG_GROUP,

PKGGROUP_REVISED AS PKG_GROUP_REVISED

FROM (qvd)

;

// (SCG_PROCESFLOW_PROC_BACKEND_VW is a view which is joined two tables (SCG_PROCESSES and 1 more))

inner JOIN (PROCESS_FLOW)

LOAD

WORKCENTER_NAME,

PROCESS_NAME,

PROCESS_STEP_NAME,

NEXT_PROCESS_STEP_NAME,

PROCESS_NOTES,

CUSTOM1 AS FLOW_FACTOR,

CUSTOM2*1 AS OEE

from (qvd)

;

inner JOIN (PROCESS_FLOW)

LOAD

WORKCENTER_NAME as WORKCENTER",

PRODUCT_NAME,

PRODUCT_MODEL_NAME AS CAP_GROUP,

CUSTOM1 AS PTI

FROM

from (qvd)

;

inner JOIN (PROCESS_FLOW)

LOAD

WORKCENTER_NAME  ,

PERIOD_NAME,

SCENARIO_NAME,

PERIOD_NAME,

THROUGHPUT_TIME

from (qvd)

3) I have one more doubt regarding join

eg-

select a.abc,

b.abc

(a.abc * b.abc)

from qvd a

inner join

qvd2 b

where  qvd.y = qvd2.z ;



is this not possible to perform such join from qvd ??


1 Solution

Accepted Solutions
rubenmarin

Hi Urmil,

1) In my opinion, qvds for all 4 tables, another qvd that reads from this qvds and creates the final qvd

2) PRODUCT_NAME is loaded two times, remove one.

3) It's hard to understand, just to give the syntax maybe something like:

LOAD A, B, Y

from qvd1.qvd (qvd);

inner join

LOAD *

from qvd2.qvd (qvd)

Where Exists('Y', Z);

View solution in original post

2 Replies
vishsaggi
Champion III
Champion III

You cannot have same fieldname in the same table change the field name or delete the one if you dont want.

PROCESS_FLOW:

LOAD

SCENARIONAME AS SCENARIO_NAME,

SITENAME AS SITE_NAME,

PRODUCTNAME AS PRODUCT_NAME,

PROCESSNAME AS PROCESS_NAME,

PROCESSSTEP_NAME AS PROCESS_STEP_NAME,

NEXTPROCESS_STEP_NAME AS NEXT_PROCESS_STEP_NAME,

PRODUCTNAME AS PRODUCT_NAME,

PERIODNAME AS PERIOD_NAME,

FLOWUNITS  AS FLOW_UNITS,

PERIODNO AS PERIOD_NO,

WORKCENTERNAME AS WORKCENTER_NAME,

FLOWHOURS AS FLOW_HOURS,

SETUPACTIVITY AS SETUP_ACTIVITY,

RESOURCEPRODUCT AS RESOURCE_PRODUCT,

PROCESSSTAGE AS  PROCESS_STAGE,

RESOURCETYPE AS RESOURCE_TYPE,

RESOURCENAME AS RESOURCE_NAME,

PROCESSSTEP AS  PROCESS_STEP,

PKGGROUP AS PKG_GROUP,

PKGGROUP_REVISED AS PKG_GROUP_REVISED

FROM (qvd)

;

rubenmarin

Hi Urmil,

1) In my opinion, qvds for all 4 tables, another qvd that reads from this qvds and creates the final qvd

2) PRODUCT_NAME is loaded two times, remove one.

3) It's hard to understand, just to give the syntax maybe something like:

LOAD A, B, Y

from qvd1.qvd (qvd);

inner join

LOAD *

from qvd2.qvd (qvd)

Where Exists('Y', Z);