0
$\begingroup$

I'm a big fan of Tableau's easy-to-use data visualization tools. I tried building dashboards with Python's dash package, but it was too complex for me and Tableau offered an easy way to building beautiful data visualizations.

The only downside to Tableau is that it's free version (Tableau Public) does not allow you to connect to a live data source and thus make live graphs and dashboards (only exception is Google Sheets once every 24 hours), for this you'd need to fork out USD 70 a month at least.

Hence my question: Has anyone found a workaround? Specifically, has anyone figured out a way to get live data updates using just Tableau Public?

$\endgroup$
1
$\begingroup$

I wrote the question above, worked on the problem a little longer, and came to the following solution.

Warning: it is anything but ideal, but it works.

Put simply I wrote a small Python script using only one external library - pyautogui - the others are all native (time json requests) which retrieves my data online, updates a local file and executes the actions required to manually update the workbook in Tableau. You just need to create your workbook and the visualization you want and then run the script.

Here's the script:

import pyautogui, time
import json
import requests
def auto_tab (url_name, file_name, workbook_name):
    url = url_name
    r = requests.get(url)
    data = r.json()
    with open(file_name, 'w') as f:
        json.dump(data, f)

        pyautogui.press('win')
    pyautogui.typewrite('Tableau')
    pyautogui.press('enter')
    time.sleep(5)
    pyautogui.hotkey('alt', 'o')
    time.sleep(2)
    pyautogui.typewrite(workbook_name)
    pyautogui.press('enter')
    time.sleep(5)
    pyautogui.press('f5')
    time.sleep(2)
    pyautogui.press('enter')
    time.sleep(5)
    pyautogui.press(['alt', 'space', 'c'])
    time.sleep(2)
    pyautogui.press('enter')
    time.sleep(10)
    return print('done!')

times_to_repeat = 3

while times_to_repeat >= 0:
    auto_tab('your_url', 'your_file', 'your_workbook')
    times_to_repeat -= 1

So, like I said: it's not ideal, but it works.

Downsides:

  • You need to have your machine running to run the script (perhaps you can run it from a server or a VM)

Upsides:

  • You can live graph even if you have embedded the graph in html
  • It's fast
  • It's free
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.