Refreshing Server Extracts from Command Line – The Two Approaches

 In FOR EVERYONE, just blog, Tableau

I see TabCmd Install Promptseveral questions related to refreshing a data source or workbook on a remote Tableau Server. The rules are easy, we have two different tools that are working pretty differently. Let’s see what the differences and when to use each tool.

Tableau Data Extract Command-Line Utility

This is a command-line utility that comes with Tableau Desktop (  is this utility, while tableau.exe  is the Desktop GUI itself – pretty confusing, I have no idea why they’re using the same executable name). With this tool you are practically download the data source definition (tds) from the Server, refresh it locally with your Tableau Desktop libraries and send it back to the Server after it has been refreshed.

The speciality here is that it does not use any resources on the Tableau Server except for downloading the TDS and uploading the extract. Everythin happens on the client computer, so it could access additional resources like local files or network resources that the server cannot. However, the client should have the necessary middlewares (like ODBC drivers) to be able to refresh the extracts. It supports external configuration file.

When is this tool is useful?

  • Use with Tableau Online or other Tableau Servers where you need extracts from local files or firewalled resources.
  • Bypass Tableau Server background/async job queues as it does not use backgrounder slots.
  • When extract refresh requires special authorization or middleware what the Server does not have.


  • It works only with published data sources but does not with workbooks with embedded data sources
  • Uses local computer resources, if you have slow computer completion will take more time to Server

TabCmd Utility

Tabcmd is the “server command line utility” to perform server-side tasks. It uses the clientxml API to instruct server to do some stuff for us, including running schedules (executing set of tasks including extract refreshes) or directly refreshing schedules. Everything will happen on the server and your client exits immediately except when you specify –synchronous  since that waits until the operation completes in backgrounder.

In addition to data sources you can specify workbooks as well, by URL or by Project/Name pair.

When is this tool is useful?

  • When Tableau Server or Tableau Online can access the data source
  • You want to utilize  Server resources


  • Depending on the background jobs queue length the execution can be delayed

Sound easy? It is. Anything to add? Drop a comment!

Contact Us

We're not around right now. But you can send us an email and we'll get back to you, asap.

Not readable? Change text. captcha txt