Tableau встроенный источник данных refre sh с использованием python - PullRequest
0 голосов
/ 05 февраля 2020

Есть ли способ обновить sh Таблица встроенный источник данных , используя python. В настоящее время я использую клиентскую библиотеку сервера Tableau для обновления sh опубликованных источников данных, что на самом деле работает нормально. Может ли кто-нибудь помочь мне найти способ?

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

То, как вы можете связаться с ними, немного раздражает с моей точки зрения. Вам необходимо использовать функцию populate_connections() для загрузки встроенных источников данных. Было бы проще, если бы вы знали имя рабочей книги.

import tableauserverclient as TSC

#sign in using personal access token
server = TSC.Server(server_address='server_name', use_server_version=True)
server.auth.sign_in_with_personal_access_token(auth_req=TSC.PersonalAccessTokenAuth(token_name='tokenName', personal_access_token='tokenValue', site_id='site_name'))

#use RequestOptions() with a filter to pull an specific workbook
def get_workbook(name):
    req_opt = TSC.RequestOptions()
    req_opt.filter.add(TSC.Filter(req_opt.Field.Name, req_opt.Operator.Equals, name))
    return server.workbooks.get(req_opt)[0][0] #workbooks.get () function is intended to return a list items that you can iterate, but here we are assuming it will be find  only one result

workbook = get_workbook(name='workbook_name') #gets the workbook
server.workbooks.populate_connections(workbook) #this function will load all the embedded datasources in the workbook
for datasource in workbook.connections: #iterate in datasource list
    #Note: each element of this list is not an TSC.DatabaseItem, so, you will need to load a valid one using the "datasource_id" attribute from the element.
    #If you try server.datasources.refresh(datasource) it will fail
    ds = server.datasources.get_by_id(datasource.datasource_id) #loads a valid TSC.DatabaseItem
    server.datasources.refresh(ds) #finally, you will be able to refresh it
    ...

Лучше всего не встраивать источники данных, а публиковать sh их независимо.

Обновление: есть простое способ достичь этого. Существует два типа задач извлечения: рабочая книга и источник данных. Таким образом, для встроенных источников данных необходимо выполнить книгу refre sh.

workbook = get_workbook(name='workbook_name')
server.workbooks.refresh(workbook.id)
0 голосов
/ 05 февраля 2020

Вы можете использовать пакет "tableauserverclient" Python. Вы можете установить его из PyPy. После установки вы можете обратиться к документации.

Я приложу пример, который я использовал некоторое время: go:

import tableauserverclient as TSC

tableau_auth = TSC.TableauAuth('user', 'pass', 'homepage')
server = TSC.Server('server')

with server.auth.sign_in(tableau_auth):
    all_datasources, pagination_item = server.datasources.get()
    print("\nThere are {} datasources on 
    site:".format(pagination_item.total_available))
    print([datasource.name for datasource in all_datasources])
...