<?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: Concatenating values of fields from field X to last field in load script in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/Concatenating-values-of-fields-from-field-X-to-last-field-in/m-p/671877#M676705</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Marcoo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;try script from attached file&lt;BR /&gt;.&lt;/P&gt;&lt;P&gt;The only thing you should do, is to change part, where v is defined. You may use there something similiar than loop in your script, where you check what fields should be concatenated. This way you will build part of your load statemant. Next use it &lt;IMG src="https://community.qlik.com/legacyfs/online/emoticons/happy.png" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards&lt;/P&gt;&lt;P&gt;D&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 12 Jun 2014 21:35:06 GMT</pubDate>
    <dc:creator />
    <dc:date>2014-06-12T21:35:06Z</dc:date>
    <item>
      <title>Concatenating values of fields from field X to last field in load script</title>
      <link>https://community.qlik.com/t5/QlikView/Concatenating-values-of-fields-from-field-X-to-last-field-in/m-p/671876#M676704</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have the table called data with the following structure:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 384px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" width="64"&gt;TRANSACTION_ID&lt;/TD&gt;&lt;TD width="64"&gt;ATT_1&lt;/TD&gt;&lt;TD width="64"&gt;ATT_2&lt;/TD&gt;&lt;TD width="64"&gt;ATT_3&lt;/TD&gt;&lt;TD width="64"&gt;CCR&lt;/TD&gt;&lt;TD width="64"&gt;EAD&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;X00001&lt;/TD&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;x&lt;/TD&gt;&lt;TD&gt;h&lt;/TD&gt;&lt;TD class="xl65"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,000 &lt;/TD&gt;&lt;TD class="xl65"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2,500 &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;X00002&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;y&lt;/TD&gt;&lt;TD&gt;h&lt;/TD&gt;&lt;TD class="xl65"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2,000 &lt;/TD&gt;&lt;TD class="xl65"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5,128 &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;I want to create a table data_keys which looks like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" width="222"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" width="117"&gt;TRANSACTION_ID&lt;/TD&gt;&lt;TD width="105"&gt;MATCHING_KEY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;X00001&lt;/TD&gt;&lt;TD&gt;a|x|h|&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;X00002&lt;/TD&gt;&lt;TD&gt;b|y|h|&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P&gt;The number of concatenated fields should be dependent on a variable X, so that I can automatically concatenate all the values from field X to the last loaded field.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below is my solution, it works, but it is extremely inefficient as I am doing it with a for loop and a load inline for each single row. For instance it is impossible to load with a decent speed 1,000,000 rows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How would you solve the problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;data:&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;LOAD TRANSACTION_ID, &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CCR, &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EAD, &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RW, &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CVA, &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RWA, &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MET_1, &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MET_2,&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //matching attributes&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ATT_1, &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ATT_2, &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ATT_3&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;FROM&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;[.\data.xlsx]&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;(ooxml, embedded labels, table is data);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;let data_first_attribute = 'ATT_1';&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;let data_attribute_start_point = 0;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;for x = 1 to NoOfFields('data')&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if FieldName($(x),'data') = data_first_attribute then&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let data_attribute_start_point = x;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;next x&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;if data_attribute_start_point = 0 then&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call ThrowException('Error: data_first_attribute filed name was not found in data');&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;//generating the matching key for data, it will be used to match the data with the rules&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;for i = 0 to NoOfRows('data')-1&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set key = '';&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for x = $(data_attribute_start_point) to NoOfFields('data')&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let key = key &amp;amp; peek(FieldName(x,'data'), i, 'data') &amp;amp; '|';&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; next x&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; let TRANSACTION_ID = peek('TRANSACTION_ID', i, 'data');&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_keys:&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOAD * INLINE [&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRANSACTION_ID, MATCHING_KEY&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(TRANSACTION_ID), $(key)&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ];&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;next i&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Jun 2014 19:05:55 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Concatenating-values-of-fields-from-field-X-to-last-field-in/m-p/671876#M676704</guid>
      <dc:creator />
      <dc:date>2014-06-12T19:05:55Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenating values of fields from field X to last field in load script</title>
      <link>https://community.qlik.com/t5/QlikView/Concatenating-values-of-fields-from-field-X-to-last-field-in/m-p/671877#M676705</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Marcoo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;try script from attached file&lt;BR /&gt;.&lt;/P&gt;&lt;P&gt;The only thing you should do, is to change part, where v is defined. You may use there something similiar than loop in your script, where you check what fields should be concatenated. This way you will build part of your load statemant. Next use it &lt;IMG src="https://community.qlik.com/legacyfs/online/emoticons/happy.png" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards&lt;/P&gt;&lt;P&gt;D&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Jun 2014 21:35:06 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Concatenating-values-of-fields-from-field-X-to-last-field-in/m-p/671877#M676705</guid>
      <dc:creator />
      <dc:date>2014-06-12T21:35:06Z</dc:date>
    </item>
  </channel>
</rss>

