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

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

selecting most common text value in an expression

Hi,

I have a data model which looks like

FieldA FieldB

ABC Text1

ABC Text1

ABC Text2

DEF Text3

GHI Text1

GHI Text2

I have 2 questions

1) How do I , in an expression, select the most commonly occuring value in FieldB for FieldA

2) Assuming this can be done, how can I be deterministic in the case of GHI above ie. always select the same value for FieldB

Thanks.

3 Replies
Not applicable
Author

<body><p>One option via pivot table:</p> <p>Dimensions:</p> <p>   FieldB</p> <p>   FieldA</p> <p>Expressions:  </p> <p>   Count(FieldB)   // just for checking</p> <p>   Rank(Count(FieldB),1,2)   // just for checking: shows the ranking; for doubles only the first one by sort order has a number, the rest Null</p> <p>   if(&#39;&#39; &amp; Rank(Count(FieldB),1,2)=&#39;1&#39;,FieldB)  // actual result: gives Null for all fields except the correct one; you need the &#39; &#39; so that QV does not use the numeric value which gives to times 1 ( dual() value )</p> <p><col width="42"></col> <col width="42"></col> <col width="42"></col> <col width="42"></col> <col width="42"></col> <col width="42"></col> <col width="42"></col> <col width="42"></col> <col width="42"></col> <col width="42"></col> <tr> <td width="42" class="xl63" height="17">FieldA</td> <td width="42" class="xl64">ABC</td> <td width="42" class="xl64">ABC</td> <td width="42" class="xl64"><b>ABC</b></td> <td width="42" class="xl64">DEF</td> <td width="42" class="xl64">DEF</td> <td width="42" class="xl64"><b>DEF</b></td> <td width="42" class="xl64">GHI</td> <td width="42" class="xl64">GHI</td> <td width="42" class="xl64"><b>GHI</b></td> </tr> <tr> <td class="xl65" height="17">FieldB</td> <td class="xl64">C</td> <td class="xl64">N</td> <td class="xl64">V</td> <td class="xl64">C</td> <td class="xl64">N</td> <td class="xl64">V</td> <td class="xl64">C</td> <td class="xl64">N</td> <td class="xl64">V</td> </tr> <tr> <td class="xl64" height="17">Text1</td> <td align="right" class="xl66">2</td> <td align="right" class="xl64">1</td> <td class="xl67"><b>Text1</b></td> <td align="right" class="xl66">0</td> <td align="right" class="xl64">2</td> <td class="xl64">-</td> <td align="right" class="xl66">1</td> <td align="right" class="xl64">1</td> <td class="xl67"><b>Text1</b></td> </tr> <tr> <td class="xl64" height="17">Text2</td> <td align="right" class="xl66">1</td> <td align="right" class="xl64">2</td> <td class="xl64">-</td> <td align="right" class="xl66">0</td> <td align="right" class="xl64">2</td> <td class="xl64">-</td> <td align="right" class="xl66">1</td> <td align="right" class="xl64">1</td> <td class="xl64">-</td> </tr> <tr> <td class="xl64" height="17">Text3</td> <td align="right" class="xl66">0</td> <td align="right" class="xl64">3</td> <td class="xl64">-</td> <td align="right" class="xl66">1</td> <td align="right" class="xl64">1</td> <td class="xl67"><b>Text3</b></td> <td align="right" class="xl66">0</td> <td align="right" class="xl64">3</td> <td class="xl64">-</td> </tr> </p> <p>Greetings,</p> <p>Piet</p> <p> </p></body>

mbaldoma
Partner - Contributor
Partner - Contributor

firstsortedvalue(FieldB,-aggr(max(aggr(count(FieldB),FieldB,FieldA)),FieldA))

But, I can not make it deterministic, always depends on the load order.

Not applicable
Author

Hi,

For item 1, you can try the following expression.

if(isnull(mode(FieldB))=-1,MaxString(FieldB),mode(FieldB))

I could not understand exactly what you ask in item 2.

Best regards,

http://quickdevtips.blogspot.com/