<?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: Autonumber or Autonumber# in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046216#M351726</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the reply would like to keep it open as of now. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 21 Jan 2016 13:42:22 GMT</pubDate>
    <dc:creator>renjithpl</dc:creator>
    <dc:date>2016-01-21T13:42:22Z</dc:date>
    <item>
      <title>Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046213#M351723</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Which function will reduce the number of bytes of a complex field.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Eg,Autonumber(Field1 &amp;amp; '##' &amp;amp; Field2)&amp;nbsp; as Reduced&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or&lt;/P&gt;&lt;P&gt;Autonumberhash128(Field1 &amp;amp; '##' &amp;amp; Field2)&amp;nbsp; as Reduced&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;THanks&lt;/P&gt;&lt;P&gt;Ren&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jan 2016 12:51:52 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046213#M351723</guid>
      <dc:creator>renjithpl</dc:creator>
      <dc:date>2016-01-21T12:51:52Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046214#M351724</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Autonumberhash128(Field1,'##',Field2)&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;it will reduce the number of bytes.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jan 2016 12:59:37 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046214#M351724</guid>
      <dc:creator>maniram23</dc:creator>
      <dc:date>2016-01-21T12:59:37Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046215#M351725</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I believe the final symbol size should be identical, minimal in both cases&lt;/P&gt;&lt;P&gt;Second function only calculates an intermediate temporary hash value from the argument.&lt;/P&gt;&lt;P&gt;I personally would go for Autonumber().&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jan 2016 13:01:14 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046215#M351725</guid>
      <dc:creator>swuehl</dc:creator>
      <dc:date>2016-01-21T13:01:14Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046216#M351726</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the reply would like to keep it open as of now. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jan 2016 13:42:22 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046216#M351726</guid>
      <dc:creator>renjithpl</dc:creator>
      <dc:date>2016-01-21T13:42:22Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046217#M351727</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For these kind of questions, it's also easy to create a test script and actually see how it performs on your real data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AFAIK, if you create sequential integers using autonumber / autonumberhas128, QV is actually not storing a symbol table at all, since it can be derived from the bit pointers itself.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jan 2016 13:54:05 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046217#M351727</guid>
      <dc:creator>swuehl</dc:creator>
      <dc:date>2016-01-21T13:54:05Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046218#M351728</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would prefer Autonumber function.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jan 2016 14:28:26 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046218#M351728</guid>
      <dc:creator />
      <dc:date>2016-01-21T14:28:26Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046219#M351729</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.qlikview.com/thread/146395" title="https://community.qlikview.com/thread/146395"&gt;AutoNumber() vs Auto..Hash() | Qlik Community&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HTH,&lt;BR /&gt;HirisH&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jan 2016 15:06:00 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046219#M351729</guid>
      <dc:creator>HirisH_V7</dc:creator>
      <dc:date>2016-01-21T15:06:00Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046220#M351730</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Stefan, this is interesting.&lt;/P&gt;&lt;P&gt;However, I guess I'm not getting your point in its entirety (my bad). And Rob is letting go as soon as he touches AutoNumberHashxxx (see&amp;nbsp; the link in Hirish' post a little further)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The hash variants serve a purpose I think, but &lt;SPAN style="font-size: 13.3333px;"&gt;indeed &lt;/SPAN&gt;it isn't easy to determine what purpose exactly.&lt;/P&gt;&lt;P&gt;IMHO as long as a script is reading field &lt;EM&gt;text&lt;/EM&gt; values (which the OP will get when inserting ## into the key values) to autonumber/autonumberhash, there must be a symbol table &lt;EM&gt;somewhere&lt;/EM&gt;. Otherwise you'll number identical strings twice. The advantage of the hash functions is that the symbol table will store comparison values of predetermined size (either 16 bytes or 64 bytes), while an autonumber table has to store every string but doesn't know beforehand what the maximum text string size will be.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Since a hash function tries to calculate a unique value for every string imaginable, I think in the long run (high cardinality and large strings) the hash functions will be more RAM efficient than just autonumber.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does the autonumber symbol table survive script execution? I shouldn't because the only value QV needs in order to do whatever it needs to do after a reload is the autonumber value itself. However, a reload has its own memory requirements and these must be taken into account as well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't really know.for sure. I think Renjith is right in keeping the discussion open for a while longer.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jan 2016 16:04:06 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046220#M351730</guid>
      <dc:creator>Peter_Cammaert</dc:creator>
      <dc:date>2016-01-21T16:04:06Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046221#M351731</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Peter,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Interesting point on the RAM requirements of both during reload. It would be interesting to test. I wouldn't be surprised if AutoNumber() was hashing it's temp lookup table, and therefore using the same RAM as AutoNumberHash*() functions anyways. Let us know if you get a chance to test. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jan 2016 17:12:57 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046221#M351731</guid>
      <dc:creator>rwunderlich</dc:creator>
      <dc:date>2016-01-21T17:12:57Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046222#M351732</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Peter,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;yes, there need to be a symbol table / lookup table / hash table during the LOAD, I was talking about the resulting data model. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The bit stuffed pointers are just the index of the values' symbol table positions, right?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have sequential integer numbers 1 to 10 as field values, like generated by an AutonumberXXX() function call, the index pointers will be 1 to 10, too, so each value's pointer is equal to the value.&lt;/P&gt;&lt;P&gt;Hence, there is no need to store the symbol table at all (and that is AFAIK what QV does, deriving the symbols directly from the pointer index in the record table). Again, 'storing' means surviving the script execution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AutonumberHash*() and Autonumber() function should basically result in the same, but your point is valid, the way to achieve it might be different in terms of memory consumption / CPU cycles needed during the script execution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think the only persons that can really answer this question might be the developers at Qlik, maybe this would be a topic for a Qlik design blog post by &lt;A href="https://community.qlik.com/qlik-users/4003"&gt;hic&lt;/A&gt;‌.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jan 2016 18:25:30 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046222#M351732</guid>
      <dc:creator>swuehl</dc:creator>
      <dc:date>2016-01-21T18:25:30Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046223#M351733</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Rob,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I agree with your reasoning about AutoNumber() probably doing a hash behind the scenes&lt;SPAN style="font-size: 13.3333px;"&gt; by&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333px;"&gt; itself&lt;/SPAN&gt;. But my limited develoment skills would automatically get stuck again: what kind of behind-the-scenes-hash? Knowing Qlik, they would choose an opportunistic but well considered approach: a best-guess hash? a suits-all hash? a dynamically adapting hash? (I don't know if such a thing &lt;SPAN style="font-size: 13.3333px;"&gt;even &lt;/SPAN&gt;exists)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;QlikView always faces a suffocating compromise: speed vs. memory consumption vs. coverage. Will QV-assumptions work for all cases that are due to follow? Will we hit the RAM limit of the machine we're running on? And since there isn't really a RAM limit anymore since the introduction of virtual memory (an S360-first if I'm not mistaken), what horrible performance will we get when paging mechanisms start to harass disk drives?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On the other hand, I still can't imagine Qlik pushing both functions for all these years when Autonumber simply invalidates Autonumberhash' existence. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anyway, I'll try to figure out some kind of test for this, and report back (&lt;EM&gt;message received&lt;/EM&gt;). However, these days I'm continuously living under the impression that these things must have been discovered before (maybe more than once) by you and the other Qlik-universe stalwarts. And that this knowledge simply doesn't bubble up like it should. Do you have any links to previous discussions to share?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Peter&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jan 2016 00:07:45 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046223#M351733</guid>
      <dc:creator>Peter_Cammaert</dc:creator>
      <dc:date>2016-01-22T00:07:45Z</dc:date>
    </item>
    <item>
      <title>Re: Autonumber or Autonumber#</title>
      <link>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046224#M351734</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've never got an answer as to why both functions exist. But I just ran a quick test and discovered something interesting. It was a quick test, and I plan to do some more formal testing next week.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As previously discussed, there is no difference in the resulting data model between AutoNumber() or AutoNumberHash256(). With a simple test of&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;AutoNumber(SKey)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;AutoNumberHash256(SKey)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Both used the same amount of memory, which lends credence to the idea that AutoNumber uses a hash for the temporary table. Both take the same amount of time to execute. (I haven't done CPU timing tests yet). It may be that both are doing the same code path under the covers.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I observed something interesting when trying a typical real-world test, auto numbering multiple fields. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;AutoNumber(SKey &amp;amp; '_' &amp;amp; Key2)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;AutoNumberHash256(SKey,'-', Key2)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Both used the same amount of memory. However, AutoNumber() took significantly longer to execute. I believe that's because of the overhead of creating the new temporary parameter string &lt;SPAN style="font-size: 13.3333px;"&gt;SKey &amp;amp; '_' &amp;amp; Key2. I think further testing will isolate this. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;While it's a best practice to include a separator like '_' between fields in AutoNumber, the separator isn't required in the hash version -- which makes it syntactically easier. I frequently use it for that reason alone.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px; font-family: 'courier new', courier;"&gt;AutoNumberHash256(SKey, Key2).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;So it looks like for multiple fields, AutoNumberHash256() &lt;EM&gt;may&lt;/EM&gt; be faster &lt;EM&gt;to use&lt;/EM&gt;. That is, neither is faster but the prep required for AutoNumber() increases execution time. I need to do some more testing before I'm fully convinced, but perhaps others will chime in with what they know or can produce in testing. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;-Rob&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="http://masterssummit.com" rel="nofollow"&gt;http://masterssummit.com&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="http://qlikviewcookbook.com" rel="nofollow"&gt;http://qlikviewcookbook.com&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 24 Jan 2016 00:08:28 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/Autonumber-or-Autonumber/m-p/1046224#M351734</guid>
      <dc:creator>rwunderlich</dc:creator>
      <dc:date>2016-01-24T00:08:28Z</dc:date>
    </item>
  </channel>
</rss>

