<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Count offers per rank and date in App Development</title>
    <link>https://community.qlik.com/t5/App-Development/Count-offers-per-rank-and-date/m-p/1546241#M62813</link>
    <description>&lt;P&gt;Hello, i have here a tricky one.&lt;/P&gt;&lt;P&gt;At first i have an offer table. The relevant columns and example data is shown in the following table:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;offer_id&lt;/TD&gt;&lt;TD&gt;product_id&lt;/TD&gt;&lt;TD&gt;offer_date&lt;/TD&gt;&lt;TD&gt;merchant&lt;/TD&gt;&lt;TD&gt;price&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;5.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;7.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;4.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;OWN_CLIENT&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;6.00&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;20.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;19.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;21.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;OWN_CLIENT&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;18.00&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;6.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;7.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;4.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;OWN_CLIENT&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;8.00&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;19.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;20.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;21.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;16&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;OWN_CLIENT&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;22.00&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to get my (OWN_CLIENT) rankings for each day. The result would look like:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;Rank&lt;/TD&gt;&lt;TD&gt;offer count&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the next step all ranks above 5 should be grouped as Rank '6+'.&lt;/P&gt;&lt;P&gt;My solution so far:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Dimension 1:&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;offer_date&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Dimension 2:&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;=aggr( {1&amp;lt;merchant={'OWN_CLIENT'}&amp;gt;} // first aggr to get the group by product and date
	ONLY(
        aggr( // second aggr to rank all offers per product and date
            {$ + 1&amp;lt;merchant={'OWN_CLIENT'}&amp;gt;}
            if (rank(-min(price),1,1) &amp;lt;= 5, // group ranks above 5 to 6+
                rank(-min(price),1,1)
                , Dual('6+', 6)),
            offer_date,
            product_id,
            offer_id
        )
    ), 
    offer_date,
    product_id
)&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Measure:&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;Count(distinct product_id)&lt;/PRE&gt;&lt;P&gt;This works so far and is giving me all correct rankings.&amp;nbsp;&lt;/P&gt;&lt;P&gt;The&amp;nbsp;disadvantage is, this solution is very slow. Maybe someone has a better, not so&amp;nbsp;awkward solution for this szenario?&lt;/P&gt;&lt;P&gt;Greetings, Jens&lt;/P&gt;</description>
    <pubDate>Fri, 02 Apr 2021 07:48:51 GMT</pubDate>
    <dc:creator>jbrodmann</dc:creator>
    <dc:date>2021-04-02T07:48:51Z</dc:date>
    <item>
      <title>Count offers per rank and date</title>
      <link>https://community.qlik.com/t5/App-Development/Count-offers-per-rank-and-date/m-p/1546241#M62813</link>
      <description>&lt;P&gt;Hello, i have here a tricky one.&lt;/P&gt;&lt;P&gt;At first i have an offer table. The relevant columns and example data is shown in the following table:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;offer_id&lt;/TD&gt;&lt;TD&gt;product_id&lt;/TD&gt;&lt;TD&gt;offer_date&lt;/TD&gt;&lt;TD&gt;merchant&lt;/TD&gt;&lt;TD&gt;price&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;5.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;7.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;4.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;OWN_CLIENT&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;6.00&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;20.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;19.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;21.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;OWN_CLIENT&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;18.00&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;6.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;7.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;4.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;OWN_CLIENT&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;8.00&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;19.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;20.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;21.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;16&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;OWN_CLIENT&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;22.00&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to get my (OWN_CLIENT) rankings for each day. The result would look like:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;Rank&lt;/TD&gt;&lt;TD&gt;offer count&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2019&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the next step all ranks above 5 should be grouped as Rank '6+'.&lt;/P&gt;&lt;P&gt;My solution so far:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Dimension 1:&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;offer_date&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Dimension 2:&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;=aggr( {1&amp;lt;merchant={'OWN_CLIENT'}&amp;gt;} // first aggr to get the group by product and date
	ONLY(
        aggr( // second aggr to rank all offers per product and date
            {$ + 1&amp;lt;merchant={'OWN_CLIENT'}&amp;gt;}
            if (rank(-min(price),1,1) &amp;lt;= 5, // group ranks above 5 to 6+
                rank(-min(price),1,1)
                , Dual('6+', 6)),
            offer_date,
            product_id,
            offer_id
        )
    ), 
    offer_date,
    product_id
)&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Measure:&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;Count(distinct product_id)&lt;/PRE&gt;&lt;P&gt;This works so far and is giving me all correct rankings.&amp;nbsp;&lt;/P&gt;&lt;P&gt;The&amp;nbsp;disadvantage is, this solution is very slow. Maybe someone has a better, not so&amp;nbsp;awkward solution for this szenario?&lt;/P&gt;&lt;P&gt;Greetings, Jens&lt;/P&gt;</description>
      <pubDate>Fri, 02 Apr 2021 07:48:51 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Count-offers-per-rank-and-date/m-p/1546241#M62813</guid>
      <dc:creator>jbrodmann</dc:creator>
      <dc:date>2021-04-02T07:48:51Z</dc:date>
    </item>
    <item>
      <title>Re: Count offers per rank and date</title>
      <link>https://community.qlik.com/t5/App-Development/Count-offers-per-rank-and-date/m-p/1546378#M62814</link>
      <description>&lt;P&gt;The only thing you can really simplify without modifying the script is to simplify your if statement to this&lt;/P&gt;&lt;PRE&gt;=Aggr(
	Only({1&amp;lt;merchant={'OWN_CLIENT'}&amp;gt;}
        Aggr(
            &lt;FONT color="#FF0000"&gt;RangeMin(Rank(-Min({$ + 1&amp;lt;merchant = {'OWN_CLIENT'}&amp;gt;} price), 1, 1), Dual('6+', 6))&lt;/FONT&gt;
            , offer_date, product_id, offer_id)
    )
, offer_date, product_id)&lt;/PRE&gt;&lt;P&gt;Otherwise, another option is to calculate the Rank part in the script as it seems that it doesn't have to change based on selection of any sorts because you use 1 in your expression's set analysis.&lt;/P&gt;</description>
      <pubDate>Tue, 19 Feb 2019 13:41:03 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Count-offers-per-rank-and-date/m-p/1546378#M62814</guid>
      <dc:creator>sunny_talwar</dc:creator>
      <dc:date>2019-02-19T13:41:03Z</dc:date>
    </item>
    <item>
      <title>Re: Count offers per rank and date</title>
      <link>https://community.qlik.com/t5/App-Development/Count-offers-per-rank-and-date/m-p/1547273#M62815</link>
      <description>&lt;P&gt;Thank you for the fast reply.&lt;/P&gt;&lt;P&gt;The RangeMin function is great, it makes the whole thing more readable.&lt;/P&gt;&lt;P&gt;Unfortunately this have to react on filters (the inner aggregation) and pre calculation in the load script is not possible.&lt;/P&gt;&lt;P&gt;There are 500+ merchants and 50,000+ offer, it seems calculating rankings for this amount of data and each day is not very fast.&lt;/P&gt;&lt;P&gt;My second attempt is to count all offers that are cheaper than my per product:&lt;/P&gt;&lt;PRE&gt;=aggr(
    RangeMin(
     	count(distinct if(price&amp;lt;own_price, offer_id)) + 1
        , Dual('6+', 6)
    ),
    offer_date,
    product_id)&lt;/PRE&gt;&lt;P&gt;That is giving me the same values like the rank function, but a bit faster.&lt;/P&gt;&lt;P&gt;It seams the amount of data is the problem here.&lt;/P&gt;</description>
      <pubDate>Thu, 21 Feb 2019 08:25:19 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Count-offers-per-rank-and-date/m-p/1547273#M62815</guid>
      <dc:creator>jbrodmann</dc:creator>
      <dc:date>2019-02-21T08:25:19Z</dc:date>
    </item>
  </channel>
</rss>

