Prior to Tableau 9.2, if there was a published data source on a different site with the same name (and table structure) as on the first site, you could publish a workbook connected to Site 1 originally to Site 2 and it would work just fine. Tableau 9.2 introduced a stricter test, so that you actually need to change an additional tag in the datasource section. I’ve updated the tableau_rest_api library (version 2.1.3 and above) to correct for this, although now you need to call publish_datasource with an extra parameter check_published_ds=True. (This is all documented in the guide, section 5.2 )
Note: This is fixed in 10.0 , so that it is unnecessary to modify the XML to publish to another site. It just works (in tabcmd and the REST API) like it did in 9.1 and bfore.
Let’s say I have a data source called “Embedded Credentials Test” on my site called “doppelganger”. I’ve connected my workbook to this published data source. In the XML, I will find the repository-location tag (only workbooks that connect to a published data source have this tag).
<repository-location id="EmbeddedCredentialsTest" path="/t/doppelganger/datasources" revision="1.0" site="doppelganger"/>
To publish this workbook successfully on another site, I need to change the site_content_url in both the path and the site attribute to point to my new site. If I have a site called “production”, the tag will need to change to:
<repository-location id="EmbeddedCredentialsTest" path="/t/production/datasources" revision="1.0" site="production"/>
Even better, when you are on the default site, the site attribute is just missing, so it looks something like:
<repository-location id="EmbeddedCredentialsTest" path="/datasources" revision="1.0" />