Чтение возврата из server.workbooks.refresh с использованием Tableau REST API - PullRequest
0 голосов
/ 07 ноября 2019

Возможно, это будет звучать глупо, но у меня есть скрипт на python, который пытается обновить извлечение таблиц, используя идентификатор рабочей книги на сервере. У меня весь код работает нормально, и я даже заставляю экстракт работать, используя метод server.workbooks.refresh, передавая идентификатор рабочей книги в вызове. Я возвращаю значение в значение, называемое «результаты». Проблема в том, что я хочу извлечь идентификатор задания из переменной результатов, и все, что я пытался сослаться на идентификатор в переменной «result», не работает. Я продолжаю получать объект AttributeError 'JobItem' не имеет ошибки атрибута.

Я пытался ссылаться на объект в виде строки, кортежа, словаря и списка. Но я не могу понять, что это за объект на самом деле, поэтому я могу ссылаться на данные внутри него, и я не могу найти где-либо в Интернете, что говорит о том, что возвращается.

results = server.workbooks.refresh(selected_workbook_id)
print(results)
print("\nThe data of workbook {0} is refreshed.".format(results.name))

Вот ошибка после оператора печати:

<Job#fc62052d-e824-4594-8681-64dbb9a8216c RefreshExtract created_at(2019-11-06 22:18:21+00:00) started_at(None) completed_at(None) progress (None) finish_code(-1)>
https://wnuapesstablu01.dstcorp.net/api/3.4/auth
Traceback (most recent call last):
  File "C:\Users\dt24358\Python36\Scripts\Tableau REST API Scripts\Refresh_Single_Extract_v2.py", line 134, in <module>
    main()
  File "C:\Users\dt24358\Python36\Scripts\Tableau REST API Scripts\Refresh_Single_Extract_v2.py", line 131, in main
    print("\nThe data of workbook {0} is refreshed.".format(results.name))
AttributeError: 'JobItem' object has no attribute 'name'

1 Ответ

0 голосов
/ 08 ноября 2019

Чтобы закрыть эту проблему. Я понял, что мне нужно использовать правильную ссылку API для класса JobItem. См. https://tableau.github.io/server-client-python/docs/api-ref#jobs

Допустимые ссылки - это такие вещи, как "id", "type", "creation_at", "launch_at". Таким образом, для тех, кто не понимал этого, как я, ссылка:

workbook = server.workbooks.get_by_id(selected_workbook_id)

results = server.workbooks.refresh(workbook.id)
print(results)

jobid = results.id

Это вернет идентификатор задания, с которого началась задача обновления. Затем вы можете написать подпрограмму для опроса сервера, чтобы узнать, когда завершится задание извлечения.

Надеюсь, это кому-нибудь поможет ... Это сводило меня с ума.

...