Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
I was trying to separate the IDs based on their type.
The Type is associated with only Names. So, i wanna separate IDs based on the below logic:
If any of the ID has Type A, then it falls under the A Category even though if it has a second name with B Category in it.
ID falls into the Category B, only if it has name with just Type 'B'.
ID, | Name, | Type |
abcd, | 123, | A |
abcd, | 456, | B |
efgh, | 789, | A |
ijkl, | 1011, | B |
mnop, | 1213, | A |
qrst, | 1415, | B |
O/P:
A Category IDs:
abcd,
efgh,
mnop
B Category IDs:
ijkl,
qrst
Any help is highly appreciated.
May be this:
Table1:
LOAD * Inline
[
ID, Name, Type
abcd, 123, A
abcd, 456, B
efgh, 789, A
ijkl, 1011, B
mnop, 1213, A
qrst, 1415, B
];
Temp1:
LOAD ID,
Name
Resident Table1
Where Type = 'A';
Left Join (Temp1)
LOAD ID as [A Category IDs],
Name,
Type
Resident Table1;
Temp2:
LOAD ID,
ID as [B Category IDs],
Name,
Type
Resident Table1
Where not Exists([A Category IDs], ID);
DROP Table Table1;
Final:
NoConcatenate
LOAD *
Resident Temp1;
Concatenate(Final)
LOAD *
Resident Temp2;
DROP Table Temp1, Temp2;
May be this:
Table1:
LOAD * Inline
[
ID, Name, Type
abcd, 123, A
abcd, 456, B
efgh, 789, A
ijkl, 1011, B
mnop, 1213, A
qrst, 1415, B
];
Temp1:
LOAD ID,
Name
Resident Table1
Where Type = 'A';
Left Join (Temp1)
LOAD ID as [A Category IDs],
Name,
Type
Resident Table1;
Temp2:
LOAD ID,
ID as [B Category IDs],
Name,
Type
Resident Table1
Where not Exists([A Category IDs], ID);
DROP Table Table1;
Final:
NoConcatenate
LOAD *
Resident Temp1;
Concatenate(Final)
LOAD *
Resident Temp2;
DROP Table Temp1, Temp2;
Something like this:
LOAD ID, Name, Type, If(Exists(ID), 'A',Type) as Category INLINE [
ID, Name, Type
abcd, 123, A
abcd, 456, B
efgh, 789, A
ijkl, 1011, B
mnop, 1213, A
qrst, 1415, B
];
The inline load is just an example. You can use another type of load just as well.
Sunny,
I tried this approach.
As the data is huge and this approach is taking very long time, i was looking for some optimized method.
Can u help pls.
Sunny,
I just skipped few tables from your code in between.
Does this look good?
Table1:
LOAD * Inline
[
ID, Name, Type
abcd, 123, A
abcd, 456, B
efgh, 789, A
ijkl, 1011, B
mnop, 1213, A
qrst, 1415, B
];
Temp1:
LOAD *, If(Type='A', ID) as [A IDs]
Resident
Table1;
DROP Table Table1;
Left Join
Temp2:
LOAD ID,
ID as [B Category IDs],
Name,
Type
Resident Temp1
Where not Exists([A IDs], ID);
Sure, if it gets you what you want
Have you looked at Gysbert's code? Looks pretty short and sweet as well. Might want to look at his suggestion as well.
Thank you verymuch brother.
But its not working....
Let me try it again
I haven't tried it, so don't know, but he might be able to fine tune it if you seek his advice