Write Back Extensions – 3 in 1 Quickstart
In this blog post you can get all 3 Tableau Write Back Extensions as part of a larger demo asset – a Tableau Server Site which demonstrates all kinds of cool things on the Tableau Platform. Nevertheless people are regularly asking how to just quickly demonstrate how Tableau Write Back capabilities can look like. So this blog post is just about how to get the 3 Tableau Workbooks from above which include (Write Back Extensions) up and running as fast as possible?!
How can I get it?
Demo
Demo
System Requirements:
- Windows operating system
- Port 8888 needs to be open/free (Webserver)
- Port 3306 needs to be open/free (MySQL)
- Tableau Server 2018.3 or above
Step-by-Step Installation
Step-by-Step Installation
Troubleshooting
-
Troubleshooting
- Port 8888 is already in use before starting Xampp
(Change the port) - Port 3306 is already in use before starting Xampp
(Change the port) - You’re using an older Tableau Version than 2018.3.x
- Download and install Tableau Desktop 2018.3.x or above
- Open up the workbooks from step 4
- Go to File > Export As and select the version that you want to downgrade to
- Keep in mind that the version needs to support Tableau Extensions. Therefore 2018.2 or above is required
- If it’s still not working see how you can debug Tableau Extensions generally
Files from the Video:
1. Download Chromium
2. Start Tableau Desktop 2018.3 (with Extension in Debug Mode)
- Port 8888 is already in use before starting Xampp
FYI
P.S. Database User/Password are both “admin/admin” for all examples where workbooks leverage the MySQL database on Xampp you’ve been downloading above. You can have a look at the tables being used via http://localhost:8888/phpmyadmin/db_structure.php?server=1&db=tableaufans
Please let us know if this has been helpful and what kind of scenarios you’re looking forward to solve with it.
TREX Files
Pingback: tableaufans.com » Tableau Write Back Extensions
Pingback: tableaufans.com » Tableau Extension API – Write Back – Source Code
Pingback: tableaufans.com » Tableau Extension API – Write Back – Updated Source Code for Tableau 2018.2
Hello Timo,
Appreciate this documentation and walkthrough for the writeback extension! I’m looking to set up this extension to write back to MS SQL or Teradata. Are there any possible negative consequences are setting up part of this writeback extension, other than a warning that something was set up wrong (eg. database corruption, etc)?
Omar
Hi Omar,
you’re welcome and please feel free to adjust it to your own needs!!! You can absolutely adjust the Extensions to write data back to your backend of choice! I unified/adjusted the original table names a little bit for this blog post, but for MSSQL you can have a look at the steps necessary in this post “Write back to MSSQL Server“
Hello Timo,
Thank you very much for your work!
I am looking to write back data to an Excel spreadsheet (locally hosted).
Would it be possible to use the Write Back extension to do so? I guess it should be pretty simple but I can’t find a way.
Best Regard,
Benoit
Hi Benoit,-Extension\php. One library I just found within my first Google result was the following one: https://github.com/PHPOffice/PhpSpreadsheet. Please feel free to choose from many others out there. It would be awesome if you could keep the community posted about your approach! 😉
that is absolutely possible. You could adjust the “writeToDb.php” file within htdocs\extensions-api-master\myExtensions\Tableaufans-
Thank you very much for your informative (and quick) answer, I will try that and keep you posted!
HI Timo,
I am having trouble changing the “writeToDb.php”.
Please can you give further guidance on it?
Thank you.
Hi Alex,
what kind of trouble do you have?
Timo, these write-backs look great! Would you be available for some consulting to assist us with a modification to the extension? If not, can you suggest someone else?
Thanks
Max
Max, I can highly advise you to reach out to a Tableau partner for this type of customization. Check out this list and find one in your region. You can also reach out to your Tableau seller directly so that he can help you find one.
Hi Timo,
I have some problems when i open the extension in 2019.2 it crashes…
When i look at the xampp in the embedding there is no writeback folder..
If i open http://localhost:8888/TableaufansDemoOverview/ and click on writeback i get url like this but there nothing there: http://localhost/t/tableaufans/views/TableaufansWriteBackExtension/WriteBack
Need a update i think?
Best
Hi FT,
The workbooks within the demo are created with 2019.3. Attached you find one of it as v2019.1 workbook in order to be able to test it: DOWNLOAD If it works I’m happy to provide you with the other workbooks, too since this is very easy to achieve.
The write back code is located deeper in the folder structure: “xampp-tableaufans\htdocs\extensions-api-master\myExtensions\Tableaufans-WriteBack-Extension\php\writeToDb.php”
The XAMPP for this blog post is just being used to host the database + webserver. Therefore don’t open up the browser, but open up the workbooks instead. (I’ve been updating the XAMPP anyway to make this page not even appear for this asset anymore)
The link works if you setup this site on your local Tableau Server
Cheers,
Timo
This is awesome but it doesnt work…perhaps the issues with the IT ppl 🙁
Hey Simone, What exactly is not working?
Hey Timo, this wsa working earlier and now it seems to stop working.. its not doing anything after you select the Mark.
i tried debugging but didnt make much headway. i even download a fresh copy from the web and saw the same thing..
function loadSelectedMarks
console.log(“worksheetName:” + worksheet.name );
// Call to get the selected marks for our sheet
worksheet.getSelectedMarksAsync().then(function (marks) {
// Get the first DataTable for our selected marks (usually there is just one)
const worksheetData = marks.data[0];
// console.log(“in loadSelectedMarks”);
//console.log(“worksheetData :” + worksheetData);
// console.log(“totalRowCount :” + marks.data[0].totalRowCount);
// Map our data into the format which the data table component expects it
const data = worksheetData.data.map(function (row, index) {
const rowData = row.map(function (cell) {
//selected marks per row and index (= column)
return cell.formattedValue;
});
console.log(“rowData:” + rowData);
print(“rowData:” + rowData);
it doesnt print any data in the console log
Hi Timo,
Thank you for sharing such an awesome tool!
Is there any way for the extension to connect to Oracle Database instead of MySQL? If so, what are the configuration changes?
Hi Wannie,
thank you very much for your feedback and you’re welcome! 😉
Absolutely! Just look at the following posts which describe what you need to adjust to write data to MS SQL, SAP HANA or Snowflake and make similiar adjustments to write data back to Oracle.
– Snowflake
– MS SQL
– SAP HANA
If you want to contribute your work back to the community I’m happy to let you post about it once you’ve successfully set it up.
Hi Timo,
Thanks a ton for sharing this!! Can we use Teradata for this? Also, can we host the extension on our internal server?
Thanks!
Hema.
Hi Hema,
2x absolutely yes.
1) Teradata: Just have a look at the last comment above yours.
2) Host on internal Server: Yes. You just need a normal web server for it. You can theoretically use Tableau’s built in web server (NOT SUPPORTED!), but also any other one.
Hi Timo:
We upgraded our QA Tableau Server to 1019.4.3. However, now the writeback functionality no longer works. Anuj’s post from January 7th sounds like the exact issue we’re having because it’s failing in the same place. Using “Alerts” I was able to pinpoint where the issue is:
const data = worksheetData.data.map(function (row, index) {
const rowData = row.map(function (cell) {
//selected marks per row and index (= column)
return cell.formattedValue;
});
Any thoughts?
Hi Matt,
Does it work for Tableau Desktop locally?
And in case the Extension is not running locally, did you setup HTTPS between Tableau Server and the Extension Web Server?
Hello Timo,
I have followed your instructions but when i opened the workbook and enter the password as admin, the “Sign In” is still grayed out and not actcivated. I am using 2019.3 desktop version.
Any help is appreciated.
-Mohan
Hi Mohan,
could you please try to connect to the MySQL database in an empty workbook?
Thank you for your reply.
Yes, It works when I try to connect from an empty workbook. we have a few dashboards that run on my SQL. The samples are the only ones I am not able to open.
-Mohan
Hey Mohan,
you might want to have a look at the latest comment from Matt. He realized a change within the naming convention of Tableau’s Extension API.
Hi Timo,
This is a great blog, I followed the all steps to test out the extension. However for some reason when I add the extension to the dashboard it isn’t working. I’m getting the texts displayed but i’m not able to interact with the extension. It’ll be really helpful if you can guide me on this !
Hi Raj,
2 questions:
1. Did you use my pre-built dashboards which already contain the extension?
2. Did you follow the Troubleshooting tab video?
Thanks for your reply Timo,
The extension works fine with your latest version, where all the steps are automated. However I was trying the manual setup process where the extension interface is failing.
I was trying manual process because it’ll help me understand underlying steps better, as I’ll have to tweak the scripts and eventually want the extension to write back on HANA DB.
Hi Timo:
Thanks for getting back to me. It does not work within desktop either. Yes the https is setup between the Tableau server and the extension server. This functionality has been working under 2018.3.1 since April. It still works today and is used in existing dashboards, again under 2018.3.1.
I came across this known issue in 2019.4.3:
1052015 TABLEAU DESKTOP, TABLEAU SERVER
In Rest Api Schema, Public schemas missing attributes for viewType and siteType.
FIXED IN 2019.2.9, 2019.2.9, 2019.3.5, 2019.3.5, 2019.4.4, 2019.4.4
Let me install 2019.4.4 and see if I have better luck.
Okay, it didn’t work in Tableau Desktop 2019.4.4 either. Looks like the same issue. I’m having trouble getting the dashboard into debug mode. I went ahead and used alerts to track to the point of failure which is occuring in the loadSelectedMark function:
In the below source, I receive the “Load Title” and the “Row Data1 alerts, but never make it to the “Row Data2” or “Row Data3” alerts:
function loadSelectedMarks (worksheetName) {
// Remove any existing event listeners
if (unregisterEventHandlerFunction) {
unregisterEventHandlerFunction();
}
// Get the worksheet object we want to get the selected marks for
const worksheet = getSelectedSheet(worksheetName);
alert(‘Load Title’);
// Set our title to an appropriate value
$(‘#selected_marks_title’).text(worksheet.name);
// Call to get the selected marks for our sheet
worksheet.getSelectedMarksAsync().then(function (marks) {
// Get the first DataTable for our selected marks (usually there is just one)
const worksheetData = marks.data[0];
// Map our data into the format which the data table component expects it
alert(‘Row Data1’);
const data = worksheetData.data.map(function (row, index) {
alert(‘Row Data2’);
const rowData = row.map(function (cell) {
//selected marks per row and index (= column)
alert(‘Row Data3’);
return cell.formattedValue;
});
return rowData;
});
Here is our tableau extensions library include:
Hi Timo:
We figured it out. I had to go back and download the latest version of the Tableau Extension Library – And replace the “lib” folder on our site with the new one from git. The naming convention changed from tableau-extensions-1.latest.js to tableau.extensions.1.latest.js. So we’re good.
AWESOME Matt!!! Thx a lot for sharing this resolution!!!
“lib/tableau-extensions-1.latest.js”
Hello, I was able to follow all the described steps and open the demo workbooks. But I am wondering how can I use this extensions with another Workbook I have created. I cannot find any .trex files, which are the only ones that can be selected when an extension is added to a dashboard.
Thank you in advance
Hi Radona,
sure, here we go: TREX Files
Thank you 🙂
Hi Timo,
Thanks for your wonderful blog. I am facing a issue while dropping the write back extension on my tableau dashboard. The error which I am getting is Error 404 – Object not found error. please see it below :
The requested URL was not found on the server. The link on the reffering page seems to be wrong or outdated.
Can you please help to resolve the above mentioned issue. Thanks for your time.
Regards,
Akash Lamba
Hi Akash,
thank you very much for your kind words!!! Are you using the TREX files which I just uploaded or the dashboards which do have the Extension built in? In both ways the Extension points to the following path:
http: //localhost:8888/extensions-api-master/myExtensions/Tableaufans-WriteBack-Extension/index.html. This means the Xampp I put into this blog post needs to be up and running and within the htdocs folder within Xampp there needs to exist this file within this exact path: extensions-api-master/myExtensions/Tableaufans-WriteBack-Extension/index.html
Please let me know if this is the case and if this works fine.
TT
Hi Timo,
Thanks for your quick response. Yes I am using the latest TREX files which are uploaded by you.Also, I am using the exact path of the extension in htdocs folders. My Xampp is up and running. but still when I use the extension on your dashboard I get the same error which I described in my previous query.
I would really appreciate if you can help me out with this. Thanks for your time.
Regards,
Akash Lamba
Hi Akash,
what ahppens if you copy and paste this URL into a normal Google Chrome tab? http://localhost:8888/extensions-api-master/myExtensions/Tableaufans-WriteBack-Extension/index.html
Hello Timo,
Thanks for sharing this cool feature. Will the write back work with Alteryx server and AWS redshift? If possible, can you please let me know on how to write back to Alteryx server and AWS redshift?
Hi Nihar,
YES, you can trigger an Alteryx workflow via API and therefore the scenario you described would be possible
Hi Nihar,
Writing to Alteryx Server should be done indirectly by first writing to a DB like AWS Redshift and then reading that data with an Alteryx input.
If you don’t want to build the extension on your own and take advantage of more advanced features you can check https://writeback4t.com/ a commercial Tableau extension built by Xpand IT that provides OOTB write back to Redshift among others DBs.
Hi team,
Thanks for providing this extension.
writeback comments on Tableau desktop was working but changes not showing on desktop, could you please let us know where the comments are getting saved and why are they not reflecting on desktop?
Hi Chakith,
The comment do get written into a MySQL database for this example. If you hit F5 twice after you’ve been selecting the sheet which does show the comments, does this show you the comments you’ve been entering?
Hi Timo,
Thanks for your response.
We tried refreshing it twice but still no comments are visible.
Check this screenshot: https://drive.google.com/file/d/1B0X1jMe5W0VL6YzMZwrfepfDar7tSR9b/view
We selected a circle and gave a comment input. After refreshing, it doesn’t seem to show my comment in the top right box.
Let us know if we are doing anything wrong.
You‘re welcome! The screenshot shows a statement within the extension which says „Choose 1 sheet from“. This shouldn‘t be visible after one has got selected which sheet to listen to (for selections). Therefore I assume that the JavaScript code doesn‘t know what you‘ve been selecting and therefore can‘t write sth into the database. Just follow the steps within the troubleshooting section.
Thanks a lot Timo! It works!
Hi Timo,
thanks alot for this great extension! We’re using it succefully for several months, then updatet our Server to Linux. No the extension is working only for the admin-role, no longer for viewer or explorer roles.
Someone else experienced this issue?
Regards, Matthias
Hi Matthias,
this sounds like more of a general Tableau Extension / OS / Upgrade issue. I haven’t experienced this, yet. Could you please ask this question in the Tableau Community Dev by adding the versions to your ask?
Thank you very much!
Hello,
I’m trying to configure write-back API on one of our tableau server, but struck at some point where adding writeback URL to tableau server, it would be really helpful if you provide me some insight on fixing this issue.
Thanks,
Uday Reddy
Hi Uday,
could you please specify your question?
– Within the PHP folder of the Extension you’ve downloaded here you can specify into which database you want to write data back into
– Within Tableau Server/Online you enable the Extension to have the right to run (https://help.tableau.com/current/server/en-us/dashboard_extensions_server.htm)
– If you want to not just test it locally on Tableau Desktop make sure you enable HTTPS!!!!! Otherwise it won’t work. (https://help.tableau.com/current/server/en-us/security_extensions.htm)
Hi,
Where in your tableau code should I change the php port from 8888 to whatever I set it in xampp? I can’t use port 8888 for some reason so I changed it to 8889 but I get this error when I open tableau (inside the extension window):
Where in your code should I change the php port from 8888? I had to change it in xampp but now I get an error:
Requested URL http://localhost:8888/extensions-api-master/myExtensions/Tableaufans-WriteBack-Extension/index.html
Physical Path C:\inetpub\wwwroot\extensions-api-master\myExtensions\Tableaufans-WriteBack-Extension\index.html
Please check the TREX file for the port
Hi Timo
I downloaded extensions-api-master but I could not find my extensions or any trex files
The folder myExtensions should exist within the large download file. How many MB did you download?
You should find the TREX in a ZIP file within the last tab of this blog post
Hi Timo,
Am unable to download TREX files from above link. Can you please share it here?
You should find it in a ZIP file within the last tab of this blog post
Pingback: Tableau Write Back to Database | Write Back Tableau - Question Answer
Can this be a sandboxed extension or does it need to be a network enabled extension? Thanks
Hi Carl,
It could be a sandboxed extension. You just need to package the external libraries I‘m using in the example above and you‘d be good to go.
Hi Timo,
Great Work, you have solved a big problem of mine.
I am trying to access the Writeback Worksheet getting below error, entered “admin” as password
“An error occurred while communicating with MySQL
Invalid username or password.
Error Code: DAFFF161
[MySQL][ODBC 8.0(w) Driver]Access denied for user ‘admin’@’localhost’ (using password: YES)
Invalid username or password.”
Glad to hear! Invalid username/PW errors are usually the easiest ones. Just try admin/admin for this asset
Hi Timo, this is great Extension. We really appreciate you amazing work.
We would like to use it for on-the-fly Forecasting editing (“classic approach 🙂 on the server.
Before implementing it on Tableau server 2022 we are trying to test it on local laptops using Win 10 Pro, Tableau 2022.2 and MySQL 8 / MsSQL Server 2017
However after downloading I started .exe file as discribed in steps, but when opened Workbook it was not possible to login into MySQL.
admin/admin is not working.
When I open Workbench I can get into root, see the MySQL server running. Testing dbs I have, but not able to locate “tableaufans”. Not sure what I am doing wrong.
Last issue is 8888 port is already taken so Apache is showing in command line:
“Diese Eingabeforderung nicht waehrend des Running beenden
Bitte erst bei einem gewollten Shutdown schliessen
Please close this command only for Shutdown
Apache 2 is starting …
(OS 10048)Normßlný je povoleno pouze jedno pou×itÝ ka×dÚ adresy (protokolu, sÝŁovÚ adresy, portu) soketu. : AH00072: make_sock: could not bind to address [::]:8888
(OS 10048)Normßlný je povoleno pouze jedno pou×itÝ ka×dÚ adresy (protokolu, sÝŁovÚ adresy, portu) soketu. : AH00072: make_sock: could not bind to address 0.0.0.0:8888
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs
Apache konnte nicht gestartet werden”
Thank you very much for any advice.
Greeting from Slovakia
Hi Marek, it sounds like there is just one issue which causes all of it which is port 8888. Please try it on a machine/VM where this port is not being used.
Pingback: Tableau Write Back to Database Extensions | Write Back Tableau - Question Answer
Following all the steps, but submit button is not inserting values in the database.
Moreover, I am getting error in MarkSelection.js.
What is the exact error message you’re getting?