<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Quick Intelligence</title>
	
	<link>http://www.quickintelligence.co.uk</link>
	<description />
	<lastBuildDate>Sun, 19 May 2013 19:20:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/QuickIntelligenceBlog" /><feedburner:info uri="quickintelligenceblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>QlikView, NPrinting and Google Drive</title>
		<link>http://feedproxy.google.com/~r/QuickIntelligenceBlog/~3/Dt7BK6yywQ0/</link>
		<comments>http://www.quickintelligence.co.uk/qlikview-nprinting-google-drive/#comments</comments>
		<pubDate>Thu, 16 May 2013 13:58:50 +0000</pubDate>
		<dc:creator>Steve Dark</dc:creator>
				<category><![CDATA[NPrinting]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1372</guid>
		<description><![CDATA[<p>QlikView Access Point allows users to interact with apps in their browser. But what if those users are not on your domain or only require static data? How can we get information to them in a way that is robust and cost effective? The Problem The problem that our client faced was that they were [...]</p><p>The post <a href="http://www.quickintelligence.co.uk/qlikview-nprinting-google-drive/">QlikView, NPrinting and Google Drive</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.quickintelligence.co.uk/qlikview-nprinting-google-drive/" title="QlikView, NPrinting and Google Drive"><img class="alignnone size-full wp-image-1375" style="margin-bottom: 20px;" alt="qv-np-drive" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/qv-np-drive.png" width="669" height="113" /></a></p>
<p>QlikView Access Point allows users to interact with apps in their browser. But what if those users are not on your domain or only require static data? How can we get information to them in a way that is robust and cost effective?<span id="more-1372"></span></p>
<h2>The Problem</h2>
<p>The problem that our client faced was that they were producing QlikView apps for their sales team to support them when talking to clients and prospects. Due to geographical factors, a reliable internet connection could not always be guaranteed. What they needed to do was to get subsets of their QlikView documents out to their sales people wherever they were &#8211; so they could then open them in QlikView Desktop.</p>
<p>The QlikTech stack allows for this with Publisher, but for smaller sites this is a considerable investment. It can also be achieved with batch script and Windows Scheduler (and the initial implementation for this client did just that) but this solution is not particularly robust or maintainable by someone without scripting experience.</p>
<h2>The Solution</h2>
<p>An elegant solution to this problem can be created using <a href="http://www.quickintelligence.co.uk/nprinting/">NPrinting</a> and cloud technology, such as Google Drive.</p>
<h3>1. Schedule and format reports with NPrinting</h3>
<p>Within NPrinting a Reduce Task can be configured. As with Publisher this creates a QVW file for each recipient with a filter applied. Using the Enterprise version of NPrinting this can then be scheduled to run at a beat. When the reduce task runs NPrinting will create a new folder for each QVW that it creates.</p>
<h3>2. Distribute reports with Google Drive</h3>
<p>The company runs on Google Apps and therefore there was little resistance to pushing data to Drive. If you have the desktop version of Google Drive installed, and you point your output to within the folder structure of Drive, new folders will be created on your Drive in the Cloud. Drive can then be configured to share these folders with the relevant recipients.</p>
<h3>3. Happy sales team</h3>
<p>Now each of the users can log into their Drive and download the latest version of their app. Or, if they also have Google Drive Desktop installed, the app will automatically be downloaded for them the next time they have a connection.</p>
<p>Choosing to do this using NPrinting means we also have the option to distribute PDF, Excel, Word or PowerPoint documents in the same way. In this way the sales team could get a daily updated version of their PowerPoint deck with bang up to date information in it &#8211; without having to do anything other than open the PPT file.</p>
<h2>How to Integrate NPrinting with Google Drive</h2>
<h3>1. Set up Google Drive</h3>
<ol class="instructions">
<li>Go to <a href="http://drive.google.com">http://drive.google.com</a></li>
<li>Click the <strong>Download Google Drive</strong> for your PC button.</li>
<li>Open <strong>googledrivesync.exe</strong> to automatically install and start Google Drive on your PC.</li>
<li>Enter your <strong>Google Account username</strong> and <strong>password</strong> in the window that opens. This will be the account associated with Google Drive for your PC.</li>
<li>Complete the installation package instructions.</li>
<li>Launch Google Drive for your PC from the Start menu. Any files or folders you put into your Google Drive Folder will automatically be synced with your Drive in the cloud. This is where you will output your folders from NPrinting.</li>
</ol>
<h3>2. Set up Sharing</h3>
<ol class="instructions">
<li>Go to <a href="http://drive.google.com">http://drive.google.com</a></li>
<li>Check the box next to the file or folder you&#8217;d like to share.</li>
<li>Click the Share icon.<img class="alignnone size-full wp-image-1378" alt="drive_2375110_share_icon_en" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/drive_2375110_share_icon_en.gif" width="77" height="34" /></li>
<li>Choose a visibility option. Select &#8220;Private&#8221; so that the folder is only shared with users you explicitly grant access to.<img class="alignnone size-full wp-image-1381" style="margin: 20px 0; border: 1px solid #ccc;" alt="drive-share" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/drive-share.png" width="490" height="312" /></li>
<li>Type the email addresses of the person you want to share with in the text box below &#8220;Add people.&#8221;<br />
You can add a single person, a mailing list, or choose from your contacts.</li>
<li>Choose the access level from the drop-down menu next to each collaborator: &#8220;Can view&#8221; will allow your users to view all documents but not edit them.<br />
<img class="alignnone size-full wp-image-1379" style="margin: 20px 0;" alt="drive-add-people" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/drive-add-people.png" width="509" height="159" /></li>
<li>Click <strong>Share &amp; save</strong>.</li>
</ol>
<h3>3. Output NPrinting Reports into your Drive Folder</h3>
<ol class="instructions">
<li>Create a new NPrinting document and set up your Connection</li>
<li>From the menu create a new Reduce Task<br />
<img class="alignnone size-full wp-image-1383" style="margin: 20px 0;" alt="New Reduce Task" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/NPrintingGoogle.png" width="450" height="250" /></li>
<li>Output to your Google Drive folder setting NPrinting to have recipient sub-folders.<br />
<img class="alignnone size-full wp-image-1384" style="margin: 20px 0;" alt="Recipient Subfolder" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/RecipientSubfolder.png" width="674" height="107" /></li>
<li>Click the recipients button to add a number of new recipients for reduced QlikViews. Set the folder and subfolder names accordingly.<br />
<img class="alignnone size-full wp-image-1385" alt="Recipients" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/Recipients.png" width="72" height="71" /></li>
<li>For each of the recipients configure the filter based on fields within the connected QlikView document.<br />
<img class="alignnone size-full wp-image-1386" alt="Filters" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/Filters.png" width="52" height="73" /></li>
<li>Select the task from under <strong>Reduce Tasks</strong> and click the <strong>Run</strong> button to send it out. The sub-set QVW files will be written to the appropriate folder.<br />
<img class="alignnone size-full wp-image-1388" alt="Reduce And Send" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/ReduceAndSend.png" width="626" height="93" /></li>
<li>To make this happen at regular intervals create a new <strong>Job</strong> and then a new <strong>Schedule</strong> to automate the process. Users will then receive fresh QlikView documents as often as you configure them to be sent.</li>
</ol>
<h2>See it in Action</h2>
<p>As QlikTech say, &#8220;seeing is believing.&#8221; The video below shows the working solution in action:</p>
<div class="video-shortcode"><iframe title="YouTube video player" width="660" height="350" src="http://www.youtube.com/embed/uQdEwMDSyC0" frameborder="0" allowfullscreen></iframe></div>
<p>This is just one example where combining QlikView with other technologies can allow you to produce even more inspired solutions. If you would like more information on NPrinting please see our <a href="http://www.quickintelligence.co.uk/nprinting/">NPrinting product page</a>.</p>
<p>Quick Intelligence are NPrinting Partners</p>
<p>The post <a href="http://www.quickintelligence.co.uk/qlikview-nprinting-google-drive/">QlikView, NPrinting and Google Drive</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p><img src="http://feeds.feedburner.com/~r/QuickIntelligenceBlog/~4/Dt7BK6yywQ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quickintelligence.co.uk/qlikview-nprinting-google-drive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.quickintelligence.co.uk/qlikview-nprinting-google-drive/</feedburner:origLink></item>
		<item>
		<title>QlikView Buttons – When, Why and How</title>
		<link>http://feedproxy.google.com/~r/QuickIntelligenceBlog/~3/yxiJqNFjPy8/</link>
		<comments>http://www.quickintelligence.co.uk/qlikview-buttons/#comments</comments>
		<pubDate>Fri, 10 May 2013 12:54:38 +0000</pubDate>
		<dc:creator>Steve Dark</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1364</guid>
		<description><![CDATA[<p>You might think that there is not much to say about buttons in QlikView. If so you are probably not thinking much beyond a shiny lozenge of a thing that invites you to Clear Current Selections. I&#8217;m here to convince you otherwise. Don&#8217;t Waste Space The first thing to say here is that a Clear [...]</p><p>The post <a href="http://www.quickintelligence.co.uk/qlikview-buttons/">QlikView Buttons &#8211; When, Why and How</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>You might think that there is not much to say about buttons in QlikView. If so you are probably not thinking much beyond a shiny lozenge of a thing that invites you to Clear Current Selections. I&#8217;m here to convince you otherwise.<span id="more-1364"></span></p>
<h2>Don&#8217;t Waste Space</h2>
<p>The first thing to say here is that a Clear Current Selections button is totally redundant. That button is built right into the QlikView UI in Desktop and both Access Point versions. The same is true of Back, Bookmarks and (unless you have hidden your tabs) Next and Previous Tab buttons. Save yourself some space for some more analysis and don&#8217;t waste space with these buttons.</p>
<p><img class="aligncenter size-full wp-image-1366" alt="Default Button Style" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/Default-Button-Style.png" width="238" height="70" /></p>
<p>In my opinion shiny lozenges take far more space up than they need to and are visually distracting. You should not use these unless you really have to (i.e. your client or user insists).</p>
<h2>Many objects can be Buttons</h2>
<p>Anything that supports Actions can be a button. The lowly Text Area serves this purpose admirably, and if you have to use a gauge in your app, at least make it useful by making it clickable. A text box with no borders or shading provides a clickable line of text &#8211; like the ones that have served web pages so well for many years now.</p>
<p>With the use of dynamic colours you can have traffic light dashboard components that can also be useful for triggering actions (such as a dive to detail). Simple shading behind your text can make a useful toggle switch in your app.</p>
<h2>Using Actions For Hiding Sheets</h2>
<p>Here are some examples of text boxes performing the actions of buttons. These examples place values into variables, which are then used to do something dynamic in the app.</p>
<p>In most of the QlikView apps I produce I have some tabs for system data that is hidden from most users. To implement this I set a variable in the load script:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="php" style="font-family:monospace;">let vShowDev <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>On the front sheet there is then a text box that has dynamic text:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">=</span><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>vShowDev <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Show'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Hide'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #0000ff;">' Development Tabs'</span></pre></td></tr></table></div>

<p>And finally there is an Action to set the value of the variable:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">=</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>vShowDev <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>The toggle on the screen looks inconspicuously like this:</p>
<p><img class="aligncenter size-full wp-image-1368" alt="Show Development Tabs" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/Show-Development-Tabs.png" width="200" height="31" /></p>
<p>All that is left then is to put the Conditional Show criteria on the correct sheets. The code for this is simply:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="php" style="font-family:monospace;">vShowDev <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span></pre></td></tr></table></div>

<h2>Show Different Views Based On Variable Values</h2>
<p>Another example of a show/hide toggle is where you want to swap between different charts or tables. Natively QlikView has the Auto-Minimise tick box and more recently the Container, but I am not a fan of using these. With a Conditional Show one object can be hidden and be replaced with a number of other objects.</p>
<p>To do a multi-way toggle I will set color variables up in the load script:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="php" style="font-family:monospace;">let vColHighlight <span style="color: #339933;">=</span> rgb<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">210</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">210</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
let vColNoHighlight <span style="color: #339933;">=</span> rgb<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>And default a display variable:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="php" style="font-family:monospace;">let vViewMode <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Dashboard'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Text Areas are then required for each of the values you wish to set. Each text box simply has the legend of the view mode, and an Action to set the variable to the correct value:</p>
<p><img class="aligncenter size-full wp-image-1367" alt="Set View Mode To Analysis" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/Set-View-Mode-To-Analysis.png" width="538" height="114" /></p>
<p>The final step is to highlight which button is presently active. This is done by setting the Background Colour on each Text Object  to a dynamic colour with the following code:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>vViewMode <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Analysis'</span><span style="color: #339933;">,</span> $<span style="color: #009900;">&#40;</span>vColHighlight<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> $<span style="color: #009900;">&#40;</span>vColNoHighlight<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>With a bit of sizing and alignment the row of toggle buttons should look a bit like this:</p>
<p><img class="aligncenter size-full wp-image-1365" alt="Dashboard Analysis Detail" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/Dashboard-Analysis-Detail.png" width="347" height="37" /></p>
<p>Again, a simple Show Conditional expression is required on each chart to dictate under which heading it displays.   The code for this will be:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="php" style="font-family:monospace;">vViewMode <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Analysis'</span></pre></td></tr></table></div>

<h2>Other QlikView Button Examples</h2>
<p>There are many, many more examples of where using Actions on Text Objects or Gauges can be useful. Selecting a field to analyse, changing some UI feature, linking it to an external site or anything else you can think of.</p>
<p>I have created an app with a few examples that you may want to use in your own applications. You can download this from the Shared QlikViews section of QlikCommunity, here: <a href="http://bit.ly/10wIZLJ">http://community.qlikview.com/qlikviews/1426</a></p>
<p>And you can see the app in this YouTube video here:</p>
<div class="video-shortcode"><iframe title="YouTube video player" width="600" height="350" src="http://www.youtube.com/embed/MFEhMC2kca8" frameborder="0" allowfullscreen></iframe></div>
<p>If you can think of any use cases that I may not have considered please add them to the <a href="#respond">comments</a> section below.</p>
<p style="text-align: center;"><a href="#respond"><img class="aligncenter  wp-image-1369" alt="GO button" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/05/photodune-1918422-go-button-xs.jpg" width="180" height="144" /></a></p>
<p>The post <a href="http://www.quickintelligence.co.uk/qlikview-buttons/">QlikView Buttons &#8211; When, Why and How</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p><img src="http://feeds.feedburner.com/~r/QuickIntelligenceBlog/~4/yxiJqNFjPy8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quickintelligence.co.uk/qlikview-buttons/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.quickintelligence.co.uk/qlikview-buttons/</feedburner:origLink></item>
		<item>
		<title>9 Essential QlikView Development Tools</title>
		<link>http://feedproxy.google.com/~r/QuickIntelligenceBlog/~3/uwgb3XMJghg/</link>
		<comments>http://www.quickintelligence.co.uk/nine-essential-qlikview-development-tools/#comments</comments>
		<pubDate>Mon, 08 Apr 2013 13:54:56 +0000</pubDate>
		<dc:creator>Steve Dark</dc:creator>
				<category><![CDATA[NPrinting]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[analyzer]]></category>
		<category><![CDATA[geoqlik]]></category>
		<category><![CDATA[idevio]]></category>
		<category><![CDATA[nprinting]]></category>
		<category><![CDATA[QlikView]]></category>
		<category><![CDATA[qviewer]]></category>
		<category><![CDATA[qvsource]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1315</guid>
		<description><![CDATA[<p>QlikView is, of course, my software of choice. However, I would not want to be going on client site to do a job without some other tools in my kit bag. Read on to find out the tools I use.  Which of these do you use? What other tools should I consider? Back at the [...]</p><p>The post <a href="http://www.quickintelligence.co.uk/nine-essential-qlikview-development-tools/">9 Essential QlikView Development Tools</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>QlikView is, of course, my software of choice. However, I would not want to be going on client site to do a job without some other tools in my kit bag. Read on to find out the tools I use.  Which of these do you use? What other tools should I consider?<span id="more-1315"></span></p>
<p>Back at the Business Discovery World Tour in 2011 QlikTech were talking of how they were encouraging third party developers to enrich the QlikView offering, rather than trying to build everything into the product themselves. The main thrust of this, at the time, was the introduction of QlikView Extensions. Spin on a couple of years though and more importantly than that, a thriving ecosystem of third party tools has matured around QlikView.  The best place to discover some of these tools is on the <a title="QlikMarket" href="http://market.qlikview.com/" target="_blank">QlikMarket</a>.</p>
<p>In this blog post I want to bring to your attention some of those tools that I use to improve my QlikView life.</p>
<h2 class="qvsource">QVSource</h2>
<p>You have no doubt already heard that QlikView will connect to just about any data source. That is great, but what about when you want to connect to one of the others? This is where QVSource steps in. Running as a service on your machine it allows you to connect to other data sources &#8211; most notably on-line databases and API&#8217;s, such as those used for sentiment analysis and text analytics.</p>
<p>I use it frequently to pull down data from Google Analytics and monitor the reach of this site. Connectors to services like Twitter and Facebook are also good for demos, and indeed you can find a number of QVSource powered demos on-line.</p>
<p>If the particular source you need to connect to is not already covered by QVSource you can contact the developers &#8211; who I have always found to be most helpful and willing to add new features.</p>
<p><a title="QVSource" href="http://www.qvsource.com/" target="_blank">Visit QVSource</a></p>
<h2 class="qviewer">QViewer</h2>
<p>A relative newcomer to my toolkit; QViewer has quick become one of the apps that I wonder how I got by without. Once it is installed you can double click on any QVD and it will bring the contents up in a tabular view. Profiling of the data can be done simply and intuitively without any coding. Searching for values within the QVD is also supported.</p>
<p>There are many occasions when I want to dive deeper into looking at the contents of QVDs (and I have built QlikView apps for doing just this) but as a quick and easy route to do this; QViewer is hard to fault.  Given the low cost of QViewer, if you have ever created a QVD, you should buy it.</p>
<p><a title="QViewer" href="http://easyqlik.com/" target="_blank">Visit QViewer </a></p>
<h2 class="qda">QlikView Document Analyzer</h2>
<p>Rob Wunderlich has produced many useful little tools and some very helpful example files in the shape of his QlikView Cookbook. The tool that I frequently turn to, and want to draw your attention to here is the QlikView Document Analyzer. It is a QlikView document itself, that you point towards one of your own QlikView documents. The Document Analyzer then reads the metadata from your document and profiles this for you. It gives a view of many different aspects of the profiled document &#8211; but where I find it most useful is showing a client just how many fields they have pulled into their apps that they have not actually used anywhere.  This enables you to prune your apps and make them much more efficient easing the load on your server.</p>
<p><a title="QlikView Document Analyzer" href="http://robwunderlich.com/downloads/" target="_blank">Visit QlikView Document Analyzer</a></p>
<h2 class="nprinting">NPrinting</h2>
<p>Printed reports in QlikView (as I have <a title="QlikView Reports" href="http://www.quickintelligence.co.uk/qlikview-reports/" target="_blank">mentioned previously</a>) are not one of it&#8217;s strongest features.  Scheduling output and sharing it via email (with Publisher) can be cost prohibitive to some organisations. NPrinting steps in to address both of these issues.</p>
<p>Sitting alongside QlikView it allows users to pull data straight out of their QlikView documents into applications such as Excel and Word. The scheduler can then produce versions of these documents for a number of different recipients (with different subsets of data) and distribute them via email. This is great when users only need a read only view (removing the need for a QlikView licence for that user) or when data needs to be pushed to users pro-actively.</p>
<p>For many, this application fills in some of the crucial gaps in QlikView.</p>
<p><a title="NPrinting" href="http://www.quickintelligence.co.uk/nprinting/">Learn more about NPrinting </a></p>
<h2 class="tsvn">TortoiseSVN / Subversion</h2>
<p>It was long considered a major omission in the QlikView product set that there was no way of doing proper source code control. The introduction of the Project folder addressed that to an extent &#8211; but actually doing the Check In and Merge of code was very manual.  As of QlikView 11 hooks have been added into QlikView to allow the use of third party source code control tools.</p>
<p>TortoiseSVN is in use at a couple of my clients and manages the creation of projects and check out/check in process well. It may not be for everyone, as the time overhead of creating the project folder adds to development time, but if you have more than one developer amending the same Qlikview document; using TortoiseSVN saves a lot of headaches. You may chose to use it if you are a sole developer if you want the ability to do roll backs of select changes in your QlikView document to a prior state.</p>
<p><a title="TortoiseSVN" href="http://tortoisesvn.net/" target="_blank">Visit TortoiseSVN</a></p>
<h2 class="notepad">Notepad++</h2>
<p>Whilst not strictly a QlikView tool, this developers text editor deserves mention here thanks to the QlikView language syntax highlighting definition produced by <a title="Matt Fryer" href="http://www.qlikviewaddict.com/" target="_blank">Matt Fryer</a>. Notepad++ has all the features you would expect in a text editor of this kind and quite a few you might not. If you use include files in your applications (as I have discussed on <a title="QlikView Include Files" href="http://www.quickintelligence.co.uk/qlikview-include-files/" target="_blank">this blog</a>) then you should consider this Notepad++ for editing them.</p>
<p><a title="Notepad++" href="http://notepad-plus-plus.org/" target="_blank">Visit Notepad++</a> | <a title="Notepad++ QlikView" href="http://www.qlikviewaddict.com/p/qlikview-notepad.html" target="_blank">Notepad++ Syntax File</a></p>
<h2 class="snagit">SnagIt</h2>
<p>This next tool is not a QlikView tool at all, but it deserves a mention as I now can&#8217;t imagine my life without it. SnagIt is a screen capture tool with every whistle and bell you could possibly want thrown in.</p>
<p>Capture any area or window on the screen, manipulate it and then send it out to any number of locations other services. Where it has a real application in a QlikView environment is when building a quick QlikView <a title="On A Similar Theme" href="http://www.quickintelligence.co.uk/on-a-similar-theme/" target="_blank">theme</a> based on a company&#8217;s website.  It can also be very helpful when distributing screenshots from QlikView apps &#8211; thanks to the ability to blur areas of your screen-grab, to hide any sensitive information.  A great tool, and one I highly recommend.</p>
<p><a title="SnagIt" href="http://www.techsmith.com/snagit.html" target="_blank">Visit SnagIt</a></p>
<h2 class="mtools">Mapping Tools</h2>
<p>Going slightly off the topic of tools I feel exposed without, these are a couple of third party apps that are established and well used &#8211; but I personally have yet to implement in a live environment.</p>
<p>Most people are aware that you can integrate the Google Maps API into QlikView to plot points on a map. This is relatively inexpensive and covers a lot of mapping requirements. However, when you need to do something that goes beyond the native capabilities of the Google Maps API and QlikView &#8211; you may want to turn to either GeoQlik or Idevio Maps.</p>
<p><a title="GeoQlik" href="http://www.geoqlik.com/" target="_blank">GeoQlik</a> | <a title="Idevio Maps" href="http://www.idevio.com/ideviomaps-qlikview.html" target="_blank">Idevio Maps</a></p>
<h2>Other Quick Mentions</h2>
<p>Finally a couple of quick mentions, and again I am veering slightly off the QlikView track here, of a couple of small apps that I use quite frequently. A quick Search and Replace tool, known simply as SR32, which allows me to quickly interrogate the contents of text files &#8211; be they CSV data sources, XML files (such as QlikView themes or config files) or QlikView log files.  The other quick mention is a tool for grabbing RGB colour codes from the screen, ColorPix, which is a great time saver when creating a QlikView theme that mirrors the look and feel of a company web-site.</p>
<p>Neither of these tools will change your life, but they may well save you a few minutes each time you use them.</p>
<p><a title="SR32" href="http://www.funduc.com/srshareware.htm" target="_blank">SR32</a> | <a title="ColorPix" href="http://www.colorschemer.com/colorpix_info.php" target="_blank">ColorPix</a></p>
<h2>Conclusion</h2>
<p>There you have it! My list of tools that work for me alongside QlikView to deliver inspired solutions to my clients. There may be some on there you use already, and some that you can&#8217;t live without that I am not aware of. Please let me know of any other great add-ons in the <a title="Leave a Comment" href="#respond">comment</a> box.</p>
<p>Tick the box below to subscribe to comments, if you want to be notified of what others think on this topic.</p>
<p>The post <a href="http://www.quickintelligence.co.uk/nine-essential-qlikview-development-tools/">9 Essential QlikView Development Tools</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p><img src="http://feeds.feedburner.com/~r/QuickIntelligenceBlog/~4/uwgb3XMJghg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quickintelligence.co.uk/nine-essential-qlikview-development-tools/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		<feedburner:origLink>http://www.quickintelligence.co.uk/nine-essential-qlikview-development-tools/</feedburner:origLink></item>
		<item>
		<title>Hidden QlikView Features</title>
		<link>http://feedproxy.google.com/~r/QuickIntelligenceBlog/~3/EZjmXGZom_Y/</link>
		<comments>http://www.quickintelligence.co.uk/hidden-qlikview-features/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 23:30:22 +0000</pubDate>
		<dc:creator>Steve Dark</dc:creator>
				<category><![CDATA[Load Script]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Hidden]]></category>
		<category><![CDATA[Include]]></category>
		<category><![CDATA[QlikView]]></category>

		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1320</guid>
		<description><![CDATA[<p>Recently I blogged on Include Files in QlikView, and mentioned the fact that QlikView doesn&#8217;t advise you when an include file was missing.  This led to a discussion on QlikCommunity and a revelation to me of a new feature.  This feature is not documented in the QlikView help files and Google turned up just one [...]</p><p>The post <a href="http://www.quickintelligence.co.uk/hidden-qlikview-features/">Hidden QlikView Features</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Recently I blogged on <a href="http://www.quickintelligence.co.uk/qlikview-include-files/">Include Files in QlikView</a>, and mentioned the fact that QlikView doesn&#8217;t advise you when an include file was missing.  This led to a discussion on QlikCommunity and a revelation to me of a new feature.  This feature is not documented in the QlikView help files and Google turned up just one result for it.<span id="more-1320"></span></p>
<p><img class="aligncenter size-medium wp-image-1321" alt="" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/04/photodune-900558-needle-in-haystack-xs-300x200.jpg" width="300" height="200" /></p>
<p>The function itself is not revolutionary, but it is going to cause me to have to go back and modify many QlikView apps to use it.  As I described in my previous blog, you can include code from an external script file simply by referencing it like this:</p>
<p><strong>$(Include=..\Scripts\ExternalScript.qvs);</strong></p>
<p>This is all well and good, provided that ExternalScript.qvs exists.  However, if you have a typo in your file name then QlikView will happily just ignore your include statement and get on with the load script.  That is until it references that table you thought you loaded in your include file.  Debugging this could take some time &#8211; as the error will not necessarily occur anywhere near where you include failed and unless you are aware that QlikView doesn&#8217;t raise errors on missing includes you may not suspect that is the fault anyway.</p>
<p>This seemed to me like a bit of a flaw in how QlikView handles includes.</p>
<p>However, someone has obviously noticed this at QlikTech and with just a small change to your code:</p>
<p><strong>$(Must_Include=..\Scripts\ExternalScript.qvs);</strong></p>
<p>You will get an error message raised on any missing scripts.  This will alert you in Desktop mode, or send abort your load and send a notification in batch mode.  To my mind a much more useful thing to do than to keep the missing file quiet.</p>
<p>Many thanks to <a title="Toni Kuatto" href="http://community.qlikview.com/people/tko" target="_blank">Toni Kuatto</a> for posting about this feature on <a title="QlikCommunity Include Files" href="http://community.qlikview.com/message/328407" target="_blank">QlikCommunity</a>.</p>
<p>There have been other occasions where there is a seemingly un-documented feature in QlikView that really helps makes things better, the AllowDataLineage flag being a recent case in point.  I&#8217;m sure there are many more of these that I am yet to uncover.</p>
<p>If you are able to tip me off to any more of these, please leave a comment below.</p>
<p>The post <a href="http://www.quickintelligence.co.uk/hidden-qlikview-features/">Hidden QlikView Features</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p><img src="http://feeds.feedburner.com/~r/QuickIntelligenceBlog/~4/EZjmXGZom_Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quickintelligence.co.uk/hidden-qlikview-features/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://www.quickintelligence.co.uk/hidden-qlikview-features/</feedburner:origLink></item>
		<item>
		<title>QlikView Caption Contest</title>
		<link>http://feedproxy.google.com/~r/QuickIntelligenceBlog/~3/P0aD7rnbOt8/</link>
		<comments>http://www.quickintelligence.co.uk/qlikview-caption-contest/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 22:25:30 +0000</pubDate>
		<dc:creator>Steve Dark</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[expression]]></category>
		<category><![CDATA[QlikView]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1306</guid>
		<description><![CDATA[<p>Captions on charts and tables are quite useful in QlikView, the colouring of the caption can denote currently selected objects and the caption provides an anchor to pick up and move objects by.  If you are going to have captions then you should at least use them well.  How?  Read on..&#8230; When you first create [...]</p><p>The post <a href="http://www.quickintelligence.co.uk/qlikview-caption-contest/">QlikView Caption Contest</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Captions on charts and tables are quite useful in QlikView, the colouring of the caption can denote currently selected objects and the caption provides an anchor to pick up and move objects by.  If you are going to have captions then you should at least use them well.  How?  Read on..<span id="more-1306"></span>&#8230;</p>
<p>When you first create your chart, setting only the bare essentials up first, your caption may look a bit like this one here.</p>
<p><img class="aligncenter size-full wp-image-1311" alt="Expression Only" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/03/01_ExpressionOnly.png" width="353" height="40" /></p>
<p>The actual coding behind the expression is shown in the header (which is meaningless to anyone who is not a developer) and there is some chart junk in the form of maximize and minimize icons that you probably don&#8217;t need.</p>
<p>First of all, you should always provide a label for any expressions, whether that label is visible or not, that is meaningful to the user.  Any icons that are not required can be turned off.  The XL icon is a matter of taste &#8211; I tend to leave it on.</p>
<p><img class="aligncenter size-full wp-image-1307" alt="Labelled Expression" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/03/02_LabelledExpression.png" width="353" height="40" /></p>
<p>But why stop there?  You have space taken up by a caption, so why not use it?  In the caption you can type plain text, or (more usefully) you can provide an expression.  Expressions always start with an equals sign.  If you are showing numbers then ensure that you use the <strong>num</strong> function to format them correctly.  In this example total sales are shown.</p>
<p><a href="http://www.quickintelligence.co.uk/wp-content/uploads/2013/03/03_WithValue.png" rel="lightbox[1306]" title="QlikView Caption Contest"><img class="aligncenter size-full wp-image-1308" alt="With Value" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/03/03_WithValue.png" width="353" height="37" /></a></p>
<p>Your chart or table will no doubt have a dimension on it, so you can also use the space to give details of what the dimension is that the chart is over.  If your chart or table uses a Cycle group then you can use the <strong>GetCurrentField</strong> function to retrieve the current value.</p>
<p><a href="http://www.quickintelligence.co.uk/wp-content/uploads/2013/03/03_WithValue.png" rel="lightbox[1306]" title="QlikView Caption Contest"><img class="aligncenter size-full wp-image-1309" alt="Dimension And Value" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/03/04_DimensionAndValue.png" width="353" height="37" /></a></p>
<p>If you still have some room on your caption bar you could provide even more information here.  It may be useful to show the date range of the data that you are displaying or, as I have here, a count of the rows of data that make up the values in the chart. You can do all kinds of expressions in a caption so give some thought as to what is going to be most useful to your users.</p>
<p><img class="aligncenter size-full wp-image-1310" alt="Finished Chart" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/03/05_FinishedChart.png" width="351" height="232" /></p>
<p>Here is a completed chart.  The caption is showing additional data in the form of the total sales (which you would have to add up otherwise) and the number of sales &#8211; which is not represented at all.  If the dimension wasn&#8217;t a Cycle group then you could do away with the dimension legend on the chart and only have it in the caption.  In the image above the caption text is restating the dimension in the caption, so that all the headline information is in one place.</p>
<p>The code required for the caption bar in the chart above is as follows:</p>
<p style="padding-left: 30px;"><strong>=&#8217;Sales by &#8216; &amp; GetCurrentField([SalesCycle]) &amp; </strong><br />
<strong>&#8216; (£&#8217; &amp; num(sum([Sales Amount]), &#8216;#,##0&#8242;) &amp; &#8216; &#8211; &#8216; &amp; </strong><br />
<strong>num(sum(RowCount), &#8216;#,##0&#8242;) &amp; &#8216; Sales)&#8217;</strong></p>
<p>As well as captions; expressions built up in this way can be shown in Text Objects.  A ticker bar of information along the top of a page is a good way of getting lots of information in to a small amount of space.</p>
<p>So, what can you fit into the captions in your apps?</p>
<p>The post <a href="http://www.quickintelligence.co.uk/qlikview-caption-contest/">QlikView Caption Contest</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p><img src="http://feeds.feedburner.com/~r/QuickIntelligenceBlog/~4/P0aD7rnbOt8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quickintelligence.co.uk/qlikview-caption-contest/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://www.quickintelligence.co.uk/qlikview-caption-contest/</feedburner:origLink></item>
		<item>
		<title>A Cautionary Tale of QlikView</title>
		<link>http://feedproxy.google.com/~r/QuickIntelligenceBlog/~3/sKBbkFUyj6I/</link>
		<comments>http://www.quickintelligence.co.uk/a-cautionary-tale-of-qlikview/#comments</comments>
		<pubDate>Tue, 12 Mar 2013 12:26:47 +0000</pubDate>
		<dc:creator>Steve Dark</dc:creator>
				<category><![CDATA[Getting Started]]></category>
		<category><![CDATA[QlikView Scenarios]]></category>
		<category><![CDATA[QVD]]></category>
		<category><![CDATA[Real Life]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[issues]]></category>
		<category><![CDATA[QlikView]]></category>
		<category><![CDATA[qvd]]></category>

		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1292</guid>
		<description><![CDATA[<p>This is another tale in the series of stories from the coalface of QlikView consultancy. This time it&#8217;s a story of what can happen when organic growth of applications occurs unchecked. It is also a warning. Land And Expand One of the mantras of QlikTech sales strategy over the years has been to Land And [...]</p><p>The post <a href="http://www.quickintelligence.co.uk/a-cautionary-tale-of-qlikview/">A Cautionary Tale of QlikView</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>This is another tale in the series of stories from the coalface of QlikView consultancy. This time it&#8217;s a story of what can happen when organic growth of applications occurs unchecked. It is also a warning.<span id="more-1292"></span></p>
<h3>Land And Expand</h3>
<p>One of the mantras of QlikTech sales strategy over the years has been to Land And Expand. This phrase nicely sums up the way that QlikView can find its way into an organisation with a single user and then usage grows to more users and eventually Enterprise Server licences are required and the world is good. The phrase also ties in nicely with the way that an incredibly quick time to live can be achieved with a simple app that can then be expanded into something much bigger and better.</p>
<p>Both of these scenarios are ones I have seen happen with great success in a number of organisations. I have also seen it go quite badly wrong.</p>
<h3>We Need A Bit Of Help With Our QlikView</h3>
<p>I was approached by the company involved in this tale after they had realised the consultancy firm they had been using were not working out for them and their endeavors to &#8216;go it alone&#8217; were hitting too many roadblocks. The company in question have sanctioned this article &#8211; but will obviously not be named. &#8220;We need a bit of help with our QlikView&#8221; was the phrase they approached us with. Since then we have helped them patch up and improve many of their QlikView apps. Progress there is always a bit like wading through treacle though. Here&#8217;s why.</p>
<h3>Mark Twice, Cut Once</h3>
<p>If I had to assign a single blame to why things are so challenging at this client it would be the practice of cloning one document to use as the basis for another. Sure, this can often be a way of reducing development time and bringing consistency. However when the cloned document retains most of the same content, just with perhaps a new chart or two, it is probably not a good idea. The reasoning was often because different users wanted a subtly different view of things. This can usually be achieved by a mix of parameters, section access and show/hide conditions. If a cloned document is ever seeming like a good idea to you then there is probably a more elegant solution available that you have not yet considered. Give this some thought before you copy and paste!</p>
<p><img class="aligncenter size-full wp-image-1293" alt="Take Care When Copying" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/03/A-Cautionary-Tale.png" width="228" height="141" /></p>
<h3>Get Your Data Model Right</h3>
<p>The issues with cloned documents would be easier to deal with if the data model was correct and a decent QVD layer was in place. Frequent readers of this blog will know this is one of my <a title="Perfect Your QlikView Data Model" href="http://www.quickintelligence.co.uk/perfect-your-qlikview-data-model/">pet subjects</a>. At this client however there were no QVD&#8217;s being generated when I arrived and each of the multitude of different apps each made their own connection to the source database &#8211; running similar, but different, queries. Part of the reason for having multiple loads was that different group companies had different database instances &#8211; but a well thought out strategy of QVD use would allow each of these data sources to be merged together into a single app. This is something that has now been retrofitted for some applications.</p>
<h3>The Ultimate Sin?</h3>
<p>The thing that has probably caused me the most stress at this client is something else I have warned against on previous occasions. The use of the QUALIFY statement. This statement, whilst it can be useful for rapid profiling, should never find its way into a production environment. Any time it can save you at the start of a project will almost certainly be lost many times over as fields come through with names you are not expecting &#8211; particularly when you try and join or concatenate. Use of this statement is almost always an indication that not enough time has been spent on data design and that can only ever be a bad thing.</p>
<h3>The Happy Ending?</h3>
<p>In this series of posts I tend to end with the happy conclusion that through a combination of QlikView&#8217;s excellent software and some ingenious use of it the customer us now in a much better place. Sadly I can not honestly report the same here. Whilst many in-roads have been made to cleaning things up and consolidating the QlikView reporting; each days consultancy has been a battle against the proliferation of apps that share some common code. Many improvements have been made &#8211; but always with that nagging doubt in the back of my mind that it would be better to delete it all and start again. I enjoy a challenge when doing QlikView work &#8211; but it always more rewarding when breaking new ground rather than propping up something that has not been properly executed first time around.</p>
<p>You have been warned.</p>
<p><a title="QlikView Scenarios" href="http://www.quickintelligence.co.uk/qlikview-scenarios/">Click here</a> to see all posts in this series. Look out for the next post, coming soon.</p>
<p>The post <a href="http://www.quickintelligence.co.uk/a-cautionary-tale-of-qlikview/">A Cautionary Tale of QlikView</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p><img src="http://feeds.feedburner.com/~r/QuickIntelligenceBlog/~4/sKBbkFUyj6I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quickintelligence.co.uk/a-cautionary-tale-of-qlikview/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.quickintelligence.co.uk/a-cautionary-tale-of-qlikview/</feedburner:origLink></item>
		<item>
		<title>QlikView Include Files</title>
		<link>http://feedproxy.google.com/~r/QuickIntelligenceBlog/~3/bkqrKa5_Fy0/</link>
		<comments>http://www.quickintelligence.co.uk/qlikview-include-files/#comments</comments>
		<pubDate>Wed, 27 Feb 2013 23:55:47 +0000</pubDate>
		<dc:creator>Steve Dark</dc:creator>
				<category><![CDATA[Load Script]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Include]]></category>
		<category><![CDATA[QlikView]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1287</guid>
		<description><![CDATA[<p>When developing QlikView apps it is a good idea to develop standards that you adopt across all of your documents. A good way of ensuring these standards are followed is to use Include files in your load scripts. QlikView Include files are snippets of code that are stored as text files outside of the QlikView [...]</p><p>The post <a href="http://www.quickintelligence.co.uk/qlikview-include-files/">QlikView Include Files</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>When developing QlikView apps it is a good idea to develop standards that you adopt across all of your documents. A good way of ensuring these standards are followed is to use Include files in your load scripts.</p>
<p>QlikView Include files are snippets of code that are stored as text files outside of the QlikView app. Use of includes across multiple apps allows for effective code reuse.<span id="more-1287"></span></p>
<p>Perhaps the most common use for include files is to store database connection details. By this simple route, when database credentials require changing they only need to be updated in the include file and all documents that use that include file would then automatically use the new credentials. An other potential advantage for this approach is to toggle easily between production and test database environments by having different include files on different servers.</p>
<p><a href="http://www.quickintelligence.co.uk/wp-content/uploads/2013/02/Include.png" rel="lightbox[1287]" title="QlikView Include Files"><img class="aligncenter size-full wp-image-1289" alt="Include" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/02/Include.png" width="318" height="73" /></a></p>
<p>Database connections however are just one example of the sort of code you can place in an include file.  Things that I have used them for in the past have included setting default variable values (such as storing RGB values) and calling a routine to log the performance of load scripts.</p>
<p>The point is that anything that can go into a load script can be placed into an include file.</p>
<p>The thing to watch though is, as with using dollar sign expanded variables, that the script executes as if all code is contained in one script. So if, for example, you commence a comment block within your include file (with a /* ), but neglect to close it, all subsequent code in your load script will effectively be commented out. As QlikView is not aware of the contents of your include file as the script is being edited; the syntax highlighting will not show the subsequent code as commented. This can be quite confusing &#8211; so be careful of this when using include files.</p>
<p><a href="http://www.quickintelligence.co.uk/hidden-qlikview-features/">[Please note: see this subsequent blog post on resolving this]</a></p>
<p>Syntax highlighting is worth mentioning here, as due to your include file code being stored in a text file; QlikView is not able to do syntax highlighting for you. One way around this is to edit the code in QlikView first and then copy and paste this code into an include file afterwards. Alternatively, Matt Fryer has provided a syntax highlighting definition for Notepad++, which he has made freely available for download <a title="Notepad++" href="http://www.qlikviewaddict.com/p/qlikview-notepad.html">here</a>.</p>
<p>So, after discussing the why&#8217;s of QlikView include files, here&#8217;s the how. You simply have to reference your text file in a dollar sign expansion, with the prefix &#8220;Include&#8221;.  Like this:</p>
<h3>$(Include =..\includes\DBConnect.txt);</h3>
<p>Note the use of the relative path (the ..\ ) which means that as long add the folder structure of the .txt file and .qvw remain together the files can be moved to a new location without anything breaking. Drive letters and UNC paths are both valid here also would you want to reference a fixed location.</p>
<p>Something to watch here is that QlikView will not raise an error if your include file is not found &#8211; it will simply continue without doing anything.  This can be confusing at best when the code you thought would run does not.</p>
<p>The use of the Debug functionality in QlikView is particularly useful when using include files. Each include file opens on a separate tab in the debugger so it is quite easy to spot what code had come from where and ensure it is indeed getting executed.</p>
<p>Hopefully that has given you what you need to start using include files. I&#8217;m sure if you do use them you will be able to save yourself some time and bring a greater degree of consistency to your QlikView apps.</p>
<p>The post <a href="http://www.quickintelligence.co.uk/qlikview-include-files/">QlikView Include Files</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p><img src="http://feeds.feedburner.com/~r/QuickIntelligenceBlog/~4/bkqrKa5_Fy0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quickintelligence.co.uk/qlikview-include-files/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.quickintelligence.co.uk/qlikview-include-files/</feedburner:origLink></item>
		<item>
		<title>QlikView Optimised QVD Loads</title>
		<link>http://feedproxy.google.com/~r/QuickIntelligenceBlog/~3/MhmWMQKIRGU/</link>
		<comments>http://www.quickintelligence.co.uk/qlikview-optimised-qvd-loads/#comments</comments>
		<pubDate>Wed, 20 Feb 2013 23:29:00 +0000</pubDate>
		<dc:creator>Steve Dark</dc:creator>
				<category><![CDATA[Load Script]]></category>
		<category><![CDATA[QVD]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1284</guid>
		<description><![CDATA[<p>In previous articles I have mentioned how critical it is to ensure your loads from QVD are optimised, but have not gone into the detail of how to do this. This post rectifies that.  Here I explain what an optimised load is, why you should use them and how to perform them. The headline grabbing [...]</p><p>The post <a href="http://www.quickintelligence.co.uk/qlikview-optimised-qvd-loads/">QlikView Optimised QVD Loads</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>In previous articles I have mentioned how critical it is to ensure your loads from QVD are optimised, but have not gone into the detail of how to do this. This post rectifies that.  Here I explain what an optimised load is, why you should use them and how to perform them.</p>
<p><span id="more-1284"></span></p>
<p>The headline grabbing fact here is that optimised QVD loads are up to 100 times quicker than non-optimised ones.  That makes a lot of difference if you are watching a reload dialog, it even makes a lot of difference to your server performance if your reload is running on a schedule.</p>
<p>The reason for the vast difference is related to the much publicised compression algorithm that QlikView uses when storing data for in memory analysis. QVD files are stored in a format that mirrors the compression used in memory (which is why QVD files are so small on disk) and during an optimised load the data is sent directly from disk to memory directly in the same compressed format. When a non-optimised load is performed this is not the case.</p>
<p>So why not make all loads from QVD optimised? The simple fact is that some operations require the data to be unpacked, modified and then re-packed.   This significantly slows the process.  Just about any change to the data on the way out of the file and into memory will cause a load to be non-optimised.</p>
<p>Some examples of things that will cause a non-optimised load are:</p>
<p>- Adding new fields to the table<br />
- Deriving new values from a field in the QVD<br />
- Retrieving a field twice<br />
- Most WHERE conditions<br />
- Joining to an existing in memory table<br />
- Loading data into a mapping table</p>
<p>In contrast the things you are allowed to do are:</p>
<p>- Rename fields<br />
- Omit fields<br />
- Do a simple one field WHERE EXISTS on a field returned in the record set</p>
<p>This sounds hugely restrictive, but then most things you would want to achieve can be coded for. For example, if you need to add fields &#8211; do this in the QVD generate routine rather than when reading the QVD. Similarly, if you need to derive a value do this when you generate the QVD also. Even complex WHERE statements can be done by deriving flags or composite keys in the QVD generate routine and then doing a simple WHERE EXISTS on a temporary table (even if that temporary table is just a single row from an in-line table).</p>
<p>In fact, optimised QVD loads with a WHERE EXISTS clause on each subsequent load statement is a simple but effective way of quickly building documents which contain related subsets of data &#8211; but that is something for another post.</p>
<p>So, how do you know if your load is optimised?  Well, the first way is by noticing it is still running when you return to your desk with a fresh cup of coffee.  The other is by checking the load progress dialog.  Optimised loads show the text <strong>qvd optimized</strong> as the data is being pulled from the QVD &#8211; in contrast no message is shown when the load is non-optimised.</p>
<p><a href="http://www.quickintelligence.co.uk/wp-content/uploads/2013/02/OptimisedQVD.png" rel="lightbox[1284]" title="QlikView Optimised QVD Loads"><img class="aligncenter size-full wp-image-1285" alt="Optimised QVD Load" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/02/OptimisedQVD.png" width="370" height="241" /></a></p>
<p>Always look out for that text and if it is not there when loading from a QVD then there will be merit in reviewing your load script to make the load optimised.</p>
<p>When the incredible speed of an optimised load is really essential is when you look to build an <a title="QlikView Incremental Loads" href="http://www.quickintelligence.co.uk/qlikview-incremental-load/">incremental load strategy</a> and fresh data from source databases are combined with data previously stored in QVD&#8217;s.  If the retrieval of the old data is not quick and efficient then the whole point of the incremental load is eroded.</p>
<p>It is worth noting here however, that that a non-optimised load from a local QVD file will still typically be much much faster than from any other data source.  Sometimes non-optimised loads can not be avoided (or the development required to avoid them is not worth the time saving).</p>
<p>Hopefully this article has given you the information you need to make sure you loads are optimised, or make an informed decision to allow non-optimised loads.</p>
<p>As I have said in <a title="Perfect Your QlikView Data Model" href="http://www.quickintelligence.co.uk/perfect-your-qlikview-data-model/">previous articles</a> the back end of your QlikView document is at least as important as the front end &#8211; and ensuring optimised loads is an important part of getting the back end correct.</p>
<p>The post <a href="http://www.quickintelligence.co.uk/qlikview-optimised-qvd-loads/">QlikView Optimised QVD Loads</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p><img src="http://feeds.feedburner.com/~r/QuickIntelligenceBlog/~4/MhmWMQKIRGU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quickintelligence.co.uk/qlikview-optimised-qvd-loads/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.quickintelligence.co.uk/qlikview-optimised-qvd-loads/</feedburner:origLink></item>
		<item>
		<title>QlikView Incremental Loads</title>
		<link>http://feedproxy.google.com/~r/QuickIntelligenceBlog/~3/qef3URGi5PU/</link>
		<comments>http://www.quickintelligence.co.uk/qlikview-incremental-load/#comments</comments>
		<pubDate>Thu, 24 Jan 2013 22:12:32 +0000</pubDate>
		<dc:creator>Steve Dark</dc:creator>
				<category><![CDATA[Load Script]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[incremental]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[QlikView]]></category>
		<category><![CDATA[qvd]]></category>

		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1274</guid>
		<description><![CDATA[<p>Analysis in QlikView is lightening quick, millions of rows can be aggregated and manipulated with very little latency.  Getting those millions of records off a server elsewhere on your network &#8211; now that can be a different matter.  This is where a robust QVD strategy and QlikView Incremental Loads become crucial. I Want My QVD [...]</p><p>The post <a href="http://www.quickintelligence.co.uk/qlikview-incremental-load/">QlikView Incremental Loads</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Analysis in QlikView is lightening quick, millions of rows can be aggregated and manipulated with very little latency.  Getting those millions of records off a server elsewhere on your network &#8211; now that can be a different matter.  This is where a robust QVD strategy and QlikView Incremental Loads become crucial.<span id="more-1274"></span></p>
<h3>I Want My QVD</h3>
<p>It is always pushed as the &#8216;correct&#8217; way of doing things to have a QVD layer in any QlikView implementation.  In practice there are very few scenario&#8217;s where it does not make things easier to have a QVD layer.  Even if you are not in a situation where your are pre-processing the data once before using these in multiple QlikView apps; the ability to logically segregate data extraction and manipulation from data presentation can make development easier and less prone to errors.  The incredible speed that data can be loaded from QVD means that unit development and test of just part of the load process before refreshing presentation apps can be done without lots of waiting around.  I&#8217;ve blogged on getting data design right previously (<a title="Perfect Your QlikView Data Model" href="http://www.quickintelligence.co.uk/perfect-your-qlikview-data-model/"><strong>Perfect Your Data Model</strong></a>) and on the advantages of Optimised QVD loads &#8211; so I won&#8217;t repeat myself here.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1280" alt="QlikView Incremental Load" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/01/QVDFiles.png" width="354" height="211" /></p>
<p>Suffice to say though, whilst QVD&#8217;s are a &#8216;good idea&#8217; generally, when it comes to Incremental Loads they are essential.</p>
<h3>Why Do Incremental Loads?</h3>
<p>As BI apps are expected to deal with larger and larger amounts of data the amount of time that it takes to retrieve that data becomes a serious issue.  This could be due to shear volume of data or the need for frequent refreshes.  Either way, you do not want to be pulling all of the data all of the time.  What you want to be able to do is just pull the data that has changed, append to that the data that you stored away previously and then get back to the business of analysing.  This will reduce load on the source database, the network infrastructure and your QlikView server.</p>
<p>There are many different ways of implementing incremental loads in QlikView, and the choice of approach should depend entirely on the data that you are extracting.</p>
<p>Here are just a few examples of the approaches you can use.</p>
<h3>Date Stamped Append Only Table</h3>
<p>The easiest type of data to build an incremental load over is a table where new rows can only be appended to the end and old rows will never change.  One scenario with these tables is that a date stamp is written to each row.  Examples of these types of table are system logs or records of transactions that can&#8217;t be amended &#8211; only reversed with subsequent transactions.</p>
<p>If the data volumes here are not massive, a kind of pseudo incremental load can be done, using the fact that QlikView can load multiple files with a wildcard (as I&#8217;ve shown in this <strong><a title="Loading Data From Multiple Files" href="http://www.quickintelligence.co.uk/loading-data-from-multiple-files/">Video</a> </strong>posting).  Each time a data extract is done a WHERE statement can be done on the SQL select to only bring back the current day (or month, depending on volumes).  When the QVD is written the date can be encoded into the filename, eg. <strong>TransactionHistory_201301225.qvd</strong>.</p>
<p><img class="aligncenter size-full wp-image-1279" alt="Store With Date Suffix" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/01/StoreWithDateSuffix.png" width="677" height="34" /></p>
<p>When data is then extracted from the QVD it can be loaded with a wildcard, eg. <strong>TransactionHistory_*.qvd</strong>.  This approach is very simple, and avoids having to concatenate QVDs.  You do however need to careful to ensure that no data at the end of one period is not missed out as you have moved on to the next period before it is pulled.  The best way to ensure this is to loop through multiple periods, for example with each load refresh both the previous days file and the current day (or perhaps just do this until 2am if loading hourly).  Data volumes and refresh intervals will naturally inform decisions as to what is the most sensible approach here.</p>
<p>With anything involving dates make sure that you give proper consideration to timezones and daylight saving times &#8211; as these can cause problems if you are not careful.</p>
<h3>Append Only Table With A Unique Sequential ID</h3>
<p>If the table again can only have rows appended and there is a unique sequential ID then a different approach can be used.  The sequential ID could be a system generated number added by the database engine, or it could again be a date &#8211; if dates are recorded to the millisecond and it is not possible to have more than one transaction in a split second.</p>
<p>The first approach was straight forward, but it did potentially mean data was being pulled many times during the period each QVD was for and it also meant that many QVD files were being created.  The multiple files would take more space on disk and load slightly slower than if all data was included in a single file.  Both of those negative aspects can be avoided by always pulling data from a specific point in the table.</p>
<p>To use this approach the SQL WHERE statement will only pull records where an ID is greater than the last record that was pulled the previous time.  This value can be read from a config file created at the end of the previous run.  When all data is read in from the defined point forward a <b>peek </b>statement can be done to find the latest ID (ensure rows are read in ID order when using this approach), this can be put into a variable then a table and finally written to a CSV file with a <strong>STORE</strong> statement.</p>
<p style="text-align: center;"><img class="size-full wp-image-1275" alt="Save Last ID Code" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/01/SaveLastID.png" width="339" height="146" /></p>
<p style="text-align: left;">A similar approach to the first example could be used when the new data was pulled, so it was written into its own QVD with a suffix on &#8211; perhaps the last ID in that batch.  A better approach may however be to append the previously saved data to the new data &#8211; resulting in a single, growing, QVD.  As the previously created QVD will be in exactly the same structure a simple load from QVD will concatenate to the new data creating a single table in memory.  This in memory table can then be stored back over the top of the existing QVD.  As we are here being very precise and careful with the ID we are loading from and up to we can be confident that the resulting QVD will have each row only once and not be missing any rows.</p>
<p>Again, with this approach you need to ensure your assumptions about the data and the ID are correct and take care with the appending.  If the size of the dataset allows it is always good to have a fallback routine that does actually pull all data from source &#8211; perhaps just run over the weekend to ensure data consistency.</p>
<h3>Free Form Data With Modification of Existing Rows</h3>
<p>Unfortunately we often are not living in a simple world where ID&#8217;s are sequential and any row once created can not be changed.  Often changes to rows can be made at any time and the data we have in our QVD&#8217;s can become stale and need to be replaced.  This can still be dealt with using a QlikView incremental load, it just needs a bit more work.  Two things are however required to allow us to do this, firstly a timestamp or audit table to say something has been changed, and secondly a unique key.  If the database provides a unique key then this can be used, if not one may need to be created by concatenating fields until uniqueness can be guaranteed (perhaps combining Operator Code and DateTime for example &#8211; if you know an operator can only make one change per second).  This key will be used later.</p>
<p><img class="aligncenter size-full wp-image-1278" alt="Build OrderID" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/01/BuildOrderID1.png" width="583" height="76" /></p>
<p>As with all the other incremental loads described the SQL statement used to extract the data will have a WHERE statement on it.  This time it will be to return rows where the timestamp is since a specific point in time.  Unlike with the previous load where we had to be very precise with the point we were loading from; we can allow ourselves some slack here &#8211; perhaps on a daily load you may chose to always pull four days of data, so if the load failed for a couple of days it would still backfill the data that had been missed when it next ran successfully.</p>
<p>When the data has been loaded we will have some brand new rows and some that exist in the QVD we have already built and been adding to previously.  We still want to do an append from the QVD to concatenate to the new data &#8211; but this time we will explicitly exclude any rows that we have just pulled from the database with a WHERE statement in the QlikView load.  The syntax is simply <strong>WHERE NOT EXISTS (IDField)</strong>.</p>
<p><img class="aligncenter size-full wp-image-1276" alt="Where Not Exists" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/01/WhereNotExists.png" width="371" height="156" /></p>
<p>Only rows where the ID is not already found will be loaded from the existing QVD.  This is why uniqueness of ID is critical, as even if the ID exists twice in the source it will only be kept once in QlikView.  Again, after the data has been combined it can be stored back over the existing QVD.</p>
<p>This approach is perhaps the most robust of the incremental load methods I have described here &#8211; and it is certainly the way I have implemented incremental loads most frequently out on client site.</p>
<h3>Final Considerations</h3>
<p>As with any system build, due consideration has to be given to incremental loads.  A significant amount of bullet proofing may be required around the solution.  For instance &#8211; you should code a check to see if the existing QVD is there before attempting to append it, so that the code runs first time before a historical file exists.  Make sure there is a plan in place for dealing with database or network failures.  A flag at the start of the load that changes it from an incremental load to a full one is a good &#8216;get out of jail free&#8217; trick, so if there is any concern about the integrity of the data it can be pulled in its entirety from source.  If data volumes, or even the existence of historical data beyond a certain point (eg. where logs get purged from the source system but are required in QlikView) mean that a full refresh is impossible it is absolutely critical that QVD files are backed up.  The creation of a backup can even be written into the QlikView load script &#8211; so there is not reliance on an external process.</p>
<p>Two final points that are important anywhere, but have specific relevance to incremental loads; ensure that loads from QVD&#8217;s are Optimised wherever possible (Google this if you are not aware of Optimised vs. Non Optimised loads) and make sure that if you are loading from multiple sources into a single table you ensure that the columns from all sources are identical (if they are similar but not identical a massive synthetic key can be created and things can fall over very quickly).</p>
<p>Hopefully this has given food for thought as you go on and design your own incremental data loads.</p>
<p>The post <a href="http://www.quickintelligence.co.uk/qlikview-incremental-load/">QlikView Incremental Loads</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p><img src="http://feeds.feedburner.com/~r/QuickIntelligenceBlog/~4/qef3URGi5PU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quickintelligence.co.uk/qlikview-incremental-load/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.quickintelligence.co.uk/qlikview-incremental-load/</feedburner:origLink></item>
		<item>
		<title>Ignore The Big Picture</title>
		<link>http://feedproxy.google.com/~r/QuickIntelligenceBlog/~3/AzOrBFHyWA8/</link>
		<comments>http://www.quickintelligence.co.uk/ignore-the-big-picture/#comments</comments>
		<pubDate>Fri, 18 Jan 2013 17:06:16 +0000</pubDate>
		<dc:creator>Steve Dark</dc:creator>
				<category><![CDATA[QlikView Scenarios]]></category>
		<category><![CDATA[Real Life]]></category>

		<guid isPermaLink="false">http://www.quickintelligence.co.uk/?p=1271</guid>
		<description><![CDATA[<p>QlikView is a tool that is enterprise ready and able to step up to those really big BI projects. One of the pitfalls though is to miss the tactical wins you can have with it and get bogged down working towards a management information utopia. In this next post in my tales from the front [...]</p><p>The post <a href="http://www.quickintelligence.co.uk/ignore-the-big-picture/">Ignore The Big Picture</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>QlikView is a tool that is enterprise ready and able to step up to those really big BI projects. One of the pitfalls though is to miss the tactical wins you can have with it and get bogged down working towards a management information utopia.</p>
<p><span id="more-1271"></span>In this next post in my tales from the front line series I want to look at a situation where an &#8216;under the radar&#8217; quick win was exactly what was needed to progress towards the global enterprise roll out that was the goal. First though, some background.</p>
<p><img title="More..." alt="" src="http://www.quickintelligence.co.uk/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" /></p>
<h3>Becoming The What It Was The Alternative To</h3>
<p>Back when I first discovered QlikView it was sold as an alternative to dinosaur BI solutions. Products that require an 18 month project before the first report can be delivered. Delivery in weeks and not months was the mantra.  Happy days!  However, as the product has matured and QlikTech has grown they are now gunning for (and winning) sales in massive clients where long projects are the norm and lucrative consultancy is up for grabs.  Project scopes have grown and time-scales have stretched &#8211; but QlikView is better than ever at delivering those quick wins. Don&#8217;t miss out on these opportunities by only looking at the end game!</p>
<h3>QlikView Saves The Day(s)</h3>
<p>So, on to a real life scenario. I was on site at a client where a big global roll out was the goal. The tender process was over, the requirements had been written and agreed and I had arrived on site to begin the first phase of the build.  A problem had arisen though &#8211; the data hadn&#8217;t arrived yet.  The data that was to be feeding into this app was being collected by sending out template spreadsheets, having them filled in by each office and receiving them back in via email. This was proving to take longer than expected. The person that was copying and pasting the data from each of the received spreadsheets was finding that some of the offices had decided to add columns of &#8216;helpful&#8217; annotations &#8211; or deleted columns that they felt were not applicable. They were not even sure who hadn&#8217;t yet returned their spreadsheets. The estimate for getting this task completed was two weeks , full time, by one very dejected looking staff member.</p>
<p>Fortunately, I got talking to the guy doing the copy and paste exercise whilst I was waiting for someone to set me up with access to a database. I told him what I was doing for the company, introduced him to QlikView and suggested I should look at pulling the Excel files in for them. It was then agreed that I should do this.</p>
<p>Given the inconsistent source files (and some information in header rows rather than the columns) a load with a wildcard in the filename was not possible. However I created a load that enumerated around the files and pulled each of them in. Each row was stamped with the source file name and some metadata about the file. The first pass of this took a little over an hour to build.</p>
<p>Once the data was in things did not look pretty. There were supposedly boolean fields with values of yes, no (as expected) and a pile of other values. But, by selecting the other values a list of corrupted filenames was given. By performing a substring on the filename I was able to get a code for each office which could then be linked to a file of details for each office. Now along with the dirty data values and the filename containing the duff values we could see where to return the file to get it fixed.</p>
<p>After a bit more time doing battle with the header values (which were naturally not all in consistent cell positions) all of the data was loaded in and could be written to a CSV file during the load process (using STORE) &#8211; ready for import to the database.</p>
<p>A process that was due to take weeks took only a couple of days. The profile of QlikView was raised in the business and the guy who was going to be spending days in copy paste misery was able to learn a bit of QlikView and assist in the next phase of the project.</p>
<h3>Seek Out The Low Hanging Fruit</h3>
<p>Something I always try to do when arriving on a new client site is to work out where there is low hanging fruit.  If QlikView is already in use there will invariably be load times that can be shortened or memory that can be saved.  If the client is new to QlikView then there will usually be someone who is spending far too long manipulating spreadsheets, perhaps repetitively on a weekly or monthly basis.  Spotting those tasks that can be replaced by an automated QlikView solution can often bring the biggest and certainly quickest return on investment &#8211; regardless of what QlikView was actually brought in to do.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1273" alt="Low Hanging Fruit" src="http://www.quickintelligence.co.uk/wp-content/uploads/2013/01/fruit.png" width="95" height="99" /></p>
<p>This is the fourth in a series of blog posts of tips from the coal face of QlikView consultancy. View the entire series <a title="QlikView Scenarios From The Coal Face" href="http://www.quickintelligence.co.uk/qlikview-scenarios/">here</a>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="http://www.quickintelligence.co.uk/ignore-the-big-picture/">Ignore The Big Picture</a> appeared first on <a href="http://www.quickintelligence.co.uk">Quick Intelligence</a>.</p><img src="http://feeds.feedburner.com/~r/QuickIntelligenceBlog/~4/AzOrBFHyWA8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quickintelligence.co.uk/ignore-the-big-picture/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.quickintelligence.co.uk/ignore-the-big-picture/</feedburner:origLink></item>
	</channel>
</rss>
