I am still relatively new to Tableau and I have recently inherited some Tableau reports that I would like to automate. I have been given some python code that currently authenticates with multiple data stores/calls APIs in our organization, aggregates data, and creates multiple JSON files containing information used for reports in Tableau. These files are hosted on separate internal urls and are updated once a day. When I download these files and then upload them to Tableau Desktop, Tableau is able to auto-detect the columns for the table. In an ideal world, we are looking for the functionally to tell Tableau the url of some json data (whether its a static file or an API) and Tableau would get the data, recognize the columns, build the table, allow us to build the visualizations/enter the correct data types for the columns, and then have Tableau be able to auto-update the report with the latest data by calling the url we provided again. (Currently I am having to update our reports by manually uploading these new json files every couple of days).
I have looked into to the Web Data Connector (WDC), but the WDC makes you define the table schema and data type for each column of your data. I have been able to do this with one of our current json files, but this does not scale well. We do not want to have to write a new connector for each new file and it seems strange that Tableau is not using the functionality it already has for json files to auto-detect columns in the WDC as well. Our team is going to be bringing multiple new systems online this year that will contain information we would like to put in Tableau reports in addition to the reporting we already have. We would rather have one tool that could grab json from any location and auto-detect columns instead of writing and maintaining many separate WDCs for each system.
I am also beginning to look into the Tableau Server API. Is it possible replace json data file in a workbook using this API? If so, I image I could use the existing python code to push the json files to Tableau every time it is run. The only downside is that I would have to write a separate job/logic to call every API I wanted to use to report to simply forward the response to Tableau instead of simply giving Tableau the url.
Should we go the route of writing separate WDC for each data source or is there a better way of going things to utilize Tableau's ability to auto-detect columns? Will Tableau ever add the functionality from static json files of auto-detecting columns to the WDC?
Thank you in advance for your help!