TABLEAU REST API: Учебники по TABLEAU-API-LIB

Отчеты по анализу воздействия Tableau Server: метаданные, публикация и использование API

Серия, посвященная повышению продуктивности вашей команды с помощью интерактивных визуальных элементов для отслеживания происхождения данных.

В первых трех статьях этой серии мы коснулись API метаданных Tableau и внутренней базы данных PostgreSQL и продемонстрировали, как вы можете объединить их для создания мощных наборов данных, которые подпитывают наши усилия по анализу воздействия.

Если вы впервые настраиваетесь на эту серию, вот предыдущие вехи для вашего удобства:

  1. Построение отчетов по анализу воздействия сервера Tableau: зачем и как
  2. Отчеты по анализу воздействия Tableau Server: доступ к метаданным (этап 1)
  3. Отчеты по анализу воздействия Tableau Server: объединение метаданных с PostgreSQL (этап 2)

Последняя веха, которую мы завершили, оставила нам CSV-файл, содержащий комбинацию вывода Metadata API (ядро нашего анализа воздействия) и вывода PostgreSQL (добавляет дополнительный вкус, включая количество просмотров пользователей и дату последнего взаимодействия).

Чего мы достигли в этом руководстве (этап 3)

В этой статье рассматриваются некоторые важные следующие шаги: как только у нас есть нужные данные, как мы должны их хранить? Можем ли мы опубликовать данные, чтобы другие пользователи Tableau могли создавать свои собственные интерактивные отчеты?

Один из возможных вариантов обработки этих данных - превратить их в экстракт Tableau .hyper и опубликовать на сервере Tableau. Это то, на чем мы сосредоточимся в следующих разделах.

К концу этой статьи у нас будет рабочий процесс, основанный на наших предыдущих этапах, который упаковывает эти данные в извлечение Tableau .hyper и публикует эти данные в нашей среде Tableau.

Познакомьтесь с новыми друзьями: API-интерфейсы Hyper и REST в Tableau

В эту статью входят два новых инструмента: Hyper API Tableau и REST API. Обратите внимание: если у вас есть какой-либо предыдущий опыт использования устаревшего API извлечения Tableau или устаревшего SDK Tableau, вам следует использовать Hyper API в дальнейшем (Tableau 10.5+) для создания файлов извлечения.

Hyper API позволяет нам создавать высокопроизводительные экстракты данных и оставляет открытой дверь для возможности добавлять или удалять данные из этих экстрактов. Файлы с расширением .hyper являются первоклассными гражданами в мире Tableau, поэтому для нас это обновление по сравнению с альтернативой продолжению использования файлов CSV или JSON.

Вы можете пойти в суши-ресторан и заказать макароны с сыром, но кто это делает? Похожая история с хранилищем данных в Tableau. Зачем использовать CSV на сервере Tableau, если Tableau построил весь механизм извлечения на основе файлов .hyper? Закажи проклятые суши.

Когда у нас будет готовый файл экстракта .hyper, мы передадим эстафету REST API Tableau, чтобы опубликовать извлечение в качестве источника данных на Tableau Server (или Tableau Online).

Ничего особенного, просто два простых варианта использования, основанных на отличных инструментах, предоставленных командой разработчиков Tableau. Привет сообществу #DataDev!

Продолжаем с того места, где мы остановились

Если вам нужно наверстать упущенное, не стесняйтесь прокручивать вверх и щелкать статьи, которые помогут вам выполнить предыдущие этапы.

В следующих разделах мы продолжим с того места, где остановились в конце второго этапа. У нас есть основные данные, необходимые для создания настраиваемых отчетов об анализе воздействия, и теперь мы хотим поместить эти данные в извлечение .hyper и опубликовать его на сервере Tableau (или Tableau Online).

Использование Hyper API

В духе объединения всех различных инструментов под одной крышей я использую Python в качестве повелителя, который управляет всеми различными инструментами в игре. Вот как мы можем использовать Hyper API, чтобы превратить существующие данные в извлечение .hyper.

Давайте сначала определим локальный путь к файлу, в котором будет храниться наш файл .hyper (он основан на коде Python, уже разработанном на предыдущем этапе - полный код см. В консолидированной статье GitHub в конце статьи):

PATH_TO_HYPER = 'tableau/datadev_round2/workbooks_and_owners.hyper'

Я позаимствовал код шаблона из документации Hyper API и адаптировал его для создания отрывка из Pandas DataFrame, как показано в GitHub gist ниже. Сводный код, охватывающий весь процесс, приведен в конце статьи.

Эта суть GitHub охватывает фрагмент кода, относящийся к этому разделу, но учтите, что запустить его самостоятельно не получится (используйте для этого консолидированную суть GitHub в конце статьи).

В моем собственном тестировании мне также нужно было немного очистить DataFrame, чтобы Hyper API не жаловался на то, что некоторые входные данные являются нулевыми. В частности, столбцы datetime и date были для меня головной болью при переходе от DataFrame pandas к извлечению .hyper, поэтому я стараюсь заставить столбцы даты набирать 'str', а затем преобразовывать этот текст обратно в дату в Tableau . Это избавляет от головной боли, связанной с беспокойством о том, представлена ​​ли дата в виде даты, даты и времени, отметки времени или любого другого конкретного формата даты.

Публикация файла .hyper в среде Tableau

Теперь, когда у нас есть файл извлечения, давайте отправим его на Tableau Server (или Tableau Online). Я буду использовать здесь библиотеку tableau-api-lib, которую я разработал и поддерживаю. Он разработан для отражения конечных точек REST API, найденных в Справочнике по REST API Tableau.

Основное различие между этой библиотекой и другими библиотеками REST API Python / Tableau (такими как собственная библиотека Tableau Server Client) состоит в том, что эта библиотека разработана таким образом, что, если вы видите конечную точку в документации Tableau, эта конечная точка будет реализована с такое же соглашение об именах.

Например, прямо сейчас нам нужно опубликовать источник данных. Глядя на справочник REST API сервера Tableau, мы находим желаемую конечную точку:

Реализация tableau-api-lib конечной точки «Publish Data Source» предоставляет нам метод экземпляра, который мы можем вызывать следующим образом:

conn.publish_data_source(<arguments to function go here>)

Давайте опубликуем этот отрывок! Но перед публикацией нам нужно знать проект (и, что более важно, идентификатор проекта), для которого мы публикуем.

Мы можем легко получить информацию о наших проектах с помощью tableau-api-lib (обратите внимание, что «conn» в примере кода представляет соединение с Tableau Server - подробности см. В полном коде в конце статьи):

projects_df = get_projects_dataframe(conn)
print(projects_df[['name', 'id']]

Вот как выглядит мой "projects_df":

Теперь давайте опубликуем отрывок из моего проекта Test Alt.

response = conn.publish_data_source(
datasource_file_path=PATH_TO_HYPER,
datasource_name='Impact Analysis Milestone3',
project_id='4d17b456-e50f-47a9-8551-38d6bae85911')

Теперь мы можем заглянуть внутрь переменной «response», чтобы убедиться, что этот запрос публикации был успешным:

print(response.json())

Подключитесь к файлу .hyper с помощью Tableau Desktop

Теперь, когда отрывок опубликован, мы можем убедиться, что он находится на сервере Tableau, и мы можем подключиться к нему с помощью Tableau Desktop для создания наших визуальных элементов.

А вот небольшой наглядный пример, который я создал в Tableau Desktop с привязкой к опубликованному отрывку:

Одно небольшое примечание о том, как я раньше обрабатывал поля даты: поскольку я подключаюсь к опубликованному отрывку, мне нужно создать вычисляемое поле, которое преобразует каждое из моих полей «date» в дату с помощью функции Tableau DATE ().

Это меня совсем не беспокоит, потому что меня столько раз сжигали из-за необходимости заменять источники данных, что я всегда строю вычисления заполнителей для своих полей и стараюсь избегать использования «сырых» полей, когда они попадают в Tableau. Но это уже разговор для другой статьи!

Подведение итогов

Вот и все, что нужно для этого учебника: взять наши первые две вехи (подключение к Metadata API и внутренней базе данных PostgreSQL) и сохранить эти данные в извлечении Tableau .hyper.

Следите за обновлениями и ждите следующего этапа, на котором мы более подробно рассмотрим, как эти данные можно использовать на панелях управления Tableau для создания интерактивных визуальных эффектов анализа воздействия!

Ближайшие вехи

Этап 4 (расчетное время прибытия - 13 мая 2020 г.): создайте нашу первую информационную панель для анализа воздействия, используя источник данных, опубликованный в этой статье.

Этап 5 (расчетное время прибытия - 20.05.2020): продемонстрируйте, как можно извлекать метаданные со ВСЕХ сайтов. На этапе 1 мы извлекли данные из Metadata API. По умолчанию эти данные относятся к сайту, на котором вы аутентифицированы. Используя REST API, мы можем перебирать все доступные сайты и извлекать метаданные для всего сервера.

Этап 6 (подлежит уточнению)

Консолидированный код

Используйте эту суть GitHub в качестве шаблона для реализации нашей третьей вехи. Имейте в виду, что приведенный здесь код - всего лишь один из возможных способов выполнения работы, и адаптируйте его по своему усмотрению.

Код становится длинным (~ 300 строк). Могу ли я рекомендовать, чтобы ваш производственный код выглядел так, как здесь? Неа. Но хранение всего в одном файле удобно для получения и проверки правильности концепции. Я оставлю это на ваше усмотрение, как интегрировать это в свои рабочие процессы.