Developing content in Tableau does not require traditional source control or dev-test-prod techniques. However, you may wish to integrate the Tableau content development and deployment into your existing development systems. In this article, we specifically cover dev-test-prod and source control.
If you have a workbook that is in development or test modes and needs to be promoted to the next steps, you may have to do one or both of these things:
To point the workbook to a different datasource, you can use the Document API to modify the connection string of the workbook. If the workbook is already on Server, you will need to:
The technique for promoting inside of Tableau Server depends on whether you separate your environments with projects, with sites, or with different servers. To promote from one project to another, simply use the REST API Update Workbook endpoint to change the project.
To promote from one site to another:
To promote from one server to another, use the site-to-site technique, but you will have to sign in to the new server with the REST API to publish.
Here are some samples:
Tableau Server has built in revision history, but you must enable it for a given site. Once enabled, it stores each published version of a workbook or data source, with full access to download or restore back to a given point. Revision history can also be accessed via the Tableau REST API, so this functionality can be integrated in with other tools you have.
The Tableau content files (TDS and TWB) are XML files and thus can be easily stored in any sort of external revision control system. When you create an extract (TDE) or save a packaged workbook (TDSX or TWBX file), the files are binary and thus source control is less useful. Doing diff processes on workbook and data source files is not particularly useful, since there is no real easy way to merge changes with Tableau files, but having a check-in process to manage who is working on a workbook or data source can definitely have advantages.
For a more detailed discussion of the above topics, see this blog post.