Tableau Report Extraction Prerequisites
This topic briefs about the Tableau report extraction prerequisites.
In This Topic:
Introduction
LeapLogic’s Assessment profiles existing inventory, identifies complexity, draws lineage, and provides comprehensive recommendations for migration to the modern data platform.
LeapLogic requires Tableau report in the TWB format to perform an assessment. See the following options containing the steps to achieve the same.
Option#1 Using Tableau Server Client (TSC) for Bulk download
Follow the below given steps to export Tableau workbooks using TSC.
Install TSC. As a prerequisite, install Python on your system. You can use TSC with Python 3.7 or later. Also, install Git which is optional but recommended to download the samples.
Install TSC with pip (recommended) or from the source code.
Run the following command to install the latest stable version of TSC:
pip install –upgrade pip
pip install tableauserverclient
If you want to install TSC from the development branch or on an offline machine without an internet connection, please see the steps here.
Run the following code to download all the required workbooks:
import tableauserverclient as TSC
tableau_auth = TSC.TableauAuth(‘username’, ‘password’, site_id=’site’)
server = TSC.Server(‘https://servername’)
with server.auth.sign_in(tableau_auth):
all_workbooks_items, pagination_item = server.workbooks.get()
# print names of first 100 workbooks
#print([workbook.name for workbook in all_workbooks_items])
for workbook in all_workbooks_items:
workbook_id = workbook.id workbooks.download(workbook_id, filepath=None, no_extract=True)
Option#2 Using Command Line (Bulk download)
Follow the below given steps to export the Tableau reports using command line.
Connect to the Postgres Workgroup database with user ID readonly or tableau. Copy the below query and execute it.
SELECT workbook_url FROM _workbooks;
Export the output of the above query to a file and name it as input.txt
As a prerequisite, you need tabcmd. If you do not have it, use this link to download it: tabcmd (tableau.github.io)
tabcmd login -s “http://myserver.company.com” -u “userid” -p “********” – -no-certcheck – -timeOut 6000
#Create a folder in your directory namely “temp” and place the input.txt #file on that location.
$filePath =”D:\temp\input.txt”
#Create a folder within the temp folder namely “workbooks”.
$workbookpath=”D:\temp\workbooks”
New-Item -Path “$workbookpath” -ItemType Directory -Force
cd $workbookpath
foreach ($line in Get-Content $filePath) {
#Write-Host “/workbooks/$line.twb”
tabcmd get “/workbooks/$line.twb” –no-certcheck
}
tabcmd logout
Next, go to the location where you’ve saved the Workbooks. Execute the below command to extract .twb files out of the workbooks. Once this is done, please share the .twb files with the LeapLogic team for assessment.
# Set the path to the folder containing .twbx files
$folderPath = “D:\temp\workbooks”
# Define the destination folder for extraction
$extractionFolder = “D:\temp\workbooks\extracted”
# Define the folder to move the .twb files to
$twbDestinationFolder = “D:\temp\workbooks\twbfiles”
# Create folders if they don’t exist
if (-Not (Test-Path -Path $extractionFolder)) {
New-Item -ItemType Directory -Path $extractionFolder
}
if (-Not (Test-Path -Path $twbDestinationFolder)) {
New-Item -ItemType Directory -Path $twbDestinationFolder
}
# Get all .twbx files in the folder
$twbxFiles = Get-ChildItem -Path $folderPath -Filter “*.twbx”
foreach ($twbxFile in $twbxFiles) {
# Rename .twbx to .zip
$zipFilePath = $twbxFile.FullName -replace “.twbx$”, “.zip”
Rename-Item -Path $twbxFile.FullName -NewName $zipFilePath
# Extract the .zip file
Expand-Archive -Path $zipFilePath -DestinationPath $extractionFolder -Force
# Locate the .twb file
$twbFilePath = Get-ChildItem -Path $extractionFolder -Filter “*.twb” | Select-Object -First 1
# Check if .twb file was found
if ($twbFilePath) {
Write-Host “The .twb file has been extracted to: $($twbFilePath.FullName)”
# Move the .twb file to the new destination folder
Move-Item -Path $twbFilePath.FullName -Destination $twbDestinationFolder -Force
Write-Host “Moved .twb file to: $twbDestinationFolder”
} else {
Write-Host “No .twb file found in the extracted contents for: $($twbxFile.Name)”
}
# Clean up: Remove the .zip file
Remove-Item -Path $zipFilePath -Force
# Optional: Clear the extraction folder for the next iteration
Remove-Item -Path $extractionFolder -Recurse -Force
}
# Get all .twb files in the source folder
$twbFiles = Get-ChildItem -Path $folderPath -Filter “*.twb”
# Move each .twb file to the destination folder
foreach ($twbFile in $twbFiles) {
Move-Item -Path $twbFile.FullName -Destination $twbDestinationFolder -Force
Write-Host “Moved: $($twbFile.FullName) to $destinationFolder”
}
Option#3 Using Command Line (Bulk download)
Follow the below given steps to export the Tableau reports using command line.
As a prerequisite, you need tabcmd v2.0.14. If you do not have it, use this link to download it: tabcmd (tableau.github.io)
tabcmd login -s “http://myserver.company.com” -u “terkson” -p “passwordGoesHere” – -no-certcheck – -timeOut 6000
tabcmd list workbooks –details
tabcmd logout
Save the output of this command with the name workbooks.xml.
tabcmd login -s “http://myserver.company.com” -u “terkson” -p “passwordGoesHere” – -no-certcheck – -timeOut 6000
#Create a folder in your directory namely “temp1” and place the #workbooks.xml file on that location.
$xml = [xml] (Get-Content “C:\temp1\workbooks.xml”)
Foreach ($workbook in $xml.workbooks.workbook) {Write-host “Getting: ” $workbook.name; tabcmd get /workbooks/”$($workbook.’repository-url’).twb” -f “C:\temp1\$($workbook.’repository-url’).twb” –no-certcheck}
tabcmd logout
exit
Option#4 From Local or Desktop (Single file at a time)
Follow the below given steps to export the Tableau reports.
- Open a Tableau Workbook on your local machine or Desktop.
- Select File > Save As.
- Select the path where you want to save the file.
- Save as Tableau Workbook (*.twb)
Option#5 From Tableau Server (Single file at a time)
Follow the below given steps to export the Tableau reports using Tableau Server.
- Login to Tableau Server.
- Select the Workbook which you want to export.
- Download as Tableau Workbook in(* .twb) format
Option#6 Using Command Line (Single file at a file)
Follow the below given steps to export the Tableau reports using Tableau Server.
As a prerequisite, you need tabcmd. If you do not have it, use this link to download it: tabcmd (tableau.github.io)
- Login using this command.
tabcmd login -s <https://online.tableau.com> -t mysite -u authority@email.com -p password
- You can execute using this command.
tabcmd get “/workbooks/Sales_Analysis.twb” -f “C:\Tableau_Workbooks\Weekly-Reports.twb”
It is recommended to export Tableau Workbook using one the above mentioned options or methods. This will help you to export them in the required .twb format.
LeapLogic requires Tableau report in the TDS format to perform an assessment. See the following options containing the steps to achieve the same.
Using Command Line (Bulk download)
Follow the below given steps to export the Tableau data sources using command line.
Connect to the Postgres Workgroup database with user ID readonly or tableau. Copy the below query and execute it.
SELECT name FROM _datasources;
Export the output of the above query to a file and name it as input.txt
As a prerequisite, you need tabcmd. If you do not have it, use this link to download it: tabcmd (tableau.github.io)
tabcmd login -s “http://myserver.company.com” -u “userid” -p “********” – -no-certcheck – -timeOut 6000
#Create a folder in your directory namely “temp” and place the input.txt #file on that location.
$filePath =”D:\temp\dsinput.txt”
#Create a folder within the temp folder namely “datasources”
$datasourcepath=”D:\temp\datasources”
New-Item -Path “$ datasourcepath ” -ItemType Directory -Force
cd $ datasourcepath
foreach ($line in Get-Content $filePath) {
#Write-Host “/datasources/$line.tdsx”
tabcmd get “/datasources/$line.tdsx” –no-certcheck
}
tabcmd logout
Next, go to the location where you’ve saved the Data Sources. Execute the below command to extract .tds files out of the data sources. Once this is done, please share the .tds files with the LeapLogic team for assessment.
# Set the path to the folder containing .tdsx files
$folderPath = “D:\temp\datasources”
# Define the destination folder for extraction
$extractionFolder = “D:\temp\datasources\extracted”
# Define the folder to move the .tds files to
$tdbDestinationFolder = “D:\temp\datasources\tdbfiles”
# Create folders if they don’t exist
if (-Not (Test-Path -Path $extractionFolder)) {
New-Item -ItemType Directory -Path $extractionFolder
}
if (-Not (Test-Path -Path $tdsDestinationFolder)) {
New-Item -ItemType Directory -Path $tdsDestinationFolder
}
# Get all .tdsx files in the folder
$tdsxFiles = Get-ChildItem -Path $folderPath -Filter “*.tdsx”
foreach ($tdsxFile in $tdsxFiles) {
# Rename .tdsx to .zip
$zipFilePath = $tdsxFile.FullName -replace “.tdsx$”, “.zip”
Rename-Item -Path $tdsxFile.FullName -NewName $zipFilePath
# Extract the .zip file
Expand-Archive -Path $zipFilePath -DestinationPath $extractionFolder -Force
# Locate the .tds file
$tdsFilePath = Get-ChildItem -Path $extractionFolder -Filter “*.tds” | Select-Object -First 1
# Check if .tds file was found
if ($tdsFilePath) {
Write-Host “The .tds file has been extracted to: $($tdsFilePath.FullName)”
# Move the .tds file to the new destination folder
Move-Item -Path $tdsFilePath.FullName -Destination $tdsDestinationFolder -Force
Write-Host “Moved .tds file to: $tdsDestinationFolder”
} else {
Write-Host “No .tds file found in the extracted contents for: $($tdsxFile.Name)”
}
# Clean up: Remove the .zip file
Remove-Item -Path $zipFilePath -Force
# Optional: Clear the extraction folder for the next iteration
Remove-Item -Path $extractionFolder -Recurse -Force
}
# Get all .tds files in the source folder
$tdsFiles = Get-ChildItem -Path $folderPath -Filter “*.tds”
# Move each .tds file to the destination folder
foreach ($tdsFile in $tdsFiles) {
Move-Item -Path $tdsFile.FullName -Destination $tdsDestinationFolder -Force
Write-Host “Moved: $($tdsFile.FullName) to $destinationFolder”
}
Getting Help
Contact LeapLogic technical support at info@leaplogic.io