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

Announcements
Join us in Toronto Sept 9th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Jim_O
Contributor II
Contributor II

Data Load - Rows to Columns

Hi guys,

I need to transform some data and then output to CSV.

Jim_O_0-1730798021275.png

There are a variable n number of users per ID.

This seems like it should be easy to do in the Qlik Load script, but I'm not finding anything useful...

Thanks in advance.

 

Labels (2)
1 Solution

Accepted Solutions
Kushal_Chawda

@Jim_O  try below

Data:
Load * Inline [
ID,User
112,A
112,B
112,C
113,E
113,F];

rank:
Load ID,
     'User ' & if(ID=Previous(ID),rangesum(keepchar(Peek('User_No'),'0123456789'),1),1) as User_No,
     User
Resident Data
Order by ID,User;

Drop Table Data;

generic_load:
generic Load ID,
             User_No,
             User
Resident rank;

Drop Table rank;


Final:
Load FieldValue('ID',RecNo()) as ID
AutoGenerate FieldValueCount('ID');
 
FOR i = NoOfTables()-1 to 0 STEP -1;
LET vTable=TableName($(i));
    IF WildMatch('$(vTable)','generic_load.*') THEN
    LEFT JOIN ([Final]) LOAD * RESIDENT [$(vTable)];
DROP TABLE [$(vTable)];
    ENDIF
NEXT i

 

Screenshot 2024-11-05 at 11.32.35.png

View solution in original post

3 Replies
Kushal_Chawda

@Jim_O  try below

Data:
Generic Load ID,
             'User ' & AutoNumber(User)as Row,
             User;
Load * Inline [
ID,User
112,A
112,B
112,C
113,A
113,B];
 
 
Final:
Load FieldValue('ID',RecNo()) as ID
AutoGenerate FieldValueCount('ID');
 
FOR i = NoOfTables()-1 to 0 STEP -1;
LET vTable=TableName($(i));
    IF WildMatch('$(vTable)','Data.*') THEN
    LEFT JOIN ([Final]) LOAD * RESIDENT [$(vTable)];
DROP TABLE [$(vTable)];
    ENDIF
NEXT i
 
Screenshot 2024-11-05 at 10.00.08.png
Jim_O
Contributor II
Contributor II
Author

Thanks for the reply - it's very close to what I need.

I wasn't clear enough around "User", apologies, here's an update.

Jim_O_0-1730805337951.png

 

Kushal_Chawda

@Jim_O  try below

Data:
Load * Inline [
ID,User
112,A
112,B
112,C
113,E
113,F];

rank:
Load ID,
     'User ' & if(ID=Previous(ID),rangesum(keepchar(Peek('User_No'),'0123456789'),1),1) as User_No,
     User
Resident Data
Order by ID,User;

Drop Table Data;

generic_load:
generic Load ID,
             User_No,
             User
Resident rank;

Drop Table rank;


Final:
Load FieldValue('ID',RecNo()) as ID
AutoGenerate FieldValueCount('ID');
 
FOR i = NoOfTables()-1 to 0 STEP -1;
LET vTable=TableName($(i));
    IF WildMatch('$(vTable)','generic_load.*') THEN
    LEFT JOIN ([Final]) LOAD * RESIDENT [$(vTable)];
DROP TABLE [$(vTable)];
    ENDIF
NEXT i

 

Screenshot 2024-11-05 at 11.32.35.png