Рабочая книга в Tableau содержит листы. Лист может быть рабочим листом, информационной панелью или журналом. Рабочий лист содержит одно представление вместе с полками, карточками, легендами и панелями данных и аналитики на боковой панели. При работе с листами в Tableau вам может понадобиться получить список представлений, принадлежащих вашим клиентам, и задокументировать представления. Вы можете пойти еще дальше, объединив эти представления для анализа. Это может помочь вашей компании решить множество проблем.
Как администратор сервера Tableau, вы можете получать эти представления и автоматизировать ежедневную отправку представлений вашему клиенту или владельцам представлений. Это один из многих возможных вариантов использования. Интересно, что для реализации этого вы также можете использовать библиотеку запросов Python и REST API Tableau Server.
Преимущество использования библиотеки запросов Python и REST API Tableau Server заключается в том, что вы можете вводить новшества и создавать собственное приложение. Вы можете решить вывести поезд на шоссе, не попав в аварию.
В этой статье я научу вас, как использовать клиент Tableau Server для получения списка всех представлений рабочего листа Tableau. Я собираюсь использовать библиотеку Python сервер-клиент Tableau (TSC) для реализации этого решения.
Ниже приведен список вещей, которые мы собираемся сделать:
1. Аутентифицируйте наше приложение для подключения к серверу Tableau.
2. Получите список всех книг на сервере. Вы можете получить такую информацию, как идентификатор, имя, идентификатор владельца книги сервера.
3. Получите все представления конкретной книги.
4. Заполните представления в виде файла CSV или PDF в зависимости от того, какой файл/формат вам нужен.
5. Сохраните эти представления как файл CSV/PDF.
Звучит круто, верно? Теперь приступим.
Прежде всего, нужно импортировать библиотеки Python, которые мы будем использовать. Нам нужен клиент Tableau Server (TSC) и Pandas. Давайте импортируем библиотеки в следующие две строки кода Python.
import tableauserverclient as TSC import pandas as pd
Следующим шагом является предоставление наших учетных данных для подключения к серверу Tableau. Мы также предоставим конечную точку нашего сервера.
Шаг 1. Аутентифицируйте наше приложение для подключения к серверу Tableau.
tableau_auth = TSC.TableauAuth('EMAIL', 'Password', 'SiteName') server = TSC.Server('https://prod-useast-a.online.tableau.com/')
Здесь мы пройдем аутентификацию на сервере таблицы и начнем работать с ресурсами рабочей книги.
request_options = TSC.RequestOptions(pagesize=1000) with server.auth.sign_in(tableau_auth):
Шаг 2. Получите список всех книг на сервере.
Следующие две строки кода получат все книги на сервере Tableau и составят список идентификаторов, связанных с каждой книгой.
all_workbooks_items, pagination_item = server.workbooks.get() workbooks = [workbook.id for workbook in all_workbooks_items]
Следующие две строки кода выводят слово ________workbooks___________, а также выводят идентификатор всех рабочих книг.
print("________workbooks___________") print(workbooks)
На этом этапе мы собираемся перебрать рабочие книги сервера, поймать рабочие книги, напечатать имя рабочих книг и получить все представления каждой рабочей книги.
Мы будем использовать view.name и view.id для получения атрибутов представлений, принадлежащих книгам. Мы пройдемся по рабочим книгам и получим эти свойства.
Шаг 3. Теперь давайте получим все представления конкретной книги.
for ids in workbooks: workbookinfo = server.workbooks.get_by_id(ids) print("\nThe views for {0}: ".format(workbookinfo.name)) viewsheets = [view.name for view in workbookinfo.views] view_ids = [view.id for view in workbookinfo.views] print(viewsheets)
Эта часть этого поста посвящена получению представлений книг в формате CSV. Мы собираемся заполнить представления как CSV; есть также возможность сделать это в формате PDF.
Давайте пройдемся по идентификаторам представлений и запишем представление в формате CSV; мы также можем проанализировать фильтр, используя req_options. Обратите внимание, что я установил значение «Нет».
Шаг 4. Следующим шагом является заполнение представлений в виде файлов CSV или PDF и сохранение файла в моем рабочем каталоге.
for view_id in view_ids: #view_item = server.view.get_by_id('d79634e1-6063-4ec9-95ff-50acbf609ff5') view_item = server.view.get_by_id(view_id) server.views.populate_csv(view_item, req_options=None) with open('./view_data.csv', 'wb') as f: f.write(b''.join(view_item.csv))
Измените строки ниже, если вы хотите получить представление в формате pdf вместо CSV.
server.views.populate_pdf(view_item, req_options=None) with open('./view_data.pdf', 'wb') as f: f.write(view_item.pdf)
Другой метод, который мы можем использовать для получения представлений рабочих книг Tableau, — использовать параметр populate_views рабочих книг. Запрос вернет ViewItem, относящуюся к интересующей нас книге/книгам.
ViewItem будет списком всех представлений книг, и мы можем дополнительно заполнить представления в виде CSV-файла.
workbookview = server.workbooks.populate_views(workbookinfo) print(workbookview) server.auth.sign_out()
Обратите внимание, что заполнение представления в виде файла CSV хорошо работает, когда представление представляет собой кросс-таблицу, а заполнение представления в виде файла PDF в целом работает хорошо.
Ниже приведен полный код.
import tableauserverclient as TSC import pandas as pd tableau_auth = TSC.TableauAuth('XXXX', 'XXXXX', 'XXXXXX') server = TSC.Server('https://prod-useast-a.online.tableau.com/') request_options = TSC.RequestOptions(pagesize=1000) with server.auth.sign_in(tableau_auth): all_workbooks_items, pagination_item = server.workbooks.get() workbooks = [workbook.id for workbook in all_workbooks_items] print("________workbooks___________") print(workbooks) for ids in workbooks: workbookinfo = server.workbooks.get_by_id(ids) print("\nThe views for {0}: ".format(workbookinfo.name)) viewsheets = [view.name for view in workbookinfo.views] view_ids = [view.name for view in workbookinfo.views] print(viewsheets) for view_id in view_ids: #view_item = server.view.get_by_id('d79634e1-6063-4ec9-95ff-50acbf609ff5') view_item = server.view.get_by_id(view_id) server.views.populate_csv(view_item, req_options=None) with open('./view_data.csv', 'wb') as f: f.write(b''.join(view_item.csv)) workbookview = server.workbooks.populate_views(workbookinfo) print(workbookview) server.auth.sign_out()
И это обертка. Мы успешно загрузили представления рабочего листа Tableau в виде файла CSV с помощью REST API. Если вам понравился этот пост, хлопните в ладоши и поделитесь им с друзьями.