I use tabcmd to print a PDF of the only dashboard in my workbook. When I first implemented the tabcmd functionality, I was not able to script more than 30 PDFs (1 PDF for each territory - 150 total territories). After reviewing other discussions, I converted the "Live" Excel data connections to extracts. This worked like a charm - all 150 PDFs were generated. The Vizqlserver performed just fine.
I recently implemented some conditional formatting within one of the worksheets for the dashboard, and it required the use of dual cross-tabs - one to display the measured value, the other to apply a background color for the "cell" if the value was above or below a percentage of the baseline value. As soon as this was implemented, I noticed the rendering time of the dashboard in Tableau Server increased significantly. When I attempted to generate the PDFs with the new conditional formatting feature, it would generate approximately 30 files before the process began to fail (and fail consistently). Previously when this failed, Tableau Server would allow navigation through the different folders but would not render any views. This time, navigation is still available, as well as rendered views.
My first attempt to optimize the workbook was to convert all data sources to database tables. This resulted in minimal gains. My second attempt involved the conversion of a blended table to a joined table. This did improve performance. I am now able to generate 60 PDF files. This, however, requires too much babysitting. Once the process fails, subsequent restarts will result in 1, 5, maybe 10 more PDF files before it would consistently fail. If, on the other hand, I restart Tableau Server, it will generate another 60 before it begins to fail.
Is there anything that I can do/review to further optimize this process? Ideally, I could set it and forget it - all 150 PDF files would get generated without manual intervention. My planned work-around is to script a Tableau Server restart (with the appropriate timeout to ensure Tableau Server is back on-line) after every 50 reports. This, however, is not very elegant (or clean).
Please let me know if I am missing something.