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. Пройдемся по столбцам по порядку слева направо.
- Уникальный идентификатор расписания. Это значение идентификатора можно передать другим методам REST API/tableau-api-lib, если вы хотите обновить или удалить определенное расписание.
- Название расписания.
- Состояние расписания («Активно» или «Приостановлено»). Приостановленные расписания не будут выполняться. Вы можете изменить расписание с «Активно» на «Приостановлено» и наоборот с помощью метода update_schedule() tableau-api-lib.
- Приоритеты на Tableau Server — это показатель того, как запланированная задача будет расставлена по приоритетам фоновыми агентами, выполняющими ваши задачи. Меньшее числовое значение указывает на более срочную задачу. Например, если вы перешли на информационную панель и вручную запустили обновление извлечения, эта задача будет выполнена со значением приоритета «0». Это означает, что задача будет выполнена немедленно. Более низкие числовые значения имеют приоритет над более высокими числовыми значениями.
- Дата создания расписания.
- Дата последнего обновления/исполнения расписания.
- Тип расписания (Flow, Extract или Subscription).
- Частота выполнения расписания (Ежедневно, Еженедельно, Ежемесячно и т.д.)
- Время, когда расписание будет запущено в следующий раз.
Шаг 6: вывод сведений о расписании в файл CSV
Иногда вам просто нужен файл CSV. Вот как легко его создать:
schedules_df.to_csv('schedules_df.csv', index=False)
Это сохранит файл CSV с именем «schedules_df.csv» в вашем рабочем каталоге.
В качестве альтернативы вы можете передать эти данные в базу данных или продолжать использовать пакет Pandas в своих интересах, поскольку вы используете детали расписания для выполнения задач автоматизации в вашей среде Tableau Server.
Завершение
В следующем посте мы рассмотрим, как мы можем расширить то, что мы узнали здесь, для создания рабочего процесса, который клонирует наши расписания и копирует состояние каждого расписания. Это часто необходимо при переносе контента с одного сервера на другой.
Удачи с вашей собственной автоматизацией Tableau Server! Свяжитесь с нами, если у вас есть вопросы о том, что REST API может вам помочь.