Qlik Community

QlikView App Dev

Discussion Board for collaboration related to QlikView App Development.

Announcements
Customer & Partners, DEC. 9, 11 AM ET: Qlik Product & Strategy Roadmap Session: Data Analytics REGISTER NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Parallel Coordinates/Slope/Ranking Graph

Hi everyone,

I need help building a chart.  I have data that scores Markets by different measures, e.g.:

  

MarketSize ScoreGrowth ScoreAttractiveness
A3.04.07.0
B2.06.04.0
C5.01.0

3.0

I want a line chart where each market is a line and Size, Growth, and Attractiveness appears on the X axis. The values would appear in the Y axis as they do in the above table.

The chart would look like this:

The only solution I know of to build this chart is to use the calculated dimension/expressions in the Parallel Coordinates chart provided in the QlikTech demo:

However, this chart is more complicated than my concept is. I do not need to calculate frequency, ranking, %s, or anything - I just want to show the data that I have. I tried to use a simpler solution, but it relies on using one time dimension - Year. I want to compare several dimensions.

Does anyone know a potential solution? i thought the best would be to manipulate the calculated dimension/expression of the parallel coordinates chart - could anyone help me do this? The two main formulas are:

Dimension:

=$(='if('&concat('NOT IsNull(['&CustomerMix&'])',' AND ')&', hash128('& concat('['&CustomerMix&']',',')&'))' )

Expression:

dual(

$(=concat('if(CustomerMix='&chr(39)&CustomerMix&chr(39)&',concat(distinct ['&CustomerMix&']))','&'))&'

'&num( 100*node_percent, '#,##0.#', '.' , ',' )&'%'

,

$(=concat('if(textcount(total ['&CustomerMix&'])=0,if(CustomerMix='&chr(39)&CustomerMix&chr(39)&',0.1+((min(['&CustomerMix&'])-min(total ['&CustomerMix&']))/(max(total ['&CustomerMix&'])-min(total ['&CustomerMix&']))),0),if(CustomerMix='&chr(39)&CustomerMix&chr(39)&',0.1+((aggr(nodistinct rank(['&CustomerMix&'],4),['&CustomerMix&'])-1)/rangemax( (count(distinct total ['&CustomerMix&'])-1) ,1 )),0))','+'))

)

Thanks,

Andrew

1 Solution

Accepted Solutions
jsaradhi
Specialist
Specialist

i may be missing something or may be you are overthinking this...please see attached

View solution in original post

9 Replies
jsaradhi
Specialist
Specialist

i may be missing something or may be you are overthinking this...please see attached

View solution in original post

Not applicable
Author

Ohhh. You just have to gather the different score types into one dimension!

That is extra work, but I'm so happy I can build the chart now. Thank you jsaradhi!

jsaradhi
Specialist
Specialist

you are welcome...if you are getting this data from a database, try and move the crosstable part into the database using relevant transpose functions. i do this as crosstable function takes up too much memory and sometimes is not clean!

Not applicable
Author

In this case, the data comes from a more simple Excel file. However, I cannot change it. Is there a way to transpose those dimensions into one column with a calculated chart dimension? Otherwise, I was planning to construct a new table in a second Excel tab.

jsaradhi
Specialist
Specialist

if the data size is not too big, you may be ok with doing it in Qlikview. my above post is more of a fyi to keep in mind. i would cross table it once instead of calculating the dimensions in UI qvw each time a user makes a selection.

Not applicable
Author

Thanks for the warning, but if I wanted to do it in the QVW, how would I do it?

jsaradhi
Specialist
Specialist


take a look at the script in the qvw i attached for an example.

Not applicable
Author

Ah, I understand now. Thank you!

jsaradhi
Specialist
Specialist

np