The $(Include) which you $(Must_Include) into your toolkit
As your QlikView deployment grows in size it can quickly get unwieldy unless you start imposing some sort of structure and standards to it. In Computer Science we sometimes talk about Separation of concerns, http://en.wikipedia.org/wiki/Separation_of_concerns, although it is not 100% applicable for QlikView it does make sense to try to split the different pieces of a QlikView document apart into re-usable components.
To help you with that QlikView has the functions Include and Must_Include.
Essentially what this allows you to do is to create reusable snippets of load script that you can then re-use across your deployment. All of those connection strings to databases are prime candidates for a include statement, 1 statement that can be referenced from multiple documents and 1 place to change it when your connection string changes.
Connection strings are just one example, I've used it in the past to store the corporate graphical profile as variables that I can then include in all my documents or why not a standard calendar and date formats?
Our own Qlik Deployment Framework also heavily relies on Include statements to allow apps to be portable between different servers and to promote code re-use. You can join the QDF group here, QlikView Deployment Framework
So how do I use it? To quote the help file,
$(Include =filename ) $(Must_Include =filename )
The include and must_include variables specify a file that contains text that should be included in the script. The entire script can thus be put in a file. This is a a user-defined variable.
The difference between include and must_include is that include will fail silently if the file is not found during script reload, while must_include will throw an error if the file is not found.
We make use of dollar sign expansion to expand the contents of an external file into our load script. The file path supports both absolute and relative paths making it ideal for portability between test and production servers.
If you ever were a fan of Inception then you could start structuring your Include statements with nested dollar sign expansions to manage where to load the Include files from,
let env = '<A absolute or relative file path, for example ..\Config\Test\>'; $(Include=$(env)\ConnectionString.txt)
This will also be my last post for the Design Blog, unless I make a guest appearance , so I hope you have enjoyed reading my posts as much as I have enjoyed writing them.