• Stars
    star
    120
  • Rank 295,983 (Top 6 %)
  • Language
    C#
  • License
    MIT License
  • Created about 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A lightweight tool for moving Tableau content between multiple Tableau Server environments

TabMigrate

Community Supported

What is TabMigrate?

TabMigrate is a lightweight tool for moving Tableau content between multiple Tableau Server environments, such as test and production Tableau Servers or sites. It can also be used to provision sites with Workbooks and Data Sources from a local file system. TabMigrate also allows you to produce a CSV file containing an inventory of the site’s users and content; useful for analysis in Tableau.

Often there is a need to copy a set of content from one Tableau Server environment into another. Sometimes this need is across different Tableau Servers (or Tableau Online), other times there is a need to copy some content from one site in a server into another site. Today, this can be complex and require manual steps. For example, if a published workbook utilizes published Data Sources it is often impossible without significant manual steps to move the data sources and content form one Tableau Server to another.

By comparison, Tableau Server’s tabAdmin tool offers a full “site import and export” for copying and replacing an entire site. This is powerful but heavy-weight, replacing the entire site, its users, its schedules, etc. This tool offers a lightweight approach built on top of Tableau Server’s REST APIs.

  • It allows the contents (Workbooks, Data Sources, and Projects) to be downloaded from a Tableau Server site into your local file system.
  • It allows this file system content to be transformed and uploaded back into another Tableau Server or Tableau Server site, along-side existing content.
  • It generates command line arguments for the export and import operations, allowing you to quickly repeat or modify these steps.

Video Introduction

There's a short video introduction available on Tableau's YouTube channel. You can watch the full video or just jump to specific sections:

Versions of Tableau Server

TabMigrate was written and tested with version 10.2 of Tableau Server.

  • It should work in all Tableau Server versions >= 10.1.
  • Earlier versions of TabMigrate work with earlier Tableau servers (check the releases)
  • Moving forward, the application will be maintained and gain new features with each released version of Tableau Server, as the REST API set expands. If you need older versions, you can download the previous releases.

Getting started with TabMigrate (for non-developers)

You do not need to download and compile the source code to use TabMigrate. Those interested in simply running the application can download and unzip the setup from https://github.com/tableau/TabMigrate/releases (hint: the latest release is in v1.02_2015_11_13_TabRESTMigrate.zip -> download, unzip, and rock on). Running setup.exe will install the TabMigrate application on your Windows machine.

Application: The application can be run in either interactive (UI) or command line mode. When running in interactive mode the application will also show you the command line for performing all of the actions, making it easy to automate. The application UI offers three top level options:

  1. Generate an inventory of your site: This downloads information about your site into a *.csv file that can easily be loaded into Tableau Desktop or Excel.
  2. Export content from your site: You can either export your entire site (all the Workbooks and Data Sources), or choose an individual Project whose contents you want to export. Export will create file system directories for “workbooks” and “datasources” and download your sites content into subdirectories named after each Tableau Server site you export.
  3. Import content from your file system: You can bulk upload workbooks and datasources from your local file system into a Tableau Server site that you choose. This expects the same file system directory site export; file system directories are named for the Tableau Server projects that they will be published into. NOTE: You can also specify database IDs and Passwords to use when publishing your Workbooks and Data Sources. Workbooks with live database connections REQUIRE passwords to be included during publish. These are specified by listing the database credentials in an XML (text) file. Example:
<!-- Example file that shows how credentials can be declared. This file can be used as part of site import to supply needed workbook and datasource credentials-->
<xml>
     <credential 
          contentType="workbook" 
          contentProjectName="Test Site Import" 
	      contentName="test.twbx" 
		  dbUser="SimpleUser" 
	      dbPassword="q.123456" 
	      credentialIsEmbedded="false"> 
     </credential>
     <credential 
	      contentType="datasource" 
		  contentProjectName="Test Site Import" 
		  contentName="test2.tds" 
		  dbUser="SimpleUser3" 
		  dbPassword="q.12345678"> 
     </credential>
</xml>

Safety tips

The REST APIs used by this application allow you to upload, download, and otherwise modify your site’s content, workbooks, data sources, content tags, etc. So yes, it is certainly possible for you to overwrite existing content on server. A few tips:

  • “Generate site inventory” – This option does not perform write/upload/delete actions on your site, it should be “read only” in its behavior. It should have no negative side effects and is a great way to learn about and explore the capabilities of the application.
  • “Export site contents to local directory” – Be default, this option does not perform any write actions to your site and will be “read only” in its behavior. It downloads your Tableau Server site’s content to your local machines file system. NOTE: There are non-default options such as “[x] Remove tag from exported content” that will perform minor modifications your site’s content.
  • “Upload from file system into site” – This certainly will modify content on the site you specify. If there is existing content with the same name as content being uploaded it will overwrite it. Before running this command against a site with existing content, we recommend you run it using an empty site to verify the expected behavior.
  • To reduce the chance of accidently writing to the wrong site we recommend using a “site admin” (not system admin) account when possible. For best protection, the site admin account should only be a member of the single site you are uploading to.

Getting started with TabMigrate (for developers)

Source code: The project is written in C# and should load into Visual Studio 2013 or newer, including the free Visual Studio Express for Desktop.

What’s particularly useful in the source code?

The code demonstrates complex aspects of both the REST API and moving content between sites/servers. Someone working with the code will have a great base for calling any Tableau REST APIs from C#. Examples of things that are hard without detailed working code:

  • Using the REST api to sign in to your Tableau Server or site and including the session token in all subsequent REST API calls
  • Packaging MIME messages to the REST API can be complex and challenging to debug
  • Downloading and uploading both compressed .twbx/.tdsx and text .twb/.tds Workbooks and Data Sources requires interpretation of server response types
  • Uploading large files in chunks requires exact formatting of data sent to the server
  • Updating Workbook XML to point to data sources on a new server is detailed. The sample code shows how to: (i) unzip *.twbx files, (ii) update the Tableau Workbook’s XML so the data sources point to the new server/site, (iii) repackage the transformed workbook back into a compressed *.twbx that can be uploaded to Tableau Server.
  • Associating database credentials with the Workbooks and Datasources you are publishing
  • Querying for lists of Projects, Workbooks, Data Sources and users and interpreting the results

The source code also contains example files in a “_SampleFiles” subdirectory.

  • CredentialExample.xml : You can use this as a template for files you generate to associate database credentials with Workbooks and Data Sources you are publishing.

Is TabMigrate supported?

Community supported. Using it you can accidentally modify or delete your content, just as you can by accidentally do so in the user interface. Despite efforts to write good and useful code there may be bugs that cause unexpected and undesirable behavior. The software is strictly “use at your own risk.”

The good news: This is intended to be a self-service tool. You are free to modify it in any way to meet your needs.

More Repositories

1

TabPy

Execute Python code on the fly and display results in Tableau visualizations:
Python
1,558
star
2

webdataconnector

Bring the data you care about into Tableau
HTML
678
star
3

server-client-python

A Python library for the Tableau Server REST API
Python
656
star
4

rest-api-samples

Samples for the Tableau REST API
Python
379
star
5

document-api-python

Create and modify Tableau workbook and datasource files
Python
324
star
6

js-api-samples

Sample code for the Tableau JavaScript API
HTML
274
star
7

extensions-api

Extensions API sample code and developer docs.
JavaScript
268
star
8

VizAlerts

Data-driven alerting for Tableau Server
Python
209
star
9

tableau-log-viewer

Tableau Log Viewer is a cross-platform tool for quickly glancing over Tableau log files
C++
168
star
10

hyper-api-samples

Sample code to get started with the Hyper API.
Python
134
star
11

community-tableau-server-insights

Community-built data sources for answering questions about Tableau Server
Python
125
star
12

Logshark

A Tableau log file analysis utility
C#
111
star
13

TabMon

A Tableau Server performance monitoring service
C#
109
star
14

connector-plugin-sdk

SDK for Developing Tableau Connector Plugins
Python
108
star
15

tabjolt

Load generator for Tableau Server
105
star
16

ts-checked-fsm

TypeScript library providing compile-time checking for state machine transitions
TypeScript
94
star
17

tableau-ui

React UI components that have the look-and-feel of Tableau.
CSS
92
star
18

query-graphs

A visualizer for queries - Hyper, Postgres, Tableau
TypeScript
88
star
19

server-install-script-samples

Sample code showing how to script Tableau Server installations
Python
83
star
20

altimeter

Graph AWS resources in Neptune
Python
82
star
21

metadata-api-samples

This repo holds samples using the Tableau Metadata API with Tableau Server or Tableau Online.
70
star
22

tableau-viz-lwc

(Archived) Lightning Web Component for embedding Tableau into Salesforce
65
star
23

embedding-playbook

You want to embed your Tableau content in lots of places. Start here.
CSS
57
star
24

tableau-server-in-kubernetes

Examples and documentation on how to run Tableau Server in a Container within a Kubernetes environment.
43
star
25

tabcmd

A Python based app that replicates the functionality of the existing TabCMD command line utility
Python
42
star
26

custom-portal-sample

Sample code showing how to integrate and embed Tableau in a web portal
HTML
39
star
27

webhooks-docs

Webhooks developer documentation and resources.
38
star
28

tableau-data-dictionary

This data dictionary provides information about the tables and views in the "workgroup" PostgreSQL database of the Tableau Server repository.
HTML
38
star
29

react-native-dns-lookup

A React Native module that leverages iOS and Android native networking libraries to lookup all of the IP addresses associated with a hostname
Objective-C
32
star
30

embedding-api-v3-samples

Samples for the Tableau Embedding API V3.
HTML
28
star
31

embedding-api-v3-guide

migration guide for moving to embedding api v3
28
star
32

mobile-app-bootstrap-react-native

A React Native template for creating iOS and Android apps that embed Tableau vizzes
JavaScript
26
star
33

mobile-app-bootstrap-cordova

A Cordova template for creating iOS apps that embed Tableau vizzes
JavaScript
22
star
34

tableau-docker-samples

Samples for Dockers for Tableau Server/Online clients
21
star
35

hyper-db

Documentation for Hyper, the blazingly fast SQL engine powering analytics at Tableau and Salesforce
TypeScript
19
star
36

npm-pack-here

An alternative to the Yarn link and NPM link workflows, this tool packs a local NPM project and puts the packed contents into the given destination directories.
TypeScript
19
star
37

extension-data-driven-parameters

Automatically update your parameters based on your data!
JavaScript
18
star
38

datadev-hackathon

Resources and materials for Tableau #DataDev hackathons.
17
star
39

redshift-monitor

Capture, save, and analyze AWS Redshift performance metrics
JavaScript
17
star
40

analytics-extensions-api

Extend Tableau to dynamically include popular data science programming languages and external tools and platforms.
HTML
17
star
41

teenypath

A filesystem wrapper
C++
16
star
42

tableau-postman

This repo is for the Tableau REST API Postman collection hosted in the Salesforce Developers Postman workspace. Use the collection to call your Tableau Server or Tableau Cloud site for demonstrations, learning, development & testing of any method in the API.
16
star
43

tableau-migration-sdk

An SDK for building your own application to migrate to a new Tableau environment.
C#
15
star
44

Visualization-Linting

Code associated with a research project for experimenting with different ways of surfacing stylistic, analytic, or visual discrepancies in visualizations.
JavaScript
14
star
45

mobile-app-bootstrap-objc

An Objective-C template for creating iOS apps that embed Tableau vizzes
Objective-C
13
star
46

TabProvision

TabProvision is a flexible tool for automating user/role/groups provisioning in Tableau Cloud
C#
12
star
47

octopus-python-client

Python script and a GUI to manage Octopus deploy servers through the Octopus Restful APIs
Python
12
star
48

tc16

Companion tool for attendees of Tableau Conference 2016
CSS
11
star
49

tab-compare

TabCompare is a visual comparison tool to understand differences in dashboards across different versions of Tableau.
Python
11
star
50

tableau.github.io

Contains the content for Tableau's OSS contribution guidelines
HTML
10
star
51

connected-apps-jwt-samples

Java
9
star
52

emb-hot-ca-v3

Embedded Hands-on-training course materials. Connected Apps and Embedding API v3
CSS
8
star
53

extension-date-updater

Automatically update your date parameters to today's date.
TypeScript
8
star
54

discover-pane-template

Template for customizing the Tableau Desktop Discover Pane
HTML
8
star
55

extension-hierarchy-navigator-sandboxed

Visualize your flat/dimensional or recursive data in a Tree/Hierarchy Extension an a Tableau Dashboard
JavaScript
8
star
56

mobile-connected-client

Keep mobile users signed in with long-lived tokens. Works alone or in conjunction with the Mobile App Bootstrap
Objective-C
8
star
57

extension-parameter-actions

A Tableau extension that allows you to update parameter values from worksheet selections.
JavaScript
7
star
58

tableau-data-acceleration-client

A script to help administrators configure data acceleration for specific workbooks.
Python
7
star
59

extension-filter-bookmarks

Instantly revert your dashboards to predefined filter settings.
JavaScript
6
star
60

wdc3

Web Data Connector (WDC), connecting to web application data from Tableau.
6
star
61

redux-saga-observer

a library that provides observer patterns to redux-sagas, allowing powerful abstractions
TypeScript
5
star
62

bridgectl

Tableau Bridge Utilities
5
star
63

extension-jungle-book

This extension allows you to create filters using shapes mapped on top of images.
TypeScript
5
star
64

vail

VAIL (Visual Analytic Intent Language) is a language for modeling user intent, inferring missing or ambiguous intent, and figuring out how to effectively visualize intent
TypeScript
4
star
65

wdclib

Used to generate the WDC shim library
JavaScript
4
star
66

Tableau-TA

4
star
67

gradle-test-timeout

Gradle plugin to turn hanging JUnit4 tests into TestTimedOutExceptions
Kotlin
4
star
68

extension-single-checkbox-parameters

Dashboard extension which enables adding a parameter to a Tableau dashboard which will display in the UI as a single checkbox.
JavaScript
3
star
69

tableau-viz-lwc-samples

(Archived) This repository contains sample code that shows how you can add the Tableau Viz Lightning web component (LWC) within the body of another Lightning web component.
JavaScript
3
star
70

connectivity-support

Provides a set of tools which can be used to diagnose common infrastructure concerns in the connectivity layer.
C++
3
star
71

VizQL-Data-Service-API-Postman-Collection

2
star
72

create-tableau-dashboard-extension

JavaScript
2
star
73

extension-quick-what-if

A dashboard extension that allows you to create a list of controllable inputs based on values of a dimension for quick what-if analysis.
JavaScript
2
star
74

bridge_k8s_poc

Shell
2
star
75

hyper-api-dotnet

C#
2
star
76

sf-exp-cloud-tableau-embedded-analytics

JavaScript
1
star
77

bridge_docker_build

Shell
1
star
78

Accelerators

This repository is used to share external prerequisites for dashboard accelerators that are published to exchange.tableau.com
1
star
79

container_image_builder

Use this tool to install database drivers and other artifacts needed in your Tableau containers.
Shell
1
star