Scheduled extract refreshes and subscriptions are run in this order:
- Any task that is already in process is completed first.
- Any task that is manually Run Now will start when the next backgrounder process becomes available.
- Tasks with the highest priority (the lowest number) start next, independent of how long they have been in the queue. For example, a task with a priority of 20 will run before a task with a priority of 50, even if the second task has been waiting longer.
- Tasks with the same priority are executed in the order they were added to the queue. The first task added to the queue will be started first and the second task added will be started next.
- When multiple tasks with the same priority are scheduled to run at the same time, they are started in the order were created or enabled. There is no distinction between extract refreshes and email subscriptions.
The following limitations also impact when scheduled tasks run:
- Tableau Server can only run as many concurrent tasks as there are backgrounder processes configured.
- Separate extract refreshes for the same data cannot run at the same time.
- Tasks associated with a schedule that uses serial execution must run one at a time.
One other method of scheduling extract refreshes that is useful to know is tabcmd runschedule.
With this command-line call, you can trigger the execution of a Tableau Server extract refresh schedule according to when it is optimal to refresh them, say, at the end of an ETL cycle for your data. For example, we pull down incremental changes to our Salesforce data into a SQL Server database as often as possible (this turns out to be every 25 minutes or so), perform some custom tranformations to it, then, within the SQL Server Agent Job, we make the a call to run the Tableau Server schedule responsible for refreshing the most critical and time-sensitive data extracts we have that are based on the Salesforce data.
Doing this allows us to avoid refreshing our data extracts at inopportune times, as would likely happen if we refreshed them on a simple time-based schedule.
Please look into this post there is very useful information:Suggestions on Prioritizing Extract Refreshes
We are refreshing the extracts using tabcmd refreshextracts, as and when their underlying data gets processed in our application.
Say data corresponding corresponding to 4 tableau workbooks gets processed in out application at the same time.
Now say I have 1 backgrounder running on the server which starts refreshing Workbook 1.
What I want is that instead of refreshing Workbook 1 first, it should refresh Workbook 4 first, then Workbook 3->2->1.
Is there any way to do that by setting some priority?
Yes i got your question .you can set set the priority for the refresh extracts in tabcmd refreshextracts .
You need to use the synchronous option with tabcmd Refreshextarcts command.
Adds the full refresh operation to the queue used by the Backgrounder process, to be run as soon as a Backgrounder process is available. If a Backgrounder process is available, the operation is run immediately. The refresh operation appears on the Background Tasks report.
During a synchronous refresh,
tabcmdmaintains a live connection to the server while the refresh operation is underway, polling every second until the background job is done.
As mentioned in your post, synchronous option will guarantee a live connection with the server, and will refresh extracts as and when resources are available.
Can you please elaborate, how I can prioritize the extracts using this option.
Also I have read in some posts that if we use synchronous option, the extracts will not appear in the backgrounder queue and we won't be able to monitor those extracts.
tabcmd refreshextracts --synchronous
if you use the --synchronous option, the tabcmd connection will remain live until the TDE refresh is complete. It will then return a message alerting if the TDE refresh was successful or not.