2 Replies Latest reply: Feb 10, 2014 4:58 PM by Michael Fenton RSS

    Standard Pattern for using QVD files

    Michael Fenton

      Are there any standard patterns for using QVD files in the QDF?


      In particular, how should the user apps load the data generated by the QDF generator apps?


      I assume that each Generator will always reside in it's own System container (eg.  99.System_NorthWind). 

      I also assume that the Generator apps save the QVD files into their own local 2.QVD folder using vG.QVDPath.  Please let me know these assumptions are ill-formed to begin with.

      From here is see a few options:

      1. A separate process copies those QVD files to the local 2.QVD folder in each User app container where they are required.  This seems inefficient to me, but an advantage is that the User app containers do not require any special permissions or access to any other containers.
      2. The User app accesses the QVD files directly in the System container using a linked container (LoadContainerGlobalVariables).
      3. The User app accesses the QVD files directly in the System container using a customer global variable.


      Have I missed something in the document that answers this question?


      For context, I am expecting the implementation at my current site to be fairly simple.  They are on Small Business Edition (no Publisher) and there will probably be 5 to 10 source systems and less than 20 user apps.  I expect to only have 2 tiers of ETL (ie. no separation between Extract and Transform).

        • Re: Standard Pattern for using QVD files
          Magnus Berg

          Hi Michael, good question. You can either Pull or Push data between containers. Where pull is the "default" meaning that applications in a container (ex HR) can access and pull data from the system container by using function call LoadContainerGlobalVariables('NorthWind','QVD') this creates a global variable link to NorthWind container (vG.NorthWindQVDPath). This method should be used as long as HR have security access to the data inside NorthWind container. The Push option only applies when the business do not have access the system container but still need some of that data. For this we have created the QVDMigrate function call that will push data (qvd, fields, scramble sensitive data) to the HR container from NorthWind.


          In your case best practice is to create a System Container for each of your sources, put qvd loader and connection string in each of them (if you use qvd loaders). Create a single "company" container and pull the needed data from the sources by using the LoadContainerGlobalVariables function. This will create a very easy to understand structure, you will have the LoadContainerGlobalVariables in the beginning of the apps so that newcomers understands what data sources the apps are using, and the scripts becomes easy to read. Also use Global Variables in the "Home" Container to put the business logic. Folders in the containers not needed can be removed (like Mart, Import,Export).