Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
raji6763
Creator II
Creator II

covert rows to columns

how to convert this table into below output:

 
 
 

convert.JPGoutput.JPG

 
2 Solutions

Accepted Solutions
QlikTom
Employee
Employee

This is exactly the challenge the Generic load prefix was designed to solve.

Here is a help article on the topic.
https://help.qlik.com/en-US/sense/latest/Subsystems/Hub/Content/Sense_Hub/DataSource/generic-databas...

Here is a link to unofficial blog that takes it a bit further and recombines the output of a generic load back into a single table:
https://qlikviewcookbook.com/2010/05/use-cases-for-generic-load/

Looking at your source table, you can translate it conceptually into this:

Key = Object
FieldName = Attribute
FieldValue = Value

OutputTable:
Generic 
LOAD 
    Key,
    FieldName,
    FieldValue
from SomeTable;


One challenge I see in your sample data is, assuming the Key is a unique identifier, there seems to be multiple values for each attribute.  Key2 seems to have SEVERAL addresses. This is not a problem per se, but something to keep an eye on. 

View solution in original post

tresesco
MVP
MVP

Rajib,

As I said (in another post from yours here ), there is a missing link here. But you can approach creating the KEY based on your data order and it might be something like:

 

Emp:
Mapping Load * Inline [
EmpKey, EmpValue
key1,	Name
key2,	Address
key3,	age
];
det2:
Load 
	 detValue,
	 if(len(trim(detKey))=0, peek(detKey), detKey) as detKey
     ;
Load *	 
Inline [
detValue, detKey 
1,	key1
1,	
Raju,	
1,	
2,	key2
2,	
cbe,	
2,	
3,	key3
3,	
3,	
3,	
];
NoConcatenate
temp:
Load * resident det2 Where not IsNum(detValue); //this is to match your output and disregard the other numeric values apart from 'Raju' and 'cbe';
Drop table det2;

det3:
Load detValue,
	 if(len(trim(detKey))=0, peek(detKey), detKey) as detKey
Inline [
detValue, detKey
Raja,	key1
virat,	
yuva,	
try,	key2
chn,	
mad,	
12,	key3
14,	
15,	
16,	
];

All:
Load 
	Autonumber( RowNo(),detKey) as KEY,
	*
Resident temp;	 
Final:
Generic Load 
	KEY,
	ApplyMap('Emp',detKey) as Attribute,
	detValue as Value

Resident All;
Drop Table temp, All;	

 

tresesco_0-1593181812003.png

 

If this helps and you want to close it, close the other treads as well, please.

View solution in original post

2 Replies
QlikTom
Employee
Employee

This is exactly the challenge the Generic load prefix was designed to solve.

Here is a help article on the topic.
https://help.qlik.com/en-US/sense/latest/Subsystems/Hub/Content/Sense_Hub/DataSource/generic-databas...

Here is a link to unofficial blog that takes it a bit further and recombines the output of a generic load back into a single table:
https://qlikviewcookbook.com/2010/05/use-cases-for-generic-load/

Looking at your source table, you can translate it conceptually into this:

Key = Object
FieldName = Attribute
FieldValue = Value

OutputTable:
Generic 
LOAD 
    Key,
    FieldName,
    FieldValue
from SomeTable;


One challenge I see in your sample data is, assuming the Key is a unique identifier, there seems to be multiple values for each attribute.  Key2 seems to have SEVERAL addresses. This is not a problem per se, but something to keep an eye on. 

tresesco
MVP
MVP

Rajib,

As I said (in another post from yours here ), there is a missing link here. But you can approach creating the KEY based on your data order and it might be something like:

 

Emp:
Mapping Load * Inline [
EmpKey, EmpValue
key1,	Name
key2,	Address
key3,	age
];
det2:
Load 
	 detValue,
	 if(len(trim(detKey))=0, peek(detKey), detKey) as detKey
     ;
Load *	 
Inline [
detValue, detKey 
1,	key1
1,	
Raju,	
1,	
2,	key2
2,	
cbe,	
2,	
3,	key3
3,	
3,	
3,	
];
NoConcatenate
temp:
Load * resident det2 Where not IsNum(detValue); //this is to match your output and disregard the other numeric values apart from 'Raju' and 'cbe';
Drop table det2;

det3:
Load detValue,
	 if(len(trim(detKey))=0, peek(detKey), detKey) as detKey
Inline [
detValue, detKey
Raja,	key1
virat,	
yuva,	
try,	key2
chn,	
mad,	
12,	key3
14,	
15,	
16,	
];

All:
Load 
	Autonumber( RowNo(),detKey) as KEY,
	*
Resident temp;	 
Final:
Generic Load 
	KEY,
	ApplyMap('Emp',detKey) as Attribute,
	detValue as Value

Resident All;
Drop Table temp, All;	

 

tresesco_0-1593181812003.png

 

If this helps and you want to close it, close the other treads as well, please.