<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Back To Basics Archives -</title>
	<atom:link href="https://www.quickintelligence.co.uk/back-to-basics/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Sun, 19 Nov 2023 21:32:39 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.quickintelligence.co.uk/wp-content/uploads/2017/05/cropped-QuickIntelligence_Square-32x32.png</url>
	<title>Back To Basics Archives -</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">48890870</site>	<item>
		<title>Generating Test Data In Qlik Load Scripts</title>
		<link>https://www.quickintelligence.co.uk/generating-test-data-in-qlik-load-scripts/</link>
					<comments>https://www.quickintelligence.co.uk/generating-test-data-in-qlik-load-scripts/#respond</comments>
		
		<dc:creator><![CDATA[Steve Dark]]></dc:creator>
		<pubDate>Mon, 20 Nov 2023 10:31:48 +0000</pubDate>
				<category><![CDATA[Back To Basics]]></category>
		<category><![CDATA[Qlik Sense Tutorials]]></category>
		<category><![CDATA[Charting]]></category>
		<category><![CDATA[Correlation]]></category>
		<category><![CDATA[Stats]]></category>
		<category><![CDATA[Tutorial]]></category>
		<guid isPermaLink="false">https://www.quickintelligence.co.uk/?p=1505866</guid>

					<description><![CDATA[<p>Sometimes you need to create test data to ensure that a Qlik function behaves the way you expect it should. Recently I had just that requirement to prove that the Correl function gave good results over semi-predictable data. This post shows how you can create data on the fly for these kind of purposes. Data  [...]</p>
<p>The post <a href="https://www.quickintelligence.co.uk/generating-test-data-in-qlik-load-scripts/">Generating Test Data In Qlik Load Scripts</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Sometimes you need to create test data to ensure that a Qlik function behaves the way you expect it should. Recently I had just that requirement to prove that the Correl function gave good results over semi-predictable data. This post shows how you can create data on the fly for these kind of purposes.</p>
<p><span id="more-1505866"></span></p>
<h2>Data Without a Source</h2>
<p>Typically a Qlik application will load its data from a data source, such as a database, API or flat file. Sometimes you just want to create something on the fly. The <strong>AUTOGENERATE</strong> function is a great way of doing this, and many of the applications on my <a href="https://www.quickintelligence.co.uk/examples/" target="_blank" rel="noopener">Qlik Examples</a> page use just this functionality. The function gives a specified number of rows of data that you can then work from. To create a table with a single field with values from 1 to 1,000:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">LOAD
    RowNo() as Value
AUTOGENERATE(1000);</code></pre>
<p>This may be useful in and of itself, but it is more likely you will need to do more. Read on to find out some of the things you can do.</p>
<h2>Well, That&#8217;s A Bit Random</h2>
<p>Often you will want to create some random values, and for this the <strong>rand()</strong> function is what you require. This function will return a number which falls somewhere between 0 and 1. Whilst at first this sounds a bit limited, with some very basic maths you can create many kinds of values.</p>
<p>So, to get a random integer between 0 and 999 you could do the following:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">LOAD
    floor(rand()*1000) as Value
AUTOGENERATE(1000);</code></pre>
<p>If you wanted to get a relatively random number of dimension values from a list you can multiply the random value by the number of values you have, round up to the nearest integer and then use a <strong>pick()</strong> function to choose which dimension value to pick:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">LOAD
    pick(ceil(rand()*5),'Ben','Ian','Tom','Paul','Olly') as Person
AUTOGENERATE(1000);</code></pre>
<p>Note with this approach though you will get roughly the same number of rows for each of the values, due to how random numbers work. If you want to have less regular number of rows you will need to introduce some bias.</p>
<p>If you want to generate random codes that look like they could be real (but are not) you can use the fact that the <strong>chr()</strong> function picks an ascii character based on a number. To get a code that looks like ABC123 you would have:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">LOAD
    chr(65+floor(rand()*26))
        & chr(65+floor(rand()*26))
        & chr(65+floor(rand()*26))
        & num(ceil(rand()*999), '000') as PersonID
AUTOGENERATE(1000);</code></pre>
<p>Given the number of possible values that this could generate you would most likely get all unique values. If you would prefer to guarantee that there are no duplicates you could use <strong>rowno()</strong> instead of <strong>rand()</strong>. If you wanted to cause more duplicates you could reduce the number of characters and the multipliers on each of the random values, perhaps reducing the letters to A to D and the digits to all be multiples of 9:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">LOAD
    chr(65+floor(rand()*4))
        & chr(65+floor(rand()*4))
        & num(ceil(rand()*99)*9, '000') as DupedID
AUTOGENERATE(1000);</code></pre>
<p>If you want to have data shown on a line chart you can generate dates, using the fact that dates are just numbers under the bonnet and we can therefore do maths on them. Again, if you want one row per date then use the <strong>rowno()</strong> function, or if you want more randomness around the rows per day use <strong>rand()</strong>:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">LOAD
    date(today()-(rowno()-1), 'DD MMM YYYY') as Date,
    date(today()-floor(rand()*90), 'DD MMM YYYY') as [Date Rolling 3m]
AUTOGENERATE(1000);</code></pre>
<p>Creating dates in this way has been particularly useful in some of the demo apps I&#8217;ve created, as a simple reload will make the demo look fresh and current as all dates are in a period leading up to the current date.</p>
<p>That&#8217;s just a few examples of generating test data using <strong>AUTOGENERATE</strong>, but I am sure you can think of many more.</p>
<h2>But Does It All Correlate?</h2>
<p>I mentioned at the top that I had a recent requirement to test the <strong>correl()</strong> function, and generated some data to do this. For those who have note come across the statement before, it returns the aggregated correlation coefficient for two data sets. Or put into English, a value is returned which is close to 1 if there is a very strong positive correlation, close to -1 if there is a strong negative correlation and close to zero if there is very little correlation between two sets of values.</p>
<p>The function is called like this:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">correl(aggr(sum(X), Dim), aggr(sum(Y1), Dim))</code></pre>
<p>This is where <strong>Dim</strong> is a dimension value in the data and the two <strong>aggr</strong> statements create two datasets with a row for each dimension value. The <strong>sum(X)</strong> and <strong>sum(Y)</strong> expressions would usually be more complex calculations, but in this case it is simply the numbers generated in the load script.</p>
<p><img fetchpriority="high" decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-X-Y.jpg" alt="Correlation chart X=Y" width="270" height="257" class="alignright size-full wp-image-1505869" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-X-Y-200x190.jpg 200w, https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-X-Y.jpg 270w" sizes="(max-width: 270px) 100vw, 270px" />The load script to make this expression work is as follows:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">LOAD
    'Row ' & num(RowNo(), '#,##0') as Dim,
    RowNo() as X,
    RowNo() as Y1
AUTOGENERATE(1000);</code></pre>
<p>Because we are using the row number for both the <strong>X</strong> and <strong>Y1</strong> values there is an absolute positive correlation and the function returns 1, as it should.</p>
<p><img decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-X-Y-1.jpg" alt="Correlation chart inverse" width="271" height="257" class="alignright size-full wp-image-1505873" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-X-Y-1-200x190.jpg 200w, https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-X-Y-1.jpg 271w" sizes="(max-width: 271px) 100vw, 271px" />For all subsequent tests we keep the Dim dimension and the X value, which always gives us a point along the bottom of the chart. For a negative correlation the value of Y can be calculated as:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">1000 - RowNo() as Y2</code></pre>
<p>So now when X is 0 Y is 1000 and vice versa. This is an absolute negative correlation, and the correl function returns -1, again as it should.</p>
<p>The rest of the values for Y which I tested for where as follows:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">Rand() * 1000 as Y3</code></pre>
<p>A totally random value, which gives a correlation coefficient that is very close to zero and a plot that is full of randomly placed dots.</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">RowNo() * Rand() as Y4</code></pre>
<p>A random value between 0 and 1 multiplied by the X value, so that the Y value is random, but never greater than Y. This gives a correlation coefficient that is around 0.5 and a chart where the bottom right half is filled. This could be inverted, but I did not try that value.</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">(RowNo() * (Rand()-0.5)) + 500</code></pre>
<p>A value that deviates from the centre of the chart on the Y axis by a random number that is plus or minus half of the value of Y. As the values fall above and below the line equally the correlation is very close to zero.</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">RowNo() + ((Rand()-0.5)*(RowNo()/1)) as Y6</code></pre>
<p>This value is similar to the X=Y chart we started with, but with a random deviation from the line in either direction, up to half of the Y value. The divide by 1 is left in there as I was experimenting with having the deviation greater or lesser by dividing the row number. Correlation coefficient is approaching 1, but is not there.</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">500 + ((rand()*10)-5) as Y7</code></pre>
<p>This value has a similar Y value for every value of X. I started off having it exactly the same for each X value, but the correl function requires some variance in the number or the spread will be zero causing a divide by zero and no correlation coefficient number. A random deviation of up to 5 in either direction provides this difference, but that deviation is small enough that the correlation coefficient is very close to zero.</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">500 + ((rand()*10)-5) as X2</code></pre>
<p>The final expression is a bit different to all the others, as I wanted values from 1 to 1000 for all Y values in order (I use Y1 from above for this) and then have a calculation for the X value that is close to the same value, but off by a small margin. You will note the expression for X2 is identical to Y7, and I could have used the same field in the correl function, but it felt wrong to have two values labeled Y in the chart.</p>
<p>The resultant scatter charts and correlation coefficients for all of the derived values above can be seen in this screenshot (click to expand).</p>
<p><a href="https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-Function-Screenshot.jpg"><img decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-Function-Screenshot.jpg" alt="Qlik Sense Screen Showing Correl Function" width="1200" height="630" class="aligncenter size-full wp-image-1505875" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-Function-Screenshot-200x105.jpg 200w, https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-Function-Screenshot-300x158.jpg 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-Function-Screenshot-400x210.jpg 400w, https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-Function-Screenshot-600x315.jpg 600w, https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-Function-Screenshot-768x403.jpg 768w, https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-Function-Screenshot-800x420.jpg 800w, https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-Function-Screenshot-1024x538.jpg 1024w, https://www.quickintelligence.co.uk/wp-content/uploads/2023/11/Correl-Function-Screenshot.jpg 1200w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></p>
<p>The entire load script for the Correl application looks like this:</p>
<pre class="qlik-highlight-pre"><code class="qlik-highlight-codeqvs">LOAD
    'Row ' & num(RowNo(), '#,##0') as Dim,
    RowNo() as X,
    RowNo() as Y1,
    1000 - RowNo() as Y2,
    Rand() * 1000 as Y3,
    RowNo() * Rand() as Y4,
    (RowNo() * (Rand()-0.5)) + 500 as Y5,
    RowNo() + ((Rand()-0.5)*(RowNo()/1)) as Y6,
    500 + ((rand()*10)-5) as Y7,
    500 + ((rand()*10)-5) as X2
AUTOGENERATE(1000);</code></pre>
<p>And the entire application can be downloaded from Qlik Community here:<br />
<a href="https://community.qlik.com/t5/Qlik-Sense-Documents/Qlik-Sense-App-Create-Test-Data-For-Correl-Function-Using/ta-p/2139164" rel="noopener" target="_blank">https://community.qlik.com/t5/Qlik-Sense-Documents/Qlik-Sense-App-Create-Test-Data-For-Correl-Function-Using/ta-p/2139164</a></p>
<p>Hopefully that has given you some inspiration what you can do when you need to generate some test data. I would be very interested to hear of other thoughts you might have on the topic, so please do use the comments box below to let me know.</p>
<p>The post <a href="https://www.quickintelligence.co.uk/generating-test-data-in-qlik-load-scripts/">Generating Test Data In Qlik Load Scripts</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.quickintelligence.co.uk/generating-test-data-in-qlik-load-scripts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1505866</post-id>	</item>
		<item>
		<title>Back To Basics &#8211; QlikView Licence Lease</title>
		<link>https://www.quickintelligence.co.uk/qlikview-licence-lease/</link>
					<comments>https://www.quickintelligence.co.uk/qlikview-licence-lease/#comments</comments>
		
		<dc:creator><![CDATA[Steve Dark]]></dc:creator>
		<pubDate>Wed, 18 Nov 2015 15:03:22 +0000</pubDate>
				<category><![CDATA[Back To Basics]]></category>
		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=2196</guid>

					<description><![CDATA[<p>Something I see frequent questions about is how to Lease a Licence from QlikView Server to the Desktop. This is one of those things that once you know how to do it is second nature – but is in no way obvious if you don’t. Time therefore for another Back To Basics post. Overview For  [...]</p>
<p>The post <a href="https://www.quickintelligence.co.uk/qlikview-licence-lease/">Back To Basics &#8211; QlikView Licence Lease</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Something I see frequent questions about is how to Lease a Licence from QlikView Server to the Desktop.  This is one of those things that once you know how to do it is second nature &#8211; but is in no way obvious if you don&#8217;t.  Time therefore for another <a href="https://www.quickintelligence.co.uk/back-to-basics/">Back To Basics</a> post.<br />
<span id="more-2196"></span></p>
<h3>Overview</h3>
<p>For those that don&#8217;t know, if you have a QlikView Server implementation you can use Full User CALs on the server to licence a copy of QlikView Desktop in order to build applications.  This means that a user can get twice the use of their User CAL.  If you have a Full User CAL on the Server and also have a Desktop Licence for the same user you are essentially paying twice, and should review your licencing.  Desktop Licences are still required if you don&#8217;t have a server, or are using <a href="https://www.quickintelligence.co.uk/nprinting/">QlikView NPrinting</a> server (as the lease doesn&#8217;t always complete in time upon report creation).</p>
<p>Licences are leased from the QlikView Server when a document is opened in QlikView Desktop from that Server, a Full User CAL is used and Allow Licence Lease is enabled.</p>
<p>This post, lifted from our support portal, describes the process.</p>
<h3>How To Lease a Licence From QlikView Server to a copy of QlikView Desktop</h3>
<p>When you first download and install QlikView Desktop it will open up in Personal Edition.  This is a full install of QlikView Desktop, but it is limited by its licence.  In order to have full functionality on the desktop you must either apply a Desktop licence or lease a licence from a server.</p>
<p>If you have a Full CAL on a QlikView Server (via Access Point, for instance) then you most likely want to lease a licence.</p>
<p>A leased licence is managed by the server and can be used on the desktop for up to thirty days without being connected to the server.  The lease is automatically renewed each time the Desktop client is opened up when on the same network as the server.</p>
<p>In order to lease a licence;</p>
<ul>
<li>Open QlikView from Start menu or TaskBar</li>
<li>Select Open In Server from the start page</li>
<ul>
<li>This is in the bottom right in QV 11.2 SR6+</li>
<li>It appears on the left hand side before SR6</li>
<li>If the start page is not appearing select Show Start Page from the Help menu</li>
</ul>
<li>Enter address of your Access Point without the https:// in the Address box</li>
<li>Click Open >></li>
<li>Browse apps on the server and open one you have access to</li>
<li>You can now close this document</li>
</ul>
<p>Whilst you are in Personal Edition this shows in the caption bar at the top of your QlikView Desktop app.  This text is removed when a licence is successfully leased.</p>
<p>In order to lease a licence you must have a Full CAL on the Server and access to at least one app hosted on the server, and Allow Licence Lease must be ticked (in QMC under System \ Licences \ CALs \ General).</p>
<h3>What if this doesn&#8217;t work</h3>
<p>If you have followed the steps above and you are still having problems then try these troubleshooting tips from Qlik support:</p>
<p><a href="https://community.qlik.com/t5/Official-Support-Articles/Troubleshooting-QlikView-License-Lease-Issues/ta-p/1710188" rel="noopener noreferrer" target="_blank">https://community.qlik.com/t5/Official-Support-Articles/Troubleshooting-QlikView-License-Lease-Issues/ta-p/1710188</a></p>
<p>If you have any further tips, please add them in the comments at the foot of this post.</p>
<p><img decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2015/11/photodune-1525701-for-rent-sign-licences-300x225.jpg" alt="QlikView Licence Lease" width="300" height="225" class="aligncenter size-medium wp-image-2197" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2015/11/photodune-1525701-for-rent-sign-licences-300x225.jpg 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2015/11/photodune-1525701-for-rent-sign-licences-768x576.jpg 768w, https://www.quickintelligence.co.uk/wp-content/uploads/2015/11/photodune-1525701-for-rent-sign-licences.jpg 894w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>The post <a href="https://www.quickintelligence.co.uk/qlikview-licence-lease/">Back To Basics &#8211; QlikView Licence Lease</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.quickintelligence.co.uk/qlikview-licence-lease/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2196</post-id>	</item>
		<item>
		<title>How To Remove Orphaned QlikView Apps</title>
		<link>https://www.quickintelligence.co.uk/remove-orphaned-qlikview-apps/</link>
					<comments>https://www.quickintelligence.co.uk/remove-orphaned-qlikview-apps/#comments</comments>
		
		<dc:creator><![CDATA[Steve Dark]]></dc:creator>
		<pubDate>Mon, 26 Jan 2015 08:27:53 +0000</pubDate>
				<category><![CDATA[Back To Basics]]></category>
		<category><![CDATA[QlikView Tutorial]]></category>
		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=2070</guid>

					<description><![CDATA[<p>Usually when you remove an app from a published folder it removes itself from the QMC. Sometimes however it remains, in upper case, at the end of the list of apps. This article advises why this happens and how to remove these rogue entries. What Causes Orphaned Records? Applications that show in upper case at  [...]</p>
<p>The post <a href="https://www.quickintelligence.co.uk/remove-orphaned-qlikview-apps/">How To Remove Orphaned QlikView Apps</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Usually when you remove an app from a published folder it removes itself from the QMC.  Sometimes however it remains, in upper case, at the end of the list of apps.  This article advises why this happens and how to remove these rogue entries.<br />
<span id="more-2070"></span></p>
<h2>What Causes Orphaned Records?</h2>
<p>Applications that show in upper case at the bottom of the list of apps on the Documents tab in QlikView Server are those that have been deleted, but still have hooks back into the QMC.  Typically this is either a reload task or some Document CALs.  If it&#8217;s the former then this task will run and fail on it&#8217;s old schedule &#8211; sending annoying failure mails.  If it&#8217;s the latter then there are one or more CALs which can not be used on this app, or be re-assigned to others, wasting money.</p>
<p><img decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2015/01/Orphaned-QlikView-Apps.png" alt="Orphaned QlikView Apps" width="286" height="177" class="aligncenter size-full wp-image-2071" /></p>
<h2>How Do I Remove Them?</h2>
<p>In order to remove the orphaned records you simply need to remove the CALs or reload schedule.  Unfortunately this is not always as easy as it sounds.  It&#8217;s good practice to always remove reload tasks and document CALs before you delete or rename an app.  However, sometimes this doesn&#8217;t happen.</p>
<p>Without the documents being in the correct location it is not possible to get to the Reload tab or the Document CALs tab, this prevents the removal of the CALs or tasks after deletion.  If you have just deleted the file then you can simply restore it, then remove anything associated with it and then delete it again.  This will put you back where you want to be.</p>
<p>If you can&#8217;t just restore the file, but you know where it used to exist, then you can create a new QlikView app with exactly the same name &#8211; this will put the app back in the correct place and allow you to reach the configuration pages.  There doesn&#8217;t need to be anything in the file, you can simply right click in the folder and select New / QlikView Document and create the file.  You will need to open it in QlikView and save it back again before it appears in the QMC &#8211; without opening and saving it is simply a zero byte file that the QMC doesn&#8217;t recognise.</p>
<h2>How Do I Create A File If I Don&#8217;t Know Where It Used To Be?</h2>
<p>If the prior location of the file has been lost then you will need to find out where it used to be on the server.  If you have log files from when the file was previously reloaded or accessed through Access Point then these should point you to the location you need to recreate the file.  A bit more detective work is required if not.</p>
<p>Fortunately there is an excellent tool, called the QlikView Server CAL Manager, by <a href="https://community.qlik.com/people/dvasseur" title="David Vasseur" target="_blank" rel="noopener noreferrer">David Vasseur</a> that can help.  Full details of this product can be found in the Qlik Community thread here:</p>
<p>[Thread Removed].</p>
<p>Among the various options in this tool (including allowing the clearing down of un-used Document CALs) is the ability to create an XML file of all documents hosted in the QMC &#8211; including orphans with CALs attached.  This could direct you to knowing where to recreate the files.</p>
<p>Things get a bit trickier if it is the Mounted Folder has been removed, but if you can find what the folder was called (either from Access Point Logs or the CAL Manager) then that mount can be recreated and the missing documents put within it.</p>
<h2>Conclusion</h2>
<p>Hopefully if you have been blighted with orphaned QlikView apps the advice above will allow you to remove them.  If not please feel free to post specifics in the comments below and someone (myself included) may be able to assist.</p>
<p>Thanks to <a href="https://community.qlik.com/people/bill.markham" title="Bill Markham" target="_blank" rel="noopener noreferrer">Bill Markham</a> who posed the question about removing orphans to me, and prompted the writing of this piece.</p>
<p>The post <a href="https://www.quickintelligence.co.uk/remove-orphaned-qlikview-apps/">How To Remove Orphaned QlikView Apps</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.quickintelligence.co.uk/remove-orphaned-qlikview-apps/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2070</post-id>	</item>
		<item>
		<title>Two Tips to Improve Your Qlik Life</title>
		<link>https://www.quickintelligence.co.uk/two-tips-improve-qlik-life/</link>
					<comments>https://www.quickintelligence.co.uk/two-tips-improve-qlik-life/#comments</comments>
		
		<dc:creator><![CDATA[Steve Dark]]></dc:creator>
		<pubDate>Sun, 30 Nov 2014 22:51:41 +0000</pubDate>
				<category><![CDATA[Back To Basics]]></category>
		<category><![CDATA[QlikView Tutorial]]></category>
		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=2038</guid>

					<description><![CDATA[<p>These two little tips are not going to help you solve any major issues in your applications, or even directly improve the end application. They will however save you a chunk of time each time you use them. In fact, if you were not previously aware of them, your Qlik Life is about to change  [...]</p>
<p>The post <a href="https://www.quickintelligence.co.uk/two-tips-improve-qlik-life/">Two Tips to Improve Your Qlik Life</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>These two little tips are not going to help you solve any major issues in your applications, or even directly improve the end application.  They will however save you a chunk of time each time you use them.  In fact, if you were not previously aware of them, your Qlik Life is about to change for the better.<br />
<span id="more-2038"></span></p>
<h2>Don&#8217;t Remove Dimensions, Over Type</h2>
<p>I&#8217;m sure you&#8217;ve been in the situation where you have set your Pivot Chart up beautifully.  The alignment is right, pivot dimensions are correct, format expressions on the text &#8211; all perfect.  You then realise that you made one slight slip when first setting up the chart, and you picked the wrong one of two similar dimensions.  No problems, you think, just remove the incorrect dimension and then add in the right one.  A couple of double clicks later and all is fixed.  Except&#8230;</p>
<p>What you will find is that all the effort that has gone in to alignment and setting of other properties has gone.  Worst case scenario the dimensions are now in a different order and all your pivoting needs to be re-done.  Five minutes later you are back where you were before needing to make the switch.</p>
<p>There is however a better way.</p>
<p>If you click the Edit button that sits beneath the list of Dimensions you can simply type in the new dimension.</p>
<p><img decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/11/EditYourDimensions.jpg" alt="Edit Your QlikView Dimensions" width="610" height="199" class="aligncenter size-full wp-image-2039" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2014/11/EditYourDimensions-300x98.jpg 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2014/11/EditYourDimensions.jpg 610w" sizes="(max-width: 610px) 100vw, 610px" /></p>
<p>This button is generally used for editing Calculated Dimensions, but simply typing a dimension name is also allowed.  You do need to be careful not to turn this into a calculated dimension with a single field (although it will work, my assumption would be performance could be hit a bit).  Type in the field name, resisting the temptation to start with an equals sign or to add square brackets on fields with spaces.  The latter feels a bit alien &#8211; and breaks both auto-complete and syntax completion &#8211; but it is the best way.</p>
<p>When the dimension is changed like this all settings relating to that dimension, such as layout properties, are maintained.  This technique works the same for any chart type.  Unfortunately it will not help you with Table Boxes.  I will pretty much always use this for swapping dimensions as it also has the advantage that you don&#8217;t have to pick from the list on the left.</p>
<h2>Copy and Paste Expressions</h2>
<p>When thinking about the way that over-typing dimension names, and how it retains formatting, it reminded me of another neat feature that not many people seem to be aware of.</p>
<p>If you right click on an expression name a small context menu appears.  On this menu you will see a Copy option.</p>
<p><img decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/11/Copy-Expression.jpg" alt="Copy QlikView Expression" width="601" height="219" class="aligncenter size-full wp-image-2040" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2014/11/Copy-Expression-300x109.jpg 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2014/11/Copy-Expression.jpg 601w" sizes="(max-width: 601px) 100vw, 601px" /></p>
<p>Now, obviously you could click into the Expression Definition, do a Ctrl+A to copy the expression text, create a new expression and then paste in the code &#8211; this makes sense as you inevitably need to tweak the code.  However, when you Copy and then right click in the space under the Expression list and click Paste something really neat happens.  Not only do you get a copy of the expression code, the new column that is created has exactly the same properties as the source expression.  This includes column width, alignment, number format etc..  This saves you having to set the formats and alignment on each column and it is also the simplest way of ensuring equal column widths &#8211; as there is no way to highlight multiple columns and drag them to the same size, as in Excel.</p>
<h2>Conclusion</h2>
<p>I hope that these two techniques are as useful to you as they have proven to be to clients that I have demonstrated them to.</p>
<p>If you have any quick tips of your own that you would like to share please feel free to do so in the comments box below.</p>
<p>The post <a href="https://www.quickintelligence.co.uk/two-tips-improve-qlik-life/">Two Tips to Improve Your Qlik Life</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.quickintelligence.co.uk/two-tips-improve-qlik-life/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2038</post-id>	</item>
		<item>
		<title>How To Use Preceding Load In QlikView</title>
		<link>https://www.quickintelligence.co.uk/preceding-load-qlikview/</link>
					<comments>https://www.quickintelligence.co.uk/preceding-load-qlikview/#comments</comments>
		
		<dc:creator><![CDATA[Steve Dark]]></dc:creator>
		<pubDate>Wed, 23 Jul 2014 21:12:00 +0000</pubDate>
				<category><![CDATA[Back To Basics]]></category>
		<category><![CDATA[QlikView Tutorial]]></category>
		<category><![CDATA[popular]]></category>
		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1909</guid>

					<description><![CDATA[<p>Whilst running a recent training course I was surprised to find some reasonably experienced delegates were not aware of layering multiple Preceding Loads. Time, therefore, for another Back To Basics post. Introduction This series of posts looks at some of the features rarely blogged about as they are so second nature to many experienced QlikView  [...]</p>
<p>The post <a href="https://www.quickintelligence.co.uk/preceding-load-qlikview/">How To Use Preceding Load In QlikView</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Whilst running a recent <a href="https://www.quickintelligence.co.uk/training/" title="QlikView Training" target="_blank">training course</a> I was surprised to find some reasonably experienced delegates were not aware of layering multiple Preceding Loads. Time, therefore, for another <a href="https://www.quickintelligence.co.uk/back-to-basics/" title="Back To Basics">Back To Basics</a> post.<br />
<span id="more-1909"></span></p>
<h2>Introduction</h2>
<p>This series of posts looks at some of the features rarely blogged about as they are so second nature to many experienced QlikView bloggers. The sort of features I will use on a daily basis without thinking about it. These techniques are useful to revisit though and for anyone who has not come across these features before they are the things you really should become aware of.  Preceding Loads deserve to be added to the list of features covered here.</p>
<h2>What Is A Preceding Load?</h2>
<p>As the name suggests, the preceding load happens in front of another load. You have probably used one already &#8211; even if you were not aware of it. When loading from an ODBC or OLEDB data source you have a SQL SELECT statement and the wizard will (optionally) add a LOAD section ahead of the SELECT. This is a basic preceding load. I would recommend that you always use one of these ahead of a database load &#8211; as it opens up a whole range of syntax that is not available in the SQL statement. So, if that is a simple preceding load, what can you do with a more complex one?</p>
<h2>Potential Confusion</h2>
<p>Before we get stuck into preceding loads fully it is important to understand the order things happen in your load script. In the main, script is executed from top to bottom, then let to right along the tabs (the tabs have no functional relevance are only there to tidy code). Loops and subroutines will alter this execution path, by design, but apart from that this statement holds true. The gotcha however is with LOAD blocks, which can be stacked together and execute from the bottom up. Picture the simple SQL preceding load:</p>
<p><img decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/DBPreceding.jpg" alt="Preceding load on a database call" width="583" height="156" class="aligncenter size-full wp-image-1911" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/DBPreceding-300x80.jpg 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/DBPreceding.jpg 583w" sizes="(max-width: 583px) 100vw, 583px" /></p>
<p>The SQL part is executed and returned first and is then parsed by the LOAD statement above. This idea of loading from the bottom up holds true as we get into multiple layers of preceding loads, and it is important to keep in mind as we continue.</p>
<h2>Why Use A Preceding Load?</h2>
<p>Put simply, a preceding load allows you to use values derived in one part of the load in the one above it.  To give a simple example, let&#8217;s say we are loading two dates from a text file and we want to know how far apart those days are. We need to convert those dates from the text values to numeric ones we can do arithmetic on and only then can we do the difference calculation. Without a preceding load the code will look like this:</p>
<p><img decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/NoPreceding.jpg" alt="A date interval with no preceding load" width="583" height="127" class="aligncenter size-full wp-image-1912" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/NoPreceding-300x65.jpg 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/NoPreceding.jpg 583w" sizes="(max-width: 583px) 100vw, 583px" /></p>
<p>You will notice that there is code duplication as we convert both of the dates twice. Whilst I have been very reliably informed (by <a href="https://community.qlik.com/people/hic" title="Henric Cronström" target="_blank">Henric Cronström</a>) that QlikView with it&#8217;s clever caching will not need to calculate the values twice, duplication is a bad thing from a code maintainability point of view.</p>
<p>With a simple preceding load we can remove that duplication and make the code cleaner and more readable. It will then look like this:</p>
<p><img decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/SimplePreceding.jpg" alt="A simple preceding load cleans the code" width="583" height="166" class="aligncenter size-full wp-image-1913" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/SimplePreceding-300x85.jpg 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/SimplePreceding.jpg 583w" sizes="(max-width: 583px) 100vw, 583px" /></p>
<p>You will note that the fields we created in the lower part of the load are then used in the one above.</p>
<p>Also of note here is the asterisk in the preceding load. This is required to pull the fields up from the load below up to what is actually loaded. There are two potential problems you may face here. First if you omit the * then the two date fields will not be in the final data model. The other potential problem is that you can duplicate a field by having a field name used in the succeeding load that is pulled through with a * that is then used again in the preceding load. These can be hard to spot and the error message from QlikView (field names must be unique) does not always point you to the right part of the load script &#8211; so be careful.</p>
<p>Generally I would advise against the use of an asterisk (particularly when pulling fields from a database) but in preceding loads they are most useful. Be aware you can also pull fields up explicitly by listing them if you want to take only some fields from your lower LOAD to the preceding one.</p>
<h2>Onwards And Upwards</h2>
<p>And you don&#8217;t need to stop there. If you wanted to have another value calculated on fields derived in your preceding load you can add a preceding load on your preceding load. To take the example of our date interval we could then add another field based on whether a threshold has been breached or not.</p>
<p>Simply stack another load on top of the one before, like this:</p>
<p><img decoding="async" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/TheNextLevel.jpg" alt="Preceding layers can be stacked on top of each other" width="583" height="222" class="aligncenter size-full wp-image-1914" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/TheNextLevel-300x114.jpg 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2014/07/TheNextLevel.jpg 583w" sizes="(max-width: 583px) 100vw, 583px" /></p>
<p>There is no limit to the number of levels of load you can have. And whilst it may sound like you are creating a potential confusion, like a BI version of Inception, preceding loads tend to help you to clean and simplify script. You can have expressions that use fields from any of the levels below to create new values.</p>
<h2>Advanced Features</h2>
<p>Whilst it doesn&#8217;t really belong in a back to basics post, I should mention that there are functions you can use in your preceding loads that you may previously have only associated with the first level of load. WHERE, WHILE and GROUP BY are all permissible using values from the load before. You should probably not use these features often, but it is with knowing they are there.</p>
<h2>Conclusion</h2>
<p>Having preceding loads in your kit bag of QlikView load script code allows you to build complex expressions, whilst keeping your code simple by breaking things up into bite sized chunks. Duplication can be removed and maintainability can be improved. Not bad for a simple little technique.</p>
<p>This is the sixth post in the <a href="https://www.quickintelligence.co.uk/back-to-basics/" title="Back To Basics">Back To Basics</a> series.  Look out for the next post in the series soon.  If you have a suggestion on a topic please let me know in the comments field below.</p>
<p>The post <a href="https://www.quickintelligence.co.uk/preceding-load-qlikview/">How To Use Preceding Load In QlikView</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.quickintelligence.co.uk/preceding-load-qlikview/feed/</wfw:commentRss>
			<slash:comments>41</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1909</post-id>	</item>
		<item>
		<title>Move Items Within A QlikView Chart Object</title>
		<link>https://www.quickintelligence.co.uk/move-items-in-qlikview-chart/</link>
					<comments>https://www.quickintelligence.co.uk/move-items-in-qlikview-chart/#comments</comments>
		
		<dc:creator><![CDATA[Steve Dark]]></dc:creator>
		<pubDate>Thu, 06 Feb 2014 22:31:02 +0000</pubDate>
				<category><![CDATA[Back To Basics]]></category>
		<category><![CDATA[QlikView Tutorial]]></category>
		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1597</guid>

					<description><![CDATA[<p>This series of posts is designed to capture the things that I do all the time when building QlikView apps that may not be so obvious to others.  This quick tip certainly falls into this camp.  If you have ever wanted to move the legend or a label in a chart but have been unable  [...]</p>
<p>The post <a href="https://www.quickintelligence.co.uk/move-items-in-qlikview-chart/">Move Items Within A QlikView Chart Object</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This series of posts is designed to capture the things that I do all the time when building QlikView apps that may not be so obvious to others.  This quick tip certainly falls into this camp.  If you have ever wanted to move the legend or a label in a chart but have been unable to do so &#8211; read on.<span id="more-1597"></span>This is something that I was shown how to do way back when I went on my first QlikView training course.  Before the course I had dabbled a bit with QlikView with a bit of help from the manual and QlikCommunity.  It was when I was shown that you could move object around within a chart object that I realised I could solve some of the issues I had with chart layouts on the documents I had been playing with.  Thanks to Jonas Valleskog for that enlightenment.</p>
<p>Since then, I had assumed that this was something everyone knew from their initial QlikView training.  However, on numerous occasions I have used this functionality in the presence of other reasonably experienced QlikView developers and been surprised to find they were unaware.</p>
<p>So&#8230; to try and put an end to this here is the simple step you need to take to move objects around inside a chart.</p>
<p>Simply select the chart you want to re-arrange and hold down <strong>Shift</strong> and <strong>Control</strong> at the same time.  You will see all the items within the chart get a red border to them:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-1598" alt="Move Objects Inside A Chart" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/02/MoveObjectsInsideAChart.png" width="366" height="205" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2014/02/MoveObjectsInsideAChart-300x168.png 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2014/02/MoveObjectsInsideAChart.png 366w" sizes="(max-width: 366px) 100vw, 366px" /></p>
<p>You can then drag the individual items around inside the chart.  This include the position of the chart itself, the legend and any text in chart items that you have added.  I should warn here than things can sometimes be a bit temperamental &#8211;  particularly with objects snapping to the side of the object when you don&#8217;t want them to &#8211; but with a bit of patience you can usually arrange things how you want.</p>
<p>I don&#8217;t expect masses of &#8216;wow thanks for sharing&#8217; messages for this post (as I got for <a title="Hidden QlikView Features" href="https://www.quickintelligence.co.uk/hidden-qlikview-features/">Hidden QlikView Features</a>) but if you have been stuck not being able to move your Text In Chart then you will know how useful this tip is.</p>
<p>Just one of those features that is not entirely intuitive, like holding the <strong>Alt</strong> key down to then drag and move a chart or list box object that doesn&#8217;t have a caption&#8230;</p>
<p>This post is part five in the <a title="Back To Basics" href="https://www.quickintelligence.co.uk/back-to-basics/">Back-To-Basics</a> series of posts.</p>
<p>The post <a href="https://www.quickintelligence.co.uk/move-items-in-qlikview-chart/">Move Items Within A QlikView Chart Object</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.quickintelligence.co.uk/move-items-in-qlikview-chart/feed/</wfw:commentRss>
			<slash:comments>21</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1597</post-id>	</item>
		<item>
		<title>Keep QlikView Simple</title>
		<link>https://www.quickintelligence.co.uk/keep-qlikview-simple/</link>
					<comments>https://www.quickintelligence.co.uk/keep-qlikview-simple/#comments</comments>
		
		<dc:creator><![CDATA[Steve Dark]]></dc:creator>
		<pubDate>Fri, 03 Jan 2014 15:24:36 +0000</pubDate>
				<category><![CDATA[Back To Basics]]></category>
		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1556</guid>

					<description><![CDATA[<p>In part four of my Back to Basics series I am looking at keeping things simple.  It is said a picture tells a thousand words – but often with a dashboard brevity is key.  Perhaps you need only say ‘Raise Prices’ or ‘Something’s Broken’.  How should you aim to achieve this in your own dashboards? At  [...]</p>
<p>The post <a href="https://www.quickintelligence.co.uk/keep-qlikview-simple/">Keep QlikView Simple</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In part four of my <a title="Back To QlikView Basics" href="https://www.quickintelligence.co.uk/back-to-basics/">Back to Basics</a> series I am looking at keeping things simple.  It is said a picture tells a thousand words &#8211; but often with a dashboard brevity is key.  Perhaps you need only say &#8216;Raise Prices&#8217; or &#8216;Something&#8217;s Broken&#8217;.  How should you aim to achieve this in your own dashboards?</p>
<p><span id="more-1556"></span></p>
<p>At the end of last year I uploaded the Quick Intelligence <strong><a title="Christmas 2013" href="https://www.quickintelligence.co.uk/happy-christmas-2013/" target="_blank">Christmas Card</a></strong>, which included an image of a dashboard with a gauge chart and a pie chart (you can view the card <a title="Christmas Card" href="https://www.quickintelligence.co.uk/happy-christmas-2013/" target="_blank">here</a>).  Not something I would look to do in a production document and something that<strong> <a title="Gysbert Wassenaar" href="https://nl.linkedin.com/in/gysbertwassenaar" target="_blank">Gysbert Wassenaar</a> </strong>quite rightly picked me up on.  He pointed me towards Stephen Few&#8217;s<strong> <a title="Information Dashboard Design" href="https://books.google.co.uk/books/about/Information_Dashboard_Design.html?id=qWER8Im-WYIC&amp;redir_esc=y" target="_blank">Information Dashboard Design</a> </strong>&#8211; a text I am familiar with and highly recommend.  In fact when I first read the book it caused me to want to go back and revisit some of my previous work to clean it up and make it more clear and concise.  This really is the key to the effective presentation of data.</p>
<p>I have already blogged and uploaded a video tutorial on how you can <a title="QlikView Design" href="https://www.quickintelligence.co.uk/qlikview-design/"><strong>clean up your charts</strong></a>, which covers chart junk in the form of caption icons, unnecessary shading and colours and a general attention to detail.  Stephen Redmond has also recently blogged on <strong><a title="Stephen Redmond KPI" href="https://www.qliktips.com/2013/12/key-performance-indicator-approaches.html" target="_blank">KPI Approaches</a></strong>, advising alternatives to the gauge chart.  I will not attempt to retread either of these paths here, rather suggest the simplest tool for presenting data in QlikView &#8211; the humble Text Box.</p>
<p>As I mentioned in my post about <a title="QlikView Caption Contest" href="https://www.quickintelligence.co.uk/qlikview-caption-contest/" target="_blank"><b>caption bars</b></a> anywhere you see an ellipses (&#8230;) in QlikView you can insert an expression.  This is true of a text box.  We can therefore make text boxes a more efficient representation of data.</p>
<p>Take my offending gauge:</p>
<p style="text-align: center;"><img decoding="async" class="size-full wp-image-1557 aligncenter" alt="Offending Gauge" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/01/Gauge.png" width="173" height="189" /></p>
<p>This can be adequately be replaced by the following text boxes:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-1558" alt="Plain Text" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/01/GreyTextBox.png" width="125" height="60" /></p>
<p>The eagle eyed among you have probably noticed that I needed to put two text boxes in here, as you can not change size, font or style in a single text box.  The background and title are one text box (with alignment top and 6pt text margin) and the percentage is a transparent text box on top.  The expression in our percentage text box is simply: <strong>=num(1 &#8211; vNice, &#8216;#,##0.0%&#8217;) </strong>&#8211; the bulk of the calculation being in a variable, and the <strong>num</strong> function doing the formatting of the number to be a percentage to 1 dp.</p>
<p>We can encode further information into the text box by changing the colour of the background based on the value, mimicking the segment of the gauge the needle falls into:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-1559" alt="Orange Text Box" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/01/OrangeTextBox.png" width="126" height="59" /></p>
<p>This colour can be achieved by setting a calculated colour on the text box with the legend  [1].  The code for which is:</p>
<p><strong>=if(vNice &gt; 0.6, $(vGreen), if(vNice &gt; 0.2, $(vOrange), $(vRed)))</strong></p>
<p>Note the use of variables for storing defaults for colours as well as the expressions &#8211; this makes code re-use much easier.  I will have to do a future post on the use of variables.</p>
<p>To make the text box even more useful it (or in this case, they) should also have actions attached that allow the user to drill into the detail about that number or fact.  Perhaps in this case a breakdown of which countries have the highest percentage of  naughty children.  This could be achieved by changing the tab that the user was on or using a show / hide variable on a chart object (see my post on <a title="QlikView Buttons – When, Why and How" href="https://www.quickintelligence.co.uk/qlikview-buttons/" target="_blank"><strong>Buttons</strong> </a>for more information on this).</p>
<p>I used this approach to, I believe, good effect when asked to produce a wall board display of QlikView system status for a customer (who has kindly allowed me to reproduce the dashboard here).  Feeds are brought in from different apps, including <a href="https://community.qlik.com/docs/DOC-5281" title="QlikView CAL Manager" target="_blank">CAL usage</a>, the file system and QlikView Distribution logs and aggregated onto a single screen.  The app also fires alert emails when error conditions are encountered:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-1560" alt="QlikView Status Dashboard" src="https://www.quickintelligence.co.uk/wp-content/uploads/2014/01/StatusDashboard.png" width="630" height="253" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2014/01/StatusDashboard-300x120.png 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2014/01/StatusDashboard.png 630w" sizes="(max-width: 630px) 100vw, 630px" /></p>
<p>Most of the objects on this page are text boxes, the exception being a simple table in the top right which has it&#8217;s borders and captions removed.  The three main numbers select that type of issue and then go to a tab giving the breakdown of those items.  There are also links to other QlikView apps that contain more information that could be useful in resolving issues.  There are also show conditions on the table and the links, so these don&#8217;t display on the wall board machine making it fit on the low-resolution panel on the wall and removing links that can not actually be clicked.</p>
<p>To get back to to the point of this article, think carefully about what object you use to convey information.  Often the most simple approach is the one that will be the most effective.  Keep things simple and your QlikView documents will be all the better for it.</p>
<p>&nbsp;</p>
<p>[1] <em>I should also point out that <strong><a title="The QlikFix" href="https://www.qlikfix.com/" target="_blank">Barry Harmsen</a></strong> mentioned that the level of naughtiness in my dashboard was far too high to still be in the amber segment and I should perhaps be less tolerant of such behaviour.  All I was doing was trying to create an amusing card!</em></p>
<p>&nbsp;</p>
<p>The post <a href="https://www.quickintelligence.co.uk/keep-qlikview-simple/">Keep QlikView Simple</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.quickintelligence.co.uk/keep-qlikview-simple/feed/</wfw:commentRss>
			<slash:comments>21</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1556</post-id>	</item>
		<item>
		<title>Introduction to QlikView QVD Files</title>
		<link>https://www.quickintelligence.co.uk/qlikview-qvd-files/</link>
					<comments>https://www.quickintelligence.co.uk/qlikview-qvd-files/#comments</comments>
		
		<dc:creator><![CDATA[Steve Dark]]></dc:creator>
		<pubDate>Fri, 15 Nov 2013 14:15:38 +0000</pubDate>
				<category><![CDATA[Back To Basics]]></category>
		<category><![CDATA[popular]]></category>
		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1523</guid>

					<description><![CDATA[<p>In part three of my Back To Basics series of QlikView blog posts I look at QVDs. What they are, how to create them and why you should be using them in your QlikView project. QlikView QVDs play a crucial part in the majority of QlikView implementations. As such I have blogged about their use  [...]</p>
<p>The post <a href="https://www.quickintelligence.co.uk/qlikview-qvd-files/">Introduction to QlikView QVD Files</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In part three of my <a href="https://www.quickintelligence.co.uk/back-to-basics/">Back To Basics series</a> of QlikView blog posts I look at QVDs. What they are, how to create them and why you should be using them in your QlikView project.</p>
<p><span id="more-1523"></span></p>
<p>QlikView QVDs play a crucial part in the majority of QlikView implementations. As such I have blogged about their use many times previously; such as in this post on <strong><a title="QlikView Incremental Load" href="https://www.quickintelligence.co.uk/qlikview-incremental-load/">Incremental Loads</a></strong> and this one on <strong><a title="QlikView Optimised QVD Loads" href="https://www.quickintelligence.co.uk/qlikview-optimised-qvd-loads/">Optimised Loads</a></strong>. Now that I am going Back To Basics in this series of posts I felt it was a good point to go back to first principles with QVDs.</p>
<h2>What Is A QVD?</h2>
<p>At a basic level a QVD is a flat data file with the extension .qvd. It can store a single table of data (is. each row shares the same column list) and is typically created in the load script of a QVW file. The structure of the file is essentially an XML format, with various bits of header information stored at the top of the file and the rest of the data beneath. One of the beauties of a QVD file is that it is compressed on creation using the same algorithms as QlikView uses to store data in memory &#8211; so the files can be incredibly small for the amount of data they contain.  Loading from QVD back into memory is blindingly fast as the format of the file mirrors how QlikView addresses data in RAM.</p>
<h2>Why Should You Use QVDs?</h2>
<p>One of the points that is often noted when pitching QlikView is that it does not need a data warehouse or predefined data cube to work off. This is completely true, but the requirement to have a logical data layer often remains. This is particularly true if the data being collected is coming from multiple systems or is being distributed via multiple QlikView applications. QVDs can fulfil this requirement admirably. QVDs are also essential when you want to adopt an incremental load strategy.</p>
<p>Personally I would go as far as saying your implementations should always be built on QVDs &#8211; except perhaps where the data source is a simple Excel spreadsheet that is stored locally. There are many reasons I would suggest this, some of these are:</p>
<ul>
<li>Decoupling data extract from data presentation</li>
<li>Ability to do parallel data extracts</li>
<li>Easier unit testing of parts of the load process</li>
<li>Incremental loads</li>
<li>Sharing of extracted data between presentation apps</li>
<li>Ability to scale the solution when data volumes grow</li>
<li>Ability to delegate responsibility for different parts of the data load to different teams</li>
</ul>
<p>The question you should be asking when designing your data load strategy is not why you should be using QVDs &#8211; but rather are there any reasons why you shouldn&#8217;t be using them (the reasons here are very few).</p>
<h2>How Do I Create A QVD?</h2>
<p>Typically QVDs are created during the execution of your QlikView load script. A <strong>STORE</strong> statement writes the current contents of a single table in your data model to a file on the disk. The syntax for this is:</p>
<p><strong>STORE TableName INTO ..\Data\FileName.qvd (QVD);</strong></p>
<p>Note that the STORE command can also be used to write data into a comma or tab delimited file &#8211; but that is a topic for another blog post.</p>
<p>QVDs can be created during the execution of any QlikView load script, but best practice is to have separate applications which deal solely with the creation of QVD files. This &#8220;extraction layer&#8221; then handles all interaction with source databases. Depending on the size and complexity of the data being loaded I may create one app for each table being extracted or a single app may create all QVDs for the solution (or anything else  in between). What is important though is that the front end can be reloaded quickly from locally stored data files. This ability to refresh the presentation layer quickly can massively speed up development.</p>
<h2>How Do I Use My QVDs?</h2>
<p>Once you have created a data layer consisting of a number of QVDs you simply load from each QVD file in the same way you would a CSV or Excel file. The syntax is:</p>
<p><strong>TableName:</strong><br />
<strong>LOAD</strong><br />
<strong> FieldList</strong><br />
<strong>FROM ..\Data\FileName.qvd (qvd);</strong></p>
<p>Note that where with CSV or Excel files the load statement contains a chunk of information about file formats this is not required with a QVD load. You can also use the wizard in the load script by clicking the File button and locating the QVD in the folder browser.</p>
<p>When loading from a QVD you can apply a number of transformations, such as renaming columns, excluding rows and adding derived columns. Be aware though that many of these transformations will cause your QVD load to be non-optimised (which will make the load up to 100 times slower) please see this blog post for more information: <strong><a title="QlikView Optimised QVD Loads" href="https://www.quickintelligence.co.uk/qlikview-optimised-qvd-loads/">QlikView Optimised Loads</a></strong>.</p>
<p>By loading from multiple QVD&#8217;s into a single application you can build up your associative data model. This could involve some data from QVDs (perhaps originally from different data sources) and maybe some small lookup type data values from yet another source.</p>
<p>As well as being a very quick way of loading data into QlikView apps QVDs can also be useful for archive &#8211; due to the excellent compression which is used in their creation. You could, for example, store dated copies of a data set into QVDs; your front end would then typically work off the latest version, but it would be possible to point it to an archive version of the data if required.</p>
<h2>Conclusions</h2>
<p><img decoding="async" class="alignleft size-medium wp-image-1527" alt="QVD Files" src="https://www.quickintelligence.co.uk/wp-content/uploads/2013/11/MyQVDs3-300x223.jpg" width="300" height="223" />QVD&#8217;s are QlikView&#8217;s proprietary way of staging and storing data. They can be used to provide a logical data tier in your solution and in some cases could remove the need for a data warehouse. Using QVDs you can share data between multiple applications without having to keep going back to the source data, you can also chunk up the data load process into manageable steps.</p>
<p>If you are presently using QlikView but not using QVDs then I strongly recommend that you consider the advantages of doing so.</p>
<p>The post <a href="https://www.quickintelligence.co.uk/qlikview-qvd-files/">Introduction to QlikView QVD Files</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.quickintelligence.co.uk/qlikview-qvd-files/feed/</wfw:commentRss>
			<slash:comments>74</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1523</post-id>	</item>
		<item>
		<title>How To View QlikView Load Performance</title>
		<link>https://www.quickintelligence.co.uk/qlikview-load-performance/</link>
					<comments>https://www.quickintelligence.co.uk/qlikview-load-performance/#comments</comments>
		
		<dc:creator><![CDATA[Steve Dark]]></dc:creator>
		<pubDate>Thu, 03 Oct 2013 16:24:10 +0000</pubDate>
				<category><![CDATA[Back To Basics]]></category>
		<category><![CDATA[Load Script]]></category>
		<category><![CDATA[QlikView Tutorial]]></category>
		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1493</guid>

					<description><![CDATA[<p>This is the second part in our Back To Basics series of posts.  This post looks at a simple way to keep track of how long a QlikView load takes and how much it is doing. The Goal This tip will only take a minute or two to implement, but will give you and your  [...]</p>
<p>The post <a href="https://www.quickintelligence.co.uk/qlikview-load-performance/">How To View QlikView Load Performance</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This is the second part in our Back To Basics series of posts.  This post looks at a simple way to keep track of how long a QlikView load takes and how much it is doing.<br />
<span id="more-1493"></span></p>
<h2>The Goal</h2>
<p>This tip will only take a minute or two to implement, but will give you and your users an immediate visibility of vital information about your document. When it last refreshed, how long it took and how many rules of data were pulled in. The end result will look like this:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-1494" alt="QlikView Load Stats" src="https://www.quickintelligence.co.uk/wp-content/uploads/2013/09/QVLoadStats.png" width="221" height="119" /></p>
<h2>Setting Up</h2>
<p>To achieve this you will need to set up some variables at the start of your code, to capture the time and to initialise the row counter:</p>
<p><strong>let vLastLoadStart = now(); let vNoOfRows = 0;</strong></p>
<p>You can also capture some other information here. Typically I will set a version number, like this:</p>
<p><strong>let vVersionNumber = 1.03;</strong></p>
<p>Other information can be captured regarding the load here also, such as the machine name and user account used to run the load. Typically I will then set various environment variables after that; such as date formats, colour values and environment variables (such as show/hide states).</p>
<p>At this point I will then tend to our in another tab &#8211; to start the load proper.</p>
<h2>Keeping Count</h2>
<p>To get a row count you will need to add the number of rows in each table to your counter. The code for this is simply:</p>
<p><strong>let vNoOfRows = vNoOfRows + Alt(NoOfRows(&#8216;TableName&#8217;), 0);</strong></p>
<p>The <strong>Alt</strong> statement here ensures your counter is not obliterated if a single table doesn&#8217;t load. If you have resident loads or lookup tables in your load script think about whether you want to include these in your count &#8211; there&#8217;s no right or wrong just as long as you are aware of what it is you are taking.</p>
<p>The other bit of information you need to show the stats that we are after is when the load completed. I will typically put this on an End tab before an Exit Script statement (I will cover the reasons for this elsewhere). The code for this reads:</p>
<p><strong>let vLastLoadEnd = now();</strong></p>
<h2>Displaying The Output</h2>
<p>The output of this information is done using one of the most n useful and flexible objects QlikView has to offer: the Text Box. Simply place a text box on the front page of your app with the following code in it:</p>
<p><strong>=&#8217;Last load date: &#8216; &amp; date(vLastLoadStart, &#8216;DD MMM YYYY hh:mm:ss&#8217;) &amp;<br />
</strong><strong>&#8216;</strong> <strong> Last load duration: &#8216; &amp; date(vLastLoadEnd &#8211; vLastLoadStart, &#8216;hh:mm:ss&#8217;) &amp;<br />
&#8216;</strong> <strong> No of rows: &#8216; &amp; num(vNoOfRows, &#8216;#,##0&#8217;) &amp;<br />
&#8216;</strong> <strong> Version no: &#8216; &amp; vVersionNumber</strong></p>
<p>Typically I will put this at the bottom left corner in a small font, with a grey colour and transparent background. Attention does not need to be drawn to this information &#8211; but it is good to be there. If you want to copy and paste a ready made text area you will find them on some of the <a title="Steve Dark Shared QlikViews" href="https://community.qlikview.com/people/stevedark/content?filterID=contentstatus[published]~objecttype~objecttype[document]" target="_blank"><strong>shared QlikViews</strong></a> I have uploaded to QlikCommunity.</p>
<h2>Taking This Further</h2>
<p>This simple view of performance is often enough to keep a quick eye on what is happening with your loads. If you need tending of load performance or more granular information (eg. rows and performance of each table in a load) then you need to persist information into QVDs by inserting values into tables during the load &#8211; using the <strong>AutoGenerate</strong> function.</p>
<p>This is the second part in our series of Back To Basics posts, <a title="Back to QlikView Basics" href="https://www.quickintelligence.co.uk/back-to-basics/">click here</a> to view other posts in this series.</p>
<p>The post <a href="https://www.quickintelligence.co.uk/qlikview-load-performance/">How To View QlikView Load Performance</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.quickintelligence.co.uk/qlikview-load-performance/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1493</post-id>	</item>
		<item>
		<title>How To Organise Your QlikView Folders</title>
		<link>https://www.quickintelligence.co.uk/qlikview-folder-structures/</link>
					<comments>https://www.quickintelligence.co.uk/qlikview-folder-structures/#comments</comments>
		
		<dc:creator><![CDATA[Steve Dark]]></dc:creator>
		<pubDate>Wed, 25 Sep 2013 23:10:19 +0000</pubDate>
				<category><![CDATA[Back To Basics]]></category>
		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1488</guid>

					<description><![CDATA[<p>This is a new series of Back To Basics posts, where I am going to demonstrate some of the things that I will do on just about every QlikView project I work on. These posts are for new users and more experienced ones that want to pick up a new trick or two. Back To  [...]</p>
<p>The post <a href="https://www.quickintelligence.co.uk/qlikview-folder-structures/">How To Organise Your QlikView Folders</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This is a new series of Back To Basics posts, where I am going to demonstrate some of the things that I will do on just about every QlikView project I work on. These posts are for new users and more experienced ones that want to pick up a new trick or two. <span id="more-1488"></span></p>
<h2>Back To Basics</h2>
<p>One of my posts on <a title="Steve Dark on QlikCommunity" href="https://community.qlik.com/t5/user/viewprofilepage/user-id/6748" target="_blank" rel="noopener">QlikCommunity</a> recently got an extremely positive response, when I thought I simply was stating the obvious. it then occurred to me that there are a number of things that I do so often that they have become second nature &#8211; but they may not seem so obvious to others. That it why I am starting this series of posts &#8211; and commencing with the topic from that QlikCommunity post: sorting your QlikView Server folder structure.</p>
<h2>Putting The Fault into Default</h2>
<p>There are no doubt a number of opinions on the best way to set up your QlikView folder structure (which you are free to share in the <a href="#respond">comments</a> on this post), but what is universally agreed is that the installation default makes no sense. When you first look at your QMC settings you will see that the folder for publishing QlikView documents is nestled under your Program Files folder and has a handful of demo documents to clutter your Access Point. One of the first things I always do when I go into QMC for the first time is change this, to what I believe to be QlikView best practice.</p>
<h2>Mounting Folders In QlikView</h2>
<p>For those that are not aware, your published folder configuration can be found in QMC under <strong>System</strong> / <strong>Setup</strong> / <strong>QlikView Servers</strong> / <em><strong>{Your Server Name}</strong></em> / <strong>Folders</strong>. Here you can set a root folder and a number of sub folders. Ensure that all folders actually exist on your server and that you click the Apply button (I tend to click this twice &#8211; just to be sure). <img decoding="async" class="aligncenter size-full wp-image-1491" style="padding: 40px 0;" alt="Mounting QlikView Folders" src="https://www.quickintelligence.co.uk/wp-content/uploads/2013/09/Mounting-QlikView-Folders.png" width="694" height="234" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2013/09/Mounting-QlikView-Folders-300x101.png 300w, https://www.quickintelligence.co.uk/wp-content/uploads/2013/09/Mounting-QlikView-Folders.png 694w" sizes="(max-width: 694px) 100vw, 694px" /> Any QlikView document placed in any of these folders or sub folders within them will appear in Access Point (provided the user has the correct AD permissions). For this reason it is important to not mount a folder that sits within another mounted folder &#8211; as all documents in that folder will appear in Access Point twice. Given the way that sub folders are included there is only the need to mount a Root folder and then create folders within there. I would however not recommend this. By mounting other folders you have more control over where your documents sit, you can also remove documents from Access Point (perhaps temporarily) without physically removing the files. In this way the Root folder becomes much like the rest of the folders &#8211; and I always leave this one empty (you will find system files with a .pgo extension get created in here).</p>
<h2>Bring Structure To Your QlikView Folders</h2>
<p>As to the structure itself I will typically create a QlikView Documents folder on the data drive of the server (often D:\) and everything else under there. In here I will create folders for the <strong>Root</strong> folder, <strong>Development</strong> files, <strong>Logs</strong>, <strong>QVDGeneration</strong>, staging <strong>Data</strong>, <strong>SourceData</strong>, <strong>Images</strong>, <strong>Themes</strong> and also a <strong>Published</strong> folder &#8211; to contain the folders I will mount. The folders within published will change from installation, but will always contain a <strong>System</strong> folder (for Ops Monitor and other small system apps I use (more on these in a later post)) and then often folders for each area of the business. The end result will look a bit like this: <img decoding="async" class="aligncenter size-full wp-image-1490" style="padding: 40px 0;" alt="QlikView Folder Structure" src="https://www.quickintelligence.co.uk/wp-content/uploads/2013/09/QlikView-Folder-Structure.png" width="225" height="317" srcset="https://www.quickintelligence.co.uk/wp-content/uploads/2013/09/QlikView-Folder-Structure-213x300.png 213w, https://www.quickintelligence.co.uk/wp-content/uploads/2013/09/QlikView-Folder-Structure.png 225w" sizes="(max-width: 225px) 100vw, 225px" /> By setting up a sensible structure at the outset much pain can be saved later on. The ability to mount and unmount folders at a granular level makes life a lot easier.</p>
<h2>Final Notes</h2>
<p>Note that if you have Publisher you will set up the QVDGeneration folder under Distribution settings and the only folders you will mount are Root and those under the Published folder. If you do not have Publisher you will need to mount QVDGeneration also, in order that you can schedule reloads.</p>
<p>You may have noticed I create a Logs folder under QlikView documents, the default logging location also needs to be changed under the QMC settings to point to this folder (on the Logging tab under Server Setup). For more information on setting up mount folders please refer to the QlikView Server manual, search QlikCommunity or feel free to ask a question below.</p>
<p>The post <a href="https://www.quickintelligence.co.uk/qlikview-folder-structures/">How To Organise Your QlikView Folders</a> appeared first on <a href="https://www.quickintelligence.co.uk"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.quickintelligence.co.uk/qlikview-folder-structures/feed/</wfw:commentRss>
			<slash:comments>47</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1488</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Minified using Disk

Served from: www.quickintelligence.co.uk @ 2026-06-16 21:15:50 by W3 Total Cache
-->