Qlik Community

QlikView Scripting

Discussion Board for collaboration on QlikView Scripting.

Announcements
QlikView Fans! We’d love to hear from you.
Share your QlikView feedback with the product team… Click here to participate in our 5-minute survey.
Rules, plus terms and conditions, can be found here.
stabben23
Honored Contributor

Problem with Join

I have a problem to do a join, my problem is this:

left_Join.png

invoiced amount is -56200, but this invoice has been payed at two different times. So when I do a left Join it will duplicate the row with amount -56200. I have try to sum(Supplier Pay_Amount_LOCAL) and group by on Invoice No before i Make my Join, but without result, what i'm I missing here?

//Stabben

Tags (1)
10 Replies
MVP
MVP

Re: Problem with Join

How does the structure of your original tables look like? Could you post your script code snippet?

(Or even better, a small sample app with some sample data).

stabben23
Honored Contributor

Re: Problem with Join

Temp:

Load

(EPSINO &'|'&EPDIVI&'|'&EPSPYN&'|'&EPSUNO) as %SINOKey ,
(
EPCUAM*EPARAT) as [Supplier Amount_LOCAL] ,
(
EPCUAM) as [Supplier Amount_FOREIGN],
EPCUCD  as [Supplier Currency] ,
EPARAT  as [Supplier Exchangerate] ,
From $(vQvdPath)FPLEDG.qvd (qvd)
Where EPTRCD=40

;
left Join (Temp)
Load
TEXT(EPSINO &'|'&EPDIVI&'|'&EPSPYN&'|'&EPSUNO) as %SINOKey,
(
EPCUAM * EPARAT) as [Supplier Pay_Amount_LOCAL]
From $(vQvdPath)FPLEDG.qvd (qvd)
Where EPTRCD=50
;

First I Load with filter EPTRCD=40 and yhis has one row with -56200

then I join and get two rows because i have two different amount with filter EPTRCD=50

//Stabben

MVP
MVP

Re: Problem with Join

A join may not be appropriate then. Why do you need to join?

You could consider keeping the Supplier_Amount_LOCAL value in a separate table just linked via InvoiceNo.

Or maybe create a concatenated fact table with different levels of granularity (total Supplier_Amount_LOCAL value and your detailed transactions).

Hard to say what you need to do, because data modelling should consider your complete requirements.

v_iyyappan
Valued Contributor

Re: Problem with Join

Hi,

If u are using the composite key use autonumber function using the both tables.

autonumber(EPSINO&EPDIVI&EPSPYN&EPSUNO) as %SINOKey,


Autonumber:
Returns a unique integer value for each distinct evaluated value of expression encountered during the script execution

Regards,


stabben23
Honored Contributor

Re: Problem with Join

If i just keep the tables assosiated i will still be two lines and two amount with -56200. if I sum all transactions on this invoice it should be 0, but it doesen't. I do need this fields in the same fact table on the same aggregated level, for ex Invoice No. The whole modell is about if the supplier are due or not or if they have payed the whole amount.

Thanks for help

//stabben

stabben23
Honored Contributor

Re: Problem with Join

Hi,

autonumber will not aggregate on Key, still two lines.

//Stabben

Employee
Employee

Re: Problem with Join

If you use any type of JOIN, records from first table will be repeated for each matching record of second.

I can see two approaches:

1) Keep them separated

2) Concatenate both tables and then run a LOAD () GROUP BY doing your sum´s

Employee
Employee

Re: Problem with Join

Second way would be like this:

Temp:

Load

(EPSINO &'|'&EPDIVI&'|'&EPSPYN&'|'&EPSUNO) as %SINOKey ,

(EPCUAM*EPARAT) as [Supplier Amount_LOCAL] ,

(EPCUAM) as [Supplier Amount_FOREIGN],

EPCUCD  as [Supplier Currency] ,

EPARAT  as [Supplier Exchangerate] ,

From $(vQvdPath)FPLEDG.qvd (qvd)

Where EPTRCD=40

;

Concatenate (Temp)

Load

TEXT(EPSINO &'|'&EPDIVI&'|'&EPSPYN&'|'&EPSUNO) as %SINOKey,

(EPCUAM * EPARAT) as [Supplier Pay_Amount_LOCAL]

From $(vQvdPath)FPLEDG.qvd (qvd)

Where EPTRCD=50;

Final:

LOAD

  %SINOKey,

  sum([Supplier Amount_LOCAL]) as [Supplier Amount_LOCAL],

  sum([Supplier Amount_FOREIGN]) as [Supplier Amount_FOREIGN],

  sum([Supplier Currency] ) as [Supplier Currency],

  sum([Supplier Exchangerate]) as [Supplier Exchangerate],

  sum([Supplier Pay_Amount_LOCAL]) as [Supplier Pay_Amount_LOCAL]

Resident Temp

Group By %SINOKey;

Drop Table Temp;

stabben23
Honored Contributor

Re: Problem with Join

Will try that first thing tomorrow.

//Stabben

Community Browser