Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Linking Fields

Hello,

I have data from two tables with the same name, Program ID. However, the data in one table has the prefix. "PRG-" before the program number and the other filed only has the number.

To illustrate:

Table 1 -

Program ID:

1010102

1010103

1010104

Table 2 -

Program ID:

PRG-1010102

PRG-1010103

PRG-1010104

How can I make these two join in the load statement?

Labels (1)
1 Solution

Accepted Solutions
sunny_talwar
MVP
MVP

May be like this:

LOAD [Program ID),

          ...

FROM Table1;

Join

LOAD [Program ID] as [Original Program ID],

          SubField([Program ID], '-', 2) as [Program ID]

          ....

FROM Table2;

View solution in original post

10 Replies
sunny_talwar
MVP
MVP

May be like this:

LOAD [Program ID),

          ...

FROM Table1;

Join

LOAD [Program ID] as [Original Program ID],

          SubField([Program ID], '-', 2) as [Program ID]

          ....

FROM Table2;

Not applicable
Author

Sunny,

SubField([Program ID], '-',2)

Does this cut the "PRG-" from the fields to join at the numbers?

sunny_talwar
MVP
MVP

Yes, is it not working? May be you need to do this:

Num#(SubField([Program ID], '-',2))


or


SubField([Program ID], '-',2) * 1

Not applicable
Author

Here is my scrip, where do you add the join?

Directory;
LOAD [Program ID],
Address,
SKU
FROM
Book1.xlsx
(
ooxml, embedded labels, table is Table2);

Directory;
LOAD [Program ID],
[Program Revision],
Name
FROM
Book1.xlsx
(
ooxml, embedded labels, table is Table1);

sunny_talwar
MVP
MVP

May be like this:

Table:
LOAD Num#(SubField([Program ID], '-',2)) as [Program ID],
     Address,
     SKU
FROM
Book1.xlsx
(ooxml, embedded labels, table is Table2);

Join (Table)
LOAD [Program ID],
     [Program Revision],
     Name
FROM
Book1.xlsx
(ooxml, embedded labels, table is Table1);

MarcoWedel
MVP
MVP

maybe also possible:

LOAD Mid([Program ID],5) as [Program ID]

...

FROM ...



hope this helps


regards


Marco

hemachandran
Partner - Creator
Partner - Creator

hi,

Try this expression,

Table2:
LOAD Num#(SubField([Program ID]),'-',2)) as [Program ID]
     Address,
     SKU
FROM
Book1.xlsx
(ooxml, embedded labels, table is Table2);

Join
LOAD [Program ID],
     [Program Revision],
     Name
FROM
Book1.xlsx
(ooxml, embedded labels, table is Table1);

Not applicable
Author

Hi Sunny,

Your first suggestion was correct and I am marking it as such. However, the article The Secret Life of SubField was very helpful in knowing exactly how to setup my script. 

The Secret Life of SubField

I used this for my script:

LOAD Distinct
Subfield("Program_ID", '-') as [Program_ID],

I didn't need a join statement since the other table had the same Program ID after the '-'. My connection is as expected and returning the data properly.

Thanks!

Not applicable
Author

Sunny,

One clarification: Subfield([Program ID], '-',2)

What is the 2 doing? And is there a way to have the same work for data before the '-'?