Data governance in QlikSense (Part 5 - Final)
Dictionary loader workflow (Contact me for load source code)
The flow for the Business Dictionary load module is straightforward and can be summarised into the following steps …
The loader requires a connection to the repository, during development a ‘SQLServer 2014 Express’ connection was used, in production the connector should be to the database product (assumed to be SQLServer enterprise) and the environments at should be DEV, UAT, PROD hence the BusinessDictionary will need to be replicated across these environments (for example by schema partitions).
2: Table load
Once the connection has been established the loader will import the definitions into the QlikSense model (there are no associations established in the model, it is a data island), the table is used for the creation of the variables, in addition to this, it is the basis for the dictionary display sheet, see screenshot (dict_1) below.
The predicate used for the import is determined by the 2 mandatory variables that have been defined in the header of the module, stated on the previous post of this blog, in addition the scope is included as part of the predicate to include client specific expression variables.
3: Variable creation
The script will loop through each table row extracting attributes and create the variables required for the application, during the import process, a test is performed on the var_type to establish if the variable is to be evaluated on the fly in the app (i.e. Calculations) if this is the case, the var_type will be set to ‘expr’ in the dictionary.
For constants the var_type will be ‘string’. Most of the time for QlikSense ‘expr’ is used.
Screenshot (dict_1) …
That's it in a nutshell, get in touch if you want to know more and even get in implementation happening at your enterprise.
This is also very workable in QlikView which is where my original design evolved from.
The only thing that has not be touched on at this stage is a front end UI to maintain the dictionary and deployment tracking , at present it is a manual process. A UI would streamline this process completely, maybe one day if time prevails I will code something (Browser based of course)