TABLEAU REST API: РУКОВОДСТВА ПО TABLEAU-API-LIB

Создайте список всех расписаний Tableau Server с помощью REST API.

Пошаговое руководство по доступу ко всем сведениям о расписании

Расписания входят в картину на многих различных уровнях управления средой Tableau Server. Они активируют подписки и извлекают обновления и запускаются через заранее определенные интервалы времени.

В приведенных ниже шагах мы рассмотрим простой способ получения исчерпывающего списка расписаний на вашем сервере.

В этом руководстве рассматривается использование пакета Python tableau-api-lib и является частью серии статей о том, как использовать Tableau Server как бочонок, предоставляя вам контроль над REST API Tableau Server.

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

Установка сцены

Используя tableau-api-lib, вы можете легко получить подробную информацию обо всех расписаниях на вашем сайте Tableau Server. Получив эти данные, вы можете передать их в любое количество рабочих процессов автоматизации, включая сокращение, обновление, создание или даже активацию/приостановку ваших расписаний.

Давайте начнем.

Шаг 1: убедитесь, что у вас установлена ​​tableau-api-lib

Даже если вы профессионал в этих руководствах, сделайте себе одолжение и скачайте последнюю версию библиотеки. Обновляю регулярно.

pip install --upgrade tableau-api-lib

Новичок в этом Python? Не парься, быстро соберешься. Следуйте этой инструкции по началу работы. В этом руководстве вы узнаете, как подключиться к серверу Tableau с помощью tableau-api-lib.

Шаг 2: подключитесь к среде Tableau Server

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

from tableau_api_lib import TableauServerConnection
from tableau_api_lib.utils.querying import get_schedules_dataframe

tableau_server_config = {
        'my_env': {
                'server': 'https://YourTableauServer.com',
                'api_version': '<YOUR_API_VERSION>',
                'username': '<YOUR_USERNAME>',
                'password': '<YOUR_PASSWORD>',
                'site_name': '<YOUR_SITE_NAME>',
                'site_url': '<YOUR_SITE_CONTENT_URL>'
        }
}
conn = TableauServerConnection(tableau_server_config, env='my_env')
conn.sign_in()

Забавный факт: вы также можете использовать токены личного доступа, если вы используете Tableau Server 2019.4 или новее. Если вы все о токенах доступа, ознакомьтесь с моей статьей для получения подробной информации о том, как их использовать.

Шаг 3: найдите строку кода, которая извлекает все детали вашего расписания.

На предыдущем шаге мы импортировали функцию из tableau-api-lib с именем get_schedules_dataframe. Вызов этой функции в вашем соединении с сервером Tableau (названном «conn» на предыдущем шаге) вернет Pandas DataFrame, содержащий все детали вашего расписания.

schedules_df = get_schedules_dataframe(conn)

Переменная schedules_df теперь содержит ваши расписания, которые будут выглядеть следующим образом:

Шаг 4: (необязательно) отфильтруйте ваши расписания DataFrame

Я часто нахожу полезным фильтровать результаты. Если я просматриваю свои расписания, чтобы определить подходящего кандидата для обновления извлечения, я бы (а) искал расписание, которое является «Активным», и (б) искал расписание разновидности «Извлечение».

Поскольку детали нашего расписания содержатся в Pandas DataFrame, мы извлекаем выгоду из всех наворотов, которые Pandas привносит на стол. Давайте посмотрим на это в действии.

Предположим, я хочу сократить свой список расписаний, чтобы показывать только активные расписания:

active_schedules_df = schedules_df.loc[schedules_df['state'] == 'Active']

Полученный DataFrame выглядит следующим образом:

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

custom_schedules_df = active_schedules_df.query("type == 'Extract' & frequency == 'Daily'")

Результаты для меня были:

Это в значительной степени сужает его, в моем случае. Похоже, я бы использовал расписание «extractRefreshBlog», если бы моим критерием было активное расписание обновления извлечения, выполняемое ежедневно.

Шаг 5: понимание деталей расписания, предоставленных вам

Вот краткий обзор информации, предоставляемой функцией get_schedules_dataframe. Пройдемся по столбцам по порядку слева направо.

  1. Уникальный идентификатор расписания. Это значение идентификатора можно передать другим методам REST API/tableau-api-lib, если вы хотите обновить или удалить определенное расписание.
  2. Название расписания.
  3. Состояние расписания («Активно» или «Приостановлено»). Приостановленные расписания не будут выполняться. Вы можете изменить расписание с «Активно» на «Приостановлено» и наоборот с помощью метода update_schedule() tableau-api-lib.
  4. Приоритеты на Tableau Server — это показатель того, как запланированная задача будет расставлена ​​по приоритетам фоновыми агентами, выполняющими ваши задачи. Меньшее числовое значение указывает на более срочную задачу. Например, если вы перешли на информационную панель и вручную запустили обновление извлечения, эта задача будет выполнена со значением приоритета «0». Это означает, что задача будет выполнена немедленно. Более низкие числовые значения имеют приоритет над более высокими числовыми значениями.
  5. Дата создания расписания.
  6. Дата последнего обновления/исполнения расписания.
  7. Тип расписания (Flow, Extract или Subscription).
  8. Частота выполнения расписания (Ежедневно, Еженедельно, Ежемесячно и т.д.)
  9. Время, когда расписание будет запущено в следующий раз.

Шаг 6: вывод сведений о расписании в файл CSV

Иногда вам просто нужен файл CSV. Вот как легко его создать:

schedules_df.to_csv('schedules_df.csv', index=False)

Это сохранит файл CSV с именем «schedules_df.csv» в вашем рабочем каталоге.

В качестве альтернативы вы можете передать эти данные в базу данных или продолжать использовать пакет Pandas в своих интересах, поскольку вы используете детали расписания для выполнения задач автоматизации в вашей среде Tableau Server.

Завершение

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

Удачи с вашей собственной автоматизацией Tableau Server! Свяжитесь с нами, если у вас есть вопросы о том, что REST API может вам помочь.