tableau / server-client-python

A Python library for the Tableau Server REST API
https://tableau.github.io/server-client-python/
MIT License
659 stars 421 forks source link

Extract Refresh task with a Daily schedule don't work as expected #1508

Open chroche opened 1 month ago

chroche commented 1 month ago

Describe the bug

When creating an Extract Refresh task with a Daily schedule following the provided example, I either get an "Error 500" from the server or a task that's running every hour instead of once a day.

Versions Details of your environment, including:

To Reproduce When following the example code above with a Daily interval as described in this sample

  tableau_auth   = TSC.PersonalAccessTokenAuth(TOKEN_NAME, api_token, SERVER_SITE)
  tableau_server = TSC.Server(SERVER_URL, use_server_version=False)
  tableau_server.version = '3.24'

  with tableau_server.auth.sign_in(tableau_auth):
    workbook = TSC.WorkbookItem(name=WORKBOOK_NAME, project_id=project)

    daily_interval = TSC.DailyInterval(start_time=datetime.time(hour=5, minute=40, tzinfo=datetime.UTC))
    daily_schedule = TSC.ScheduleItem(None, None, None, None, daily_interval)
    target_item    = TSC.Target(workbook.id, 'workbook')
    extract_item   = TSC.TaskItem(None, 'FullRefresh', None, None, None, daily_schedule, None, target_item)
    tableau_server.tasks.create(extract_item)

I'm getting he following error:

Internal error 500 at https://eu-west-1a.online.tableau.com/api/3.24/sites/288c88d2-8f35-4faa-b71c-bc082f0ded3c/tasks/extractRefreshes
b'<?xml version=\'1.0\' encoding=\'UTF-8\'?><tsResponse xmlns="http://tableau.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableau.com/api https://help.tableau.com/samples/en-us/rest_api/ts-api_3_24.xsd"><error code="500000"><summary>Internal Server Error</summary><detail>The server encountered an error and cannot complete your request. Contact your server administrator.</detail></error></tsResponse>'

Now if instead I declare the list of weekdays in the Daily interval:

    daily_interval = TSC.DailyInterval(datetime.time(hour=5, minute=40, tzinfo=datetime.UTC),
                                       'Monday', 'Tuesday', 'Wednesday', 'Thursday',
                                       'Friday', 'Saturday', 'Sunday')

then a Refresh Task is created but it's scheduled to run every hour instead of once a day at 5:40AM as expected.

Screenshot 2024-10-23 at 15 21 54