Как использовать Python для получения данных через REST API Tableau
12 января 2024 г.Вы ищете способ программного доступа и получения данных с сервера Tableau? Python может стать мощным инструментом для автоматизации этого процесса с помощью REST API Tableau.
В этом блоге мы рассмотрим процесс использования Python для извлечения данных с сервера Tableau и предоставим рабочий пример, демонстрирующий, как получить доступ к такой информации, как представления, проекты и книги.
Подключение к серверу Tableau и аутентификация
Сначала нам нужно настроить среду Python и установить необходимые библиотеки. Мы будем использовать библиотеку tableauserverclient
для взаимодействия с сервером Tableau через его REST API.
Вот как настроить первоначальную аутентификацию и подключение к серверу Tableau:
import tableauserverclient as TSC
tableau_auth = TSC.TableauAuth('USERNAME', 'PASSWORD', site_id='')
server = TSC.Server('http://SERVER_URL', use_server_version=True)
server.auth.sign_in(tableau_auth)
После аутентификации мы можем начать доступ к данным с сервера Tableau. В следующих примерах показано, как получить информацию о представлениях, проектах и книгах.
Получение просмотров
В Tableau представления — это отдельные визуализации или диаграммы, созданные в книге Tableau. К ним могут относиться гистограммы, линейные графики, диаграммы рассеяния, круговые диаграммы, карты и другие типы визуального представления данных. Представления создаются путем перетаскивания полей из панели данных на холст представления и настройки макета и свойств.
На сервере Tableau пользователи с соответствующими разрешениями могут совместно использовать эти представления, получать к ним доступ и управлять ими. Получение представлений через REST API Tableau с использованием Python означает доступ к информации об этих визуализациях, хранящейся на сервере Tableau.
# view
views = []
for view in TSC.Pager(server.views):
views.append(view.name)
print(views)
Извлечение проектов
В Tableau проекты используются для организации связанного контента, такого как книги, источники данных, представления и другие ресурсы, и управления им. Они позволяют группировать контент и контролировать доступ на основе разрешений пользователя. Каждый проект может иметь уникальные разрешения, что упрощает управление и безопасность различных типов контента.
Проекты также могут быть вложены для создания иерархической структуры для организации контента на сервере Tableau. В целом, проекты предоставляют способ организации, управления и контроля доступа к контенту на сервере Tableau.
Распечатать названия всех проектов
С помощью первого фрагмента кода вы можете вывести названия всех проектов, используя следующий код:
# project get
with server.auth.sign_in(tableau_auth):
# get all projects on site
all_project_items, pagination_item = server.projects.get()
print([proj.name for proj in all_project_items])
Создайте фрейм данных, содержащий все атрибуты проекта
Ресурсы проекта для Tableau определены в классе ProjectItem
. Класс соответствует ресурсам проекта, к которым вы можете получить доступ с помощью REST API Tableau Server. Помимо имени
, он также имеет content_permissions
, описание
, id
и parent_id атрибуты.
Если вы хотите сохранить их все в кадре данных, вы можете использовать следующий код:
# project get
with server.auth.sign_in(tableau_auth):
# get all projects on site
all_projects, pagination_item = server.projects.get()
df_projects = pd.DataFrame({
'name': [project.name for project in all_projects],
'content_permissions': [project.content_permissions for project in all_projects],
'description': [project.description for project in all_projects],
'id': [project.id for project in all_projects],
'parent_id': [project.parent_id for project in all_projects]
})
Извлечение книг
Ресурсы книги для Tableau определены в классе WorkbookItem
. Класс соответствует ресурсам книги, к которым вы можете получить доступ с помощью REST API Tableau. Некоторые методы книги принимают в качестве аргументов экземпляр класса WorkbookItem
. Элемент книги определяет проект.
Напечатать названия первых 100 книг
С помощью первого фрагмента кода вы можете напечатать имена всех книг, используя следующий код:
with server.auth.sign_in(tableau_auth):
all_workbooks_items, pagination_item = server.workbooks.get()
# print names of first 100 workbooks
print([workbook.name for workbook in all_workbooks_items])
Извлеките все книги и сохраните их в фрейме данных.
Если количество книг превышает 100, вы можете использовать server.workbooks.all()
вместо server.workbooks.get()
для получения всех книг.
Следующий фрагмент кода позволяет получить все книги. В дополнение к четырем упомянутым атрибутам вы можете обратиться к классу WorkbookItem для получения дополнительной информации.
# workbook
with server.auth.sign_in(tableau_auth):
all_workbooks_items = server.workbooks.all()
df_workbook = pd.DataFrame({
'name': [workbook.name for workbook in all_workbooks_items],
'project_id': [workbook.project_id for workbook in all_workbooks_items],
'project_name': [workbook.project_name for workbook in all_workbooks_items],
'webpage_url': [workbook.webpage_url for workbook in all_workbooks_items]
})
Спасибо, что нашли время, чтобы вместе со мной изучить информацию, связанную с данными. Я ценю ваше участие. Если эта информация окажется для вас полезной, я приглашаю вас подписаться на меня или связаться со мной на LinkedIn. Приятного изучения!👋