Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
jensmunnichs
Creator III
Creator III

Some questions about the QDF

Hi everyone,

I'm currently doing an internship where they've asked me to investigate the Qlik Deployment Framework in order to find out if and how we should implement it to replace our current Qlikview structure.

While investigating, I ran into a few things I'm unsure about, and in order to avoid having to spam these forums, I thought I'd gather a few before starting a thread.

  1. Is it possible to create variables like 'QVDPath' for folders created within the standard QDF containers? So say I create a folder within 1.Application for all finance related apps, called 'Finance', will the QDF automatically create 'vG.FinanceApplicationPath' or something similar?
  2. When removing one or some of the original 9 containers, would you recommend keeping the numbering consistent (for example, 2.QVD stays 2.QVD even if there is no 1.Application) or would you change the numbering to always be 1-n? Will the QDF initiation break if I do change the numbers?
  3. Would it be better to always number folders, even the ones that aren't included in a fresh QDF installation? Is it just preference or are there any technical reasons to do/not do this?
  4. Where would you store archived files? I'm thinking my options are in 0.Admin, in its own container, or separate from the QDF entirely.
  5. Is it possible to initiate the QDF while only using include files from 99.Shared? I know it's easy to point at 1.Init in the Shared container, but I think 1.Init will always try to find the Sub files it needs in vG.SubPath. If it would take these from Shared it would mean we don't need these files in every container, only in 99.Shared.
  6. My company wants to start using Qlik Sense alongside Qlikview in the future. Are there any major differences between the 2 to consider when setting up/using the QDF? I am aware of the need for LIB mounts as described in the getting started guide for Qlik Sense.
  7. In the same vein, is the variable editor still only available for Qlikview? While we will still be using Qlikview when we first start with Qlik Sense, I don't know if there are any plans to completely drop Qlikview in the future, but if so this might be good to know.

If anyone could help me out, even by answering 1 or a few of these questions, I would greatly appreciate it

Thanks in advance!

7 Replies
jensmunnichs
Creator III
Creator III
Author

Anyone who can help me out? Sorry to bump this but I don't really know where else I could ask these questions.

jensmunnichs
Creator III
Creator III
Author

Last time I'll bump this, hope someone can give me some answers

Anonymous
Not applicable

Hi,

Some answers

1. I have not tested for some time however if you create sub-folders under the QVD folder variables are created. I.e. say you have QVD\Load QVD\xForm, QVD\xTract then you get variables vG.Load, vG.xForm, vG.xTract. I am not sure if the same features exist in other folders.

2. You can re-order the sub-folders. This is done in under 0.Administration\0.Template. Previously there was an issue when changing numbers. However I believe this was resolve in v1.7

3. Numbering is just for a sort order. So I would recommend just being consistent.

4. Archived files are an interesting point. Do you archive any other files in addition to application files? I.e. configuration files, variable files etc. I tend to leave in place so you can easily restore a version.

5. With Sense I use the QDF differently to View. I just point at the shared location to load the sub-routines etc. The primary reason is that in Sense we have data connections so I find the need for containers for each project to be overhead. In answer to your question the QDF will attempt to load the sub-routines locally and then to the shared location.

6. As per 5, i tend to use the QDF slightly differently in Sense than View. In saying that it is compatible. Importantly it ensures that a consistent approach is applied. Also if you leverage the more advanced features such as Load QVDs you can easily leverage artefacts across both sites.

7. I don't use the variable editor at all. Rather I just edit the related csv(s) directly with a notepad editor. I.e. notepad++ or similar.

jensmunnichs
Creator III
Creator III
Author

Hey Damian,

Thank you very much for your response

Clear answers, but they do bring up a few more questions. I hope you don't mind.

1. When I try this for any container (even QVD), no new variables are created. Do I have to add these to the container map somehow as well? Or do I have to change something in the initiation files for this to work?

4. We currently only archive applications, QVDs and import files (mostly Excel). Variable/Sub/Config files aren't really used yet, but probably will be once the QDF is in place. The main reason we want to create an archive separate from the rest of the files is because they currently really clutter up our storage. In order to avoid this clutter in the new structure, I want to make sure there is a space to store old files so they don't just get left where they are.

Not really any new questions for 4, I guess it's just a matter of preference, as the archived files are rarely referred to in applications.

5. It does not seem like my QDF is loading subs from the shared folder when they aren't in the local folder. I've tried:

     - 1.Init in local, rest of 1.BaseVariable and 4.Sub in Shared, initiate from local
     - 1.BaseVariable in local container, 4.Sub in Shared, initiate from local

     - 1.BaseVariable and 4.Sub both in Shared, initiate from shared
     - 1.BaseVariable and 4.Sub both in local, initiate from local (this works, but isn't really what I want as I'd need to store      a copy of these files in every container

I'm probably just doing something wrong, but I don't know what. Any ideas?

Again thanks a lot for your reply

swallace104
Contributor III
Contributor III

Late to the party but I'll try to answer.

 

1. Whenever you create subfolders in any of the main folders you can just append them to the folder variable the new folder is in. So for instance I create 1.Extract, 2.Transform and 3.Load in 3.Include/3.Custom for all my models. I reference qvs files in those folders like so 

$(Include=$(vG.CustomPath)\1.Extract\1.Extract_Member_Coverage.qvs)
 
vG.CustomPath is the global variable already built for 3.Include/3.Custom and I just append the sub folders. However, if you want to create a variable for the full path you can using the Global Variable Editor qvw. (VariableEditor.qvw) or in 3.Include/1.BaseVariable/4.Custom.qvs , the ones created in the variable editor are housed there. If you do this in your template folder then they will be included in all your new containers. 
 
 
For 5
I use qliksense and I ended up having to use the following script to get everything working properly, I was never able to get it to work the way the documentation mentions for single connections. 
 
I created a Root data connection that connects to the folder that all my containers are housed in.
 
Then I created a separate data connection that connects to the 99.Shared_Folders folder. 
 
Additionally I always end up having to copy InitLink.qvs out of one of the containers into the root folder to get everything working. But this setup works perfectly after those changes, no idea why I ended up having to modify the installation like this but it's been a year since I set it up and I haven't gone back to verify if newer versions fix whatever issue I was having. 
 
I use the following code block to initiate QDF in my apps. In any given app I specify which model(container) I want to use and then indexLoad whichever version of that model I want after I initiate QDF. The LCGV call loads up the shared folder and all the additional scripts. 
 
//Initiate QDF
SET vG.HomeContainer='lib://Root\20.CIN';
$(Include=lib://Root\InitLink.qvs);
call LCGV('Shared');
jensmunnichs
Creator III
Creator III
Author

Hey, I'm so sorry, I never got a notification for this so I only just read your reply. Thanks for your advice! Some useful information in there 🙂
swallace104
Contributor III
Contributor III

No problem, glad it was of use!