<?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 Help: Improving &amp;quot;for each&amp;quot; solution... in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/Help-Improving-quot-for-each-quot-solution/m-p/1430969#M430459</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;//Hi guys, i have the following situation:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Payments: &lt;/P&gt;&lt;P&gt;Load * inline //PaymentDate Format is DD/MM/YYYY&lt;/P&gt;&lt;P&gt;[ &lt;/P&gt;&lt;P&gt;Account, PaymentDate&lt;/P&gt;&lt;P&gt;1, 02/01/2017&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1, 05/01/2017&lt;/P&gt;&lt;P&gt;1, 07/01/2017&lt;/P&gt;&lt;P&gt;1, 03/02/2017&lt;/P&gt;&lt;P&gt;1, 07/02/2017&lt;/P&gt;&lt;P&gt;2, 07/02/2017&lt;/P&gt;&lt;P&gt;2, 10/02/2017&lt;/P&gt;&lt;P&gt;2, 22/02/2017&lt;/P&gt;&lt;P&gt;2, 27/02/2017&lt;/P&gt;&lt;P&gt;3, 17/06/2017&lt;/P&gt;&lt;P&gt;];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Assignments:&lt;/P&gt;&lt;P&gt;Load * inline&lt;/P&gt;&lt;P&gt;[&lt;/P&gt;&lt;P&gt;Account, Agency, DateFrom, DateTo&lt;/P&gt;&lt;P&gt;1, 50, 01/01/2017, 31/01/2017&lt;/P&gt;&lt;P&gt;1, 60, 01/02/2017, 15/02/2017&lt;/P&gt;&lt;P&gt;2, 10, 05/02/2017, 20/02/2017&lt;/P&gt;&lt;P&gt;2, 15, 21/02/2017, 20/12/2017&lt;/P&gt;&lt;P&gt;3, 25, 01/04/2017, 01/12/2017&lt;/P&gt;&lt;P&gt;];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//And i need to get the first payment date for each account, considering the assignment ranges. So the hoped result should be like this:&lt;/P&gt;&lt;P&gt;//--&lt;/P&gt;&lt;P&gt;//Account, FirstPaymentDatePerRange, Agency&lt;/P&gt;&lt;P&gt;//1, 02/01/2017, 50&lt;/P&gt;&lt;P&gt;//1, 03/02/2017, 60&lt;/P&gt;&lt;P&gt;//2, 07/02/2017, 10&lt;/P&gt;&lt;P&gt;//2, 22/02/2017, 15&lt;/P&gt;&lt;P&gt;//3, 17/06/2017, 25&lt;/P&gt;&lt;P&gt;//&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//I find a solution by looping &lt;SPAN style="font-size: 13.3333px;"&gt;Assignments &lt;/SPAN&gt;source, generating a new key. The result table:&lt;/P&gt;&lt;P&gt;//Account PaymentDate DateFrom DateTo Agency NewKey &lt;/P&gt;&lt;P&gt;//1 02/01/2017 01/01/2017 31/01/2017 50 1-01/01/2017-31/01/2017&lt;/P&gt;&lt;P&gt;//1 05/01/2017 01/01/2017 31/01/2017 50 1-01/01/2017-31/01/2017&lt;/P&gt;&lt;P&gt;//1 07/01/2017 01/01/2017 31/01/2017 50 1-01/01/2017-31/01/2017&lt;/P&gt;&lt;P&gt;//1 03/02/2017 01/02/2017 15/02/2017 60 1-01/02/2017-15/02/2017&lt;/P&gt;&lt;P&gt;//1 07/02/2017 01/02/2017 15/02/2017 60 1-01/02/2017-15/02/2017&lt;/P&gt;&lt;P&gt;//2 07/02/2017 05/02/2017 20/02/2017 10 2-05/02/2017-20/02/2017&lt;/P&gt;&lt;P&gt;//2 10/02/2017 05/02/2017 20/02/2017 10 2-05/02/2017-20/02/2017&lt;/P&gt;&lt;P&gt;//2 22/02/2017 21/02/2017 20/12/2017 15 2-21/02/2017-20/12/2017&lt;/P&gt;&lt;P&gt;//2 27/02/2017 21/02/2017 20/12/2017 15 2-21/02/2017-20/12/2017&lt;/P&gt;&lt;P&gt;//3 17/06/2017 01/04/2017 01/12/2017 25 3-01/04/2017-01/12/2017&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Finally, with an extra step, getting the minimum PaymentDate by grouping account and agency (and joining on Payments table), i can have the table i was looking for:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//1 02/01/2017 01/01/2017 31/01/2017 50 1-01/01/2017-31/01/2017&lt;/P&gt;&lt;P&gt;//1 03/02/2017 01/02/2017 15/02/2017 60 1-01/02/2017-15/02/2017&lt;/P&gt;&lt;P&gt;//2 07/02/2017 05/02/2017 20/02/2017 10 2-05/02/2017-20/02/2017&lt;/P&gt;&lt;P&gt;//2 22/02/2017 21/02/2017 20/12/2017 15 2-21/02/2017-20/12/2017&lt;/P&gt;&lt;P&gt;//3 17/06/2017 01/04/2017 01/12/2017 25 3-01/04/2017-01/12/2017&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Now, this solution works fine with few rows, But it's too slow when my Payments table is up 250.000 and the assignments about 2.500.000 rows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NewPayments:&amp;nbsp; &lt;/P&gt;&lt;P&gt;LOAD * INLINE [&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Account, PaymentDate, NewKey, DateFrom, DateTo&lt;/P&gt;&lt;P&gt;];&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FOR vRow = 0 to NoOfRows('Assignments') -1&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; LET vAccount = Peek('Account',$(vRow),'Assignments');&lt;/P&gt;&lt;P&gt;&amp;nbsp; LET vDateFrom = Peek('DateFrom',$(vRow),'Assignments');&lt;/P&gt;&lt;P&gt;&amp;nbsp; LET vDateTo = Peek('DateTo',$(vRow),'Assignments');&lt;/P&gt;&lt;P&gt;&amp;nbsp; LET vAgency = Peek('Agency',$(vRow),'Assignments');&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;Concatenate(NewPayments)&lt;/P&gt;&lt;P&gt;LOAD&lt;/P&gt;&lt;P&gt;Account, &lt;/P&gt;&lt;P&gt;PaymentDate, &lt;/P&gt;&lt;P&gt;$(vAccount) &amp;amp;'-'&amp;amp; '$(vDateFrom)' &amp;amp; '-' &amp;amp; '$(vDateTo)' AS NewKey,&lt;/P&gt;&lt;P&gt;'$(vDateFrom)' as DateFrom,&lt;/P&gt;&lt;P&gt;'$(vDateTo)' as DateTo,&lt;/P&gt;&lt;P&gt;'$(vAgency)' as Agency&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Resident &lt;/P&gt;&lt;P&gt;Payments&lt;/P&gt;&lt;P&gt;where &lt;/P&gt;&lt;P&gt;Account = $(vAccount)&lt;/P&gt;&lt;P&gt;and PaymentDate &amp;gt;= Date('$(vDateFrom)')&lt;/P&gt;&lt;P&gt;and PaymentDate &amp;lt; Date('$(vDateTo)');&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NEXT;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DROP TABLE Assignments;&lt;/P&gt;&lt;P&gt;DROP TABLE Payments;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Please, any sugestion to improve the performance?&lt;/P&gt;&lt;P&gt;//Thanks in advance!&lt;/P&gt;&lt;P&gt;//&lt;/P&gt;&lt;P&gt;//R.-&lt;/P&gt;&lt;P&gt;//&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 28 Sep 2017 04:30:44 GMT</pubDate>
    <dc:creator />
    <dc:date>2017-09-28T04:30:44Z</dc:date>
    <item>
      <title>Help: Improving "for each" solution...</title>
      <link>https://community.qlik.com/t5/QlikView/Help-Improving-quot-for-each-quot-solution/m-p/1430969#M430459</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;//Hi guys, i have the following situation:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Payments: &lt;/P&gt;&lt;P&gt;Load * inline //PaymentDate Format is DD/MM/YYYY&lt;/P&gt;&lt;P&gt;[ &lt;/P&gt;&lt;P&gt;Account, PaymentDate&lt;/P&gt;&lt;P&gt;1, 02/01/2017&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1, 05/01/2017&lt;/P&gt;&lt;P&gt;1, 07/01/2017&lt;/P&gt;&lt;P&gt;1, 03/02/2017&lt;/P&gt;&lt;P&gt;1, 07/02/2017&lt;/P&gt;&lt;P&gt;2, 07/02/2017&lt;/P&gt;&lt;P&gt;2, 10/02/2017&lt;/P&gt;&lt;P&gt;2, 22/02/2017&lt;/P&gt;&lt;P&gt;2, 27/02/2017&lt;/P&gt;&lt;P&gt;3, 17/06/2017&lt;/P&gt;&lt;P&gt;];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Assignments:&lt;/P&gt;&lt;P&gt;Load * inline&lt;/P&gt;&lt;P&gt;[&lt;/P&gt;&lt;P&gt;Account, Agency, DateFrom, DateTo&lt;/P&gt;&lt;P&gt;1, 50, 01/01/2017, 31/01/2017&lt;/P&gt;&lt;P&gt;1, 60, 01/02/2017, 15/02/2017&lt;/P&gt;&lt;P&gt;2, 10, 05/02/2017, 20/02/2017&lt;/P&gt;&lt;P&gt;2, 15, 21/02/2017, 20/12/2017&lt;/P&gt;&lt;P&gt;3, 25, 01/04/2017, 01/12/2017&lt;/P&gt;&lt;P&gt;];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//And i need to get the first payment date for each account, considering the assignment ranges. So the hoped result should be like this:&lt;/P&gt;&lt;P&gt;//--&lt;/P&gt;&lt;P&gt;//Account, FirstPaymentDatePerRange, Agency&lt;/P&gt;&lt;P&gt;//1, 02/01/2017, 50&lt;/P&gt;&lt;P&gt;//1, 03/02/2017, 60&lt;/P&gt;&lt;P&gt;//2, 07/02/2017, 10&lt;/P&gt;&lt;P&gt;//2, 22/02/2017, 15&lt;/P&gt;&lt;P&gt;//3, 17/06/2017, 25&lt;/P&gt;&lt;P&gt;//&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//I find a solution by looping &lt;SPAN style="font-size: 13.3333px;"&gt;Assignments &lt;/SPAN&gt;source, generating a new key. The result table:&lt;/P&gt;&lt;P&gt;//Account PaymentDate DateFrom DateTo Agency NewKey &lt;/P&gt;&lt;P&gt;//1 02/01/2017 01/01/2017 31/01/2017 50 1-01/01/2017-31/01/2017&lt;/P&gt;&lt;P&gt;//1 05/01/2017 01/01/2017 31/01/2017 50 1-01/01/2017-31/01/2017&lt;/P&gt;&lt;P&gt;//1 07/01/2017 01/01/2017 31/01/2017 50 1-01/01/2017-31/01/2017&lt;/P&gt;&lt;P&gt;//1 03/02/2017 01/02/2017 15/02/2017 60 1-01/02/2017-15/02/2017&lt;/P&gt;&lt;P&gt;//1 07/02/2017 01/02/2017 15/02/2017 60 1-01/02/2017-15/02/2017&lt;/P&gt;&lt;P&gt;//2 07/02/2017 05/02/2017 20/02/2017 10 2-05/02/2017-20/02/2017&lt;/P&gt;&lt;P&gt;//2 10/02/2017 05/02/2017 20/02/2017 10 2-05/02/2017-20/02/2017&lt;/P&gt;&lt;P&gt;//2 22/02/2017 21/02/2017 20/12/2017 15 2-21/02/2017-20/12/2017&lt;/P&gt;&lt;P&gt;//2 27/02/2017 21/02/2017 20/12/2017 15 2-21/02/2017-20/12/2017&lt;/P&gt;&lt;P&gt;//3 17/06/2017 01/04/2017 01/12/2017 25 3-01/04/2017-01/12/2017&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Finally, with an extra step, getting the minimum PaymentDate by grouping account and agency (and joining on Payments table), i can have the table i was looking for:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//1 02/01/2017 01/01/2017 31/01/2017 50 1-01/01/2017-31/01/2017&lt;/P&gt;&lt;P&gt;//1 03/02/2017 01/02/2017 15/02/2017 60 1-01/02/2017-15/02/2017&lt;/P&gt;&lt;P&gt;//2 07/02/2017 05/02/2017 20/02/2017 10 2-05/02/2017-20/02/2017&lt;/P&gt;&lt;P&gt;//2 22/02/2017 21/02/2017 20/12/2017 15 2-21/02/2017-20/12/2017&lt;/P&gt;&lt;P&gt;//3 17/06/2017 01/04/2017 01/12/2017 25 3-01/04/2017-01/12/2017&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Now, this solution works fine with few rows, But it's too slow when my Payments table is up 250.000 and the assignments about 2.500.000 rows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NewPayments:&amp;nbsp; &lt;/P&gt;&lt;P&gt;LOAD * INLINE [&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Account, PaymentDate, NewKey, DateFrom, DateTo&lt;/P&gt;&lt;P&gt;];&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FOR vRow = 0 to NoOfRows('Assignments') -1&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; LET vAccount = Peek('Account',$(vRow),'Assignments');&lt;/P&gt;&lt;P&gt;&amp;nbsp; LET vDateFrom = Peek('DateFrom',$(vRow),'Assignments');&lt;/P&gt;&lt;P&gt;&amp;nbsp; LET vDateTo = Peek('DateTo',$(vRow),'Assignments');&lt;/P&gt;&lt;P&gt;&amp;nbsp; LET vAgency = Peek('Agency',$(vRow),'Assignments');&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;Concatenate(NewPayments)&lt;/P&gt;&lt;P&gt;LOAD&lt;/P&gt;&lt;P&gt;Account, &lt;/P&gt;&lt;P&gt;PaymentDate, &lt;/P&gt;&lt;P&gt;$(vAccount) &amp;amp;'-'&amp;amp; '$(vDateFrom)' &amp;amp; '-' &amp;amp; '$(vDateTo)' AS NewKey,&lt;/P&gt;&lt;P&gt;'$(vDateFrom)' as DateFrom,&lt;/P&gt;&lt;P&gt;'$(vDateTo)' as DateTo,&lt;/P&gt;&lt;P&gt;'$(vAgency)' as Agency&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Resident &lt;/P&gt;&lt;P&gt;Payments&lt;/P&gt;&lt;P&gt;where &lt;/P&gt;&lt;P&gt;Account = $(vAccount)&lt;/P&gt;&lt;P&gt;and PaymentDate &amp;gt;= Date('$(vDateFrom)')&lt;/P&gt;&lt;P&gt;and PaymentDate &amp;lt; Date('$(vDateTo)');&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NEXT;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DROP TABLE Assignments;&lt;/P&gt;&lt;P&gt;DROP TABLE Payments;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Please, any sugestion to improve the performance?&lt;/P&gt;&lt;P&gt;//Thanks in advance!&lt;/P&gt;&lt;P&gt;//&lt;/P&gt;&lt;P&gt;//R.-&lt;/P&gt;&lt;P&gt;//&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Sep 2017 04:30:44 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Help-Improving-quot-for-each-quot-solution/m-p/1430969#M430459</guid>
      <dc:creator />
      <dc:date>2017-09-28T04:30:44Z</dc:date>
    </item>
    <item>
      <title>Re: Help: Improving "for each" solution...</title>
      <link>https://community.qlik.com/t5/QlikView/Help-Improving-quot-for-each-quot-solution/m-p/1430970#M430460</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Instead of a for approach please try this &lt;A href="https://community.qlik.com/qlik-blogpost/3037"&gt;IntervalMatch&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Oct 2017 11:56:09 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Help-Improving-quot-for-each-quot-solution/m-p/1430970#M430460</guid>
      <dc:creator>Clever_Anjos</dc:creator>
      <dc:date>2017-10-04T11:56:09Z</dc:date>
    </item>
  </channel>
</rss>

