<?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 Re: Data Prep - Get most recent value in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/Data-Prep-Get-most-recent-value/m-p/1843749#M1215388</link>
    <description>&lt;P&gt;I'm not sure of an easier way, but this is what i would do:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//unpivot source data using crosstable&lt;BR /&gt;source_data:&lt;BR /&gt;crosstable (varname, varvalue, 2)&lt;BR /&gt;load *&lt;BR /&gt;;&lt;BR /&gt;load&lt;BR /&gt;*&lt;/P&gt;&lt;P&gt;from &lt;A href="https://community.qlik.com/t5/QlikView-App-Dev/Data-Prep-Get-most-recent-value/td-p/1843663" target="_blank"&gt;https://community.qlik.com/t5/QlikView-App-Dev/Data-Prep-Get-most-recent-value/td-p/1843663&lt;/A&gt;&lt;/P&gt;&lt;P&gt;(html, utf8, embedded labels, table is @1)&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//flag max sequence number for each person/variable&lt;BR /&gt;left join (source_data)&lt;BR /&gt;//flag_max_records:&lt;BR /&gt;load&lt;BR /&gt;max([&amp;lt;SequenceNumber&amp;gt;]) as [&amp;lt;SequenceNumber&amp;gt;]&lt;BR /&gt;,[&amp;lt;PersonID&amp;gt;]&lt;BR /&gt;,varname&lt;BR /&gt;,1 as keep_record&lt;BR /&gt;resident source_data&lt;BR /&gt;where varvalue &amp;gt; 0&lt;BR /&gt;group by [&amp;lt;PersonID&amp;gt;]&lt;BR /&gt;,varname&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;//pivot using generic load on only the the max records&lt;BR /&gt;max_records:&lt;BR /&gt;generic load&lt;BR /&gt;[&amp;lt;PersonID&amp;gt;],varname, varvalue resident source_data&lt;BR /&gt;where keep_record = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//join generic load tables into single table&lt;/P&gt;&lt;P&gt;set vListOfTables = ;&lt;BR /&gt;&lt;BR /&gt;for vTableNo = 0 to NoOfTables()&lt;BR /&gt;let vTableName = Tablename($(vTableNo));&lt;BR /&gt;&lt;BR /&gt;If Subfield(vTableName,'.',1)='max_records' Then&lt;/P&gt;&lt;P&gt;Let vListOfTables = vListOfTables &amp;amp; If(Len(vListOfTables)&amp;gt;0,',') &amp;amp; Chr(39) &amp;amp; vTableName &amp;amp; Chr(39) ;&lt;/P&gt;&lt;P&gt;End If&lt;/P&gt;&lt;P&gt;Next vTableNo&lt;BR /&gt;;&lt;BR /&gt;&lt;BR /&gt;trace vTableName $(vTableName);&lt;BR /&gt;&lt;BR /&gt;final_data:&lt;BR /&gt;load distinct&lt;BR /&gt;[&amp;lt;PersonID&amp;gt;]&lt;BR /&gt;resident source_data;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For each vTableName in $(vListOfTables)&lt;/P&gt;&lt;P&gt;Left Join (final_data) Load * Resident [$(vTableName)];&lt;/P&gt;&lt;P&gt;Drop Table [$(vTableName)];&lt;/P&gt;&lt;P&gt;Next vTableName&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;drop table source_data;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;exit script;&lt;/P&gt;</description>
    <pubDate>Thu, 07 Oct 2021 16:28:07 GMT</pubDate>
    <dc:creator>stevejoyce</dc:creator>
    <dc:date>2021-10-07T16:28:07Z</dc:date>
    <item>
      <title>Data Prep - Get most recent value</title>
      <link>https://community.qlik.com/t5/QlikView/Data-Prep-Get-most-recent-value/m-p/1843663#M1215378</link>
      <description>&lt;P&gt;I have clean/high quality data in a difficult to use format.&amp;nbsp; I am hoping someone clever can give me a leg up on making my data more useful.&lt;/P&gt;&lt;P&gt;Each PersonID have values that get updated over time.&amp;nbsp; The SequenceNumber *always* grows - it's a primary key.&amp;nbsp; The problem is this only tracks changes.&amp;nbsp; If there are no changes the cell is left blank.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;lt;SequenceNumber&amp;gt;&lt;/TD&gt;&lt;TD&gt;&amp;lt;PersonID&amp;gt;&lt;/TD&gt;&lt;TD&gt;&amp;lt;Var1&amp;gt;&lt;/TD&gt;&lt;TD&gt;&amp;lt;Var2&amp;gt;&lt;/TD&gt;&lt;TD&gt;&amp;lt;Var3&amp;gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;12315&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;aa&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;12366&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;bb&lt;/TD&gt;&lt;TD&gt;cc&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;12367&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;bb1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;12499&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;bb2&lt;/TD&gt;&lt;TD&gt;cc1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The desired result is&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;lt;PersonID&amp;gt;&lt;/TD&gt;&lt;TD&gt;&amp;lt;Var1&amp;gt;&lt;/TD&gt;&lt;TD&gt;&amp;lt;Var2&amp;gt;&lt;/TD&gt;&lt;TD&gt;&amp;lt;Var3&amp;gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;aa&lt;/TD&gt;&lt;TD&gt;bb2&lt;/TD&gt;&lt;TD&gt;cc1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If this were just 3 or 4 variables and a thousand rows I'd probably just bite the bullet and brute-force this with loops and inspecting each variable.&amp;nbsp; HOWEVER - I have 500,000 rows and &lt;EM&gt;several hundred&lt;/EM&gt; variables.&amp;nbsp; So I need something more clever (group by PersonID with highest sequence number where value isn't blank - for each variable).&lt;/P&gt;&lt;P&gt;This is either super easy and I'm just missing the obvious, or this is neigh impossible within Qlik without inspecting each value in each row.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Oct 2021 14:57:40 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Data-Prep-Get-most-recent-value/m-p/1843663#M1215378</guid>
      <dc:creator>tdegen_qlik</dc:creator>
      <dc:date>2021-10-07T14:57:40Z</dc:date>
    </item>
    <item>
      <title>Re: Data Prep - Get most recent value</title>
      <link>https://community.qlik.com/t5/QlikView/Data-Prep-Get-most-recent-value/m-p/1843749#M1215388</link>
      <description>&lt;P&gt;I'm not sure of an easier way, but this is what i would do:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//unpivot source data using crosstable&lt;BR /&gt;source_data:&lt;BR /&gt;crosstable (varname, varvalue, 2)&lt;BR /&gt;load *&lt;BR /&gt;;&lt;BR /&gt;load&lt;BR /&gt;*&lt;/P&gt;&lt;P&gt;from &lt;A href="https://community.qlik.com/t5/QlikView-App-Dev/Data-Prep-Get-most-recent-value/td-p/1843663" target="_blank"&gt;https://community.qlik.com/t5/QlikView-App-Dev/Data-Prep-Get-most-recent-value/td-p/1843663&lt;/A&gt;&lt;/P&gt;&lt;P&gt;(html, utf8, embedded labels, table is @1)&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//flag max sequence number for each person/variable&lt;BR /&gt;left join (source_data)&lt;BR /&gt;//flag_max_records:&lt;BR /&gt;load&lt;BR /&gt;max([&amp;lt;SequenceNumber&amp;gt;]) as [&amp;lt;SequenceNumber&amp;gt;]&lt;BR /&gt;,[&amp;lt;PersonID&amp;gt;]&lt;BR /&gt;,varname&lt;BR /&gt;,1 as keep_record&lt;BR /&gt;resident source_data&lt;BR /&gt;where varvalue &amp;gt; 0&lt;BR /&gt;group by [&amp;lt;PersonID&amp;gt;]&lt;BR /&gt;,varname&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;//pivot using generic load on only the the max records&lt;BR /&gt;max_records:&lt;BR /&gt;generic load&lt;BR /&gt;[&amp;lt;PersonID&amp;gt;],varname, varvalue resident source_data&lt;BR /&gt;where keep_record = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//join generic load tables into single table&lt;/P&gt;&lt;P&gt;set vListOfTables = ;&lt;BR /&gt;&lt;BR /&gt;for vTableNo = 0 to NoOfTables()&lt;BR /&gt;let vTableName = Tablename($(vTableNo));&lt;BR /&gt;&lt;BR /&gt;If Subfield(vTableName,'.',1)='max_records' Then&lt;/P&gt;&lt;P&gt;Let vListOfTables = vListOfTables &amp;amp; If(Len(vListOfTables)&amp;gt;0,',') &amp;amp; Chr(39) &amp;amp; vTableName &amp;amp; Chr(39) ;&lt;/P&gt;&lt;P&gt;End If&lt;/P&gt;&lt;P&gt;Next vTableNo&lt;BR /&gt;;&lt;BR /&gt;&lt;BR /&gt;trace vTableName $(vTableName);&lt;BR /&gt;&lt;BR /&gt;final_data:&lt;BR /&gt;load distinct&lt;BR /&gt;[&amp;lt;PersonID&amp;gt;]&lt;BR /&gt;resident source_data;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For each vTableName in $(vListOfTables)&lt;/P&gt;&lt;P&gt;Left Join (final_data) Load * Resident [$(vTableName)];&lt;/P&gt;&lt;P&gt;Drop Table [$(vTableName)];&lt;/P&gt;&lt;P&gt;Next vTableName&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;drop table source_data;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;exit script;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Oct 2021 16:28:07 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Data-Prep-Get-most-recent-value/m-p/1843749#M1215388</guid>
      <dc:creator>stevejoyce</dc:creator>
      <dc:date>2021-10-07T16:28:07Z</dc:date>
    </item>
    <item>
      <title>Re: Data Prep - Get most recent value</title>
      <link>https://community.qlik.com/t5/QlikView/Data-Prep-Get-most-recent-value/m-p/1843924#M1215394</link>
      <description>&lt;P&gt;Ick!&amp;nbsp; That looks like an awful mess.&amp;nbsp;&lt;/P&gt;&lt;P&gt;...but still a thousand times better than any solution I was thinking of!!&lt;/P&gt;&lt;P&gt;The unpivot/cross-table makes perfect sense here.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As a sidebar, I've seen quite a few Qlik tutorials that use cross-tables (multi-language support comes to mind).&amp;nbsp; I should probably find a way to work then into my repotoir.&lt;/P&gt;</description>
      <pubDate>Fri, 08 Oct 2021 04:17:52 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Data-Prep-Get-most-recent-value/m-p/1843924#M1215394</guid>
      <dc:creator>tdegen_qlik</dc:creator>
      <dc:date>2021-10-08T04:17:52Z</dc:date>
    </item>
    <item>
      <title>Re: Data Prep - Get most recent value</title>
      <link>https://community.qlik.com/t5/QlikView/Data-Prep-Get-most-recent-value/m-p/1844124#M1215404</link>
      <description>&lt;P&gt;It's not that messy, but it's not a single function for sure.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If it was a few fixed number of columns i would use peek function sorting by sequency#, but being you have so many columns i think this could be the way to go.&lt;/P&gt;&lt;P&gt;If it works for you, please mark as solution.&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;</description>
      <pubDate>Fri, 08 Oct 2021 10:42:27 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Data-Prep-Get-most-recent-value/m-p/1844124#M1215404</guid>
      <dc:creator>stevejoyce</dc:creator>
      <dc:date>2021-10-08T10:42:27Z</dc:date>
    </item>
  </channel>
</rss>

