I tried to simplify in the discussion my challenges, but it probably makes more sense if I'm giving you the whole background.
I do have a 5.1GB application which is used by multiples users, loaded daily and basis for my reportings. There are around 100 reports I need to create on a monthly basis, most of them fitting in 7 different layouts. Each report is sent to different receipients which are always only allowed to see their part. Basis is a kind of supplier grouping which we do maintain in one field.
Those are the different layouts:
This means in layout 1 we are showing to the receipient the company and the Cost of goods sold for a certain supplier grouping.
I want to sent to recipient A in the layout 1 only the numbers of the suppliergrouping AA, etc (cf. table below).
Currently I have created one report for each layout. I have added in the task different receipients with their filter.
I have tried out different options so far - all taking a long, long time to run through:
- For the "easy" layouts it is taking less than 10 minutes to create 1 report with 1 receipient, for layout 4 or 6 it takes me 90 min for one report.
- If I'm creating two outputs of the same reports (different filter / different receipient) it takes me around 1.5 the time I need for one report
- If I'm creating two reports with the filter on the supplier grouing and adding to each the receipt or if I'm creating one report and filtering on the suppliergrouping in the receipt - it doesn't make any difference how long it does take to run the report.
(eg. one report with Layout 1 with the filter AA and AB in recipient A and B or two clone reports with each a filter AA and AB have the same timing for the creation)
Now I have seen that there are cycles, so one report layout is done and then there are cycles which are running for the different filters. So I wanted to try it out, if this is perhaps reducing the time for the report creation
The filter for the cycle should be done on the suppliergrouping field. This field is containing around 1000 entries (estimation), but I only need to run it for 100 entries. Each entry should create a separate report which should be sent to a different recipient.
First question: is this possible?
Second question: will this speed up the reporting creation process?
I have attached a qvw file which is sampling the entries as well as the xlsx file (source file & containing the expected report - each of them should be in a separate excel file sent to different persons).
So many thanks for your help!
Well that definitely is more to work with. I think what you are trying is doable. I will say with the size of your app, that you need to come up with a way to only have Qlikview send the requested data for each report to NPRinting rather than the whole set, which is what happens when you use filters in the Client.
I have an app that is 14 GB and I use this method of only polling data by current selection using variables.
If I don't make any current selections and try to let Nprinting filter with that much data, it does take 20 X or more longer to render a report.
Here is a quick test for you. Trying making current selections in your app and running one of your reports in your client to see how long it takes to render. Make a new report or clone one and disable the filters.
When I get a few moments, I will try to look at your attachments
Good Luck and HTH
many thanks for your quick answer!
What is On-Demand?
I will try it with the current selections. So far I do have the setting in the connection to clear all selections. Background : I do have some selections in the application which is for the users of this application but I need to have them cleared in NPrinting.
Is there a way to do selections in QV with NPrinting? I'm not sure if I got how this is working.
Many thanks for your help!
On-Demand is a way to run your reports from an Access Point login in your app using buttons. You would need to have QV Server to do that.
For now, when you are working in your Nprinting Client, it opens a copy of your QVW file locally while you are editing your template. Don't choose clear selections. Make the selections you are making with your filters. Then do a preview of your report and see how long it takes to render.
Nprinting will only aggregate a limited data set based on your current selections to build your report.
If you rely on using filters and clearing the selections, then NPrinting has to gather all of the possible data needed to build the report and then on the NPrinting side, it filters to only display what it needs.
It is a significant difference in performance.
If your app was 200 MB and not 5.1 GB, it would be a lot less of an issue.
So, use Current Selections to reduce the possible data set that Nprinting has to consider just to see if your report render quicker. If so, then the link to the thread in the last post will help you use variables to reduce your data set for reports.
First step to solving this is to find out if your report renders quickly ( or tolerably ) using current selections as your filters.
Let us know,
For your info - we are on a server and I'm not working locally on my PC, but directly on the server.
I was trying your advice this night. I was doing a copy of the application, saving it with the selections I'm normally having in the report. Then I let run 7 reports (with the different layouts) over night. Unfortunately the result wasn't the expected one, in contrary it took even (for all 7 reports) 3times longer than when I'm having the setting "clear all selections" in the connection.
Any idea what I'm doing wrong?
Many thanks to you!
After reviewing your uploaded files, it is my opinion:
The crux of your problem is the size of your application. You may also have some memory issues that could affect your server performance. We have 32 GB of memory available to our NPrinting server, for use with our larger QVW. You should have at least 16 GB.
As previously stated, you either need to reduce the size of your QVW or make current selections, so that Nprinting will be getting a smaller batch of data passed across from the QVW when you run your NPrinting scheduled tasks.
Can you reduce your data in your QVW? Maybe you have several years of data you can eliminate or fields that are not used?
In the Nprinting Filters vs Current Selections thread link above, I described how to use variables to trigger current selections for a task. I have run more than 1000 scheduled tasks in an evening and my app is 14 GB with this method.
To give you any more comprehensive assistance, I think I would need to see your QVW and Nprinting files.
It sounds like you may need some help from your local Qlik Partner to complete this task.