Скрипт Python экспорта и импорта дашборда API Apache Superset

Пример python скрипта для экспорта всех дашбордов из Apache Superset API

Для вызова скрипта Python по экспорту дашбордов через запрос к API Apache Superset нам понадобится:

  • host
  • refresh_token

Узнать где получить refresh_token, можно в статье: Экспорт / Импорт дашборда с помощью API Apache Superset

Краткая GIF по получению refresh_token в интерфейсе Swagger (один из способов):

Выгрузка дашбордов через API Apache Superset питоновским скриптом

Вот пример скрипта для экспорта дашбордов с помощью API Apache Superset:

import requests
import json
import os

def get_refresh_token(refresh_token):
    url = f"{superset_domain}/api/v1/security/refresh"
    headers = {'Accept': 'application/json', 'Authorization': f'Bearer {refresh_token}'}
    response = requests.post(url, headers=headers)
    if response.status_code == 200:
        return response.json()['access_token']
    else:
        raise Exception(f"Failed to refresh token: {response.text}")

def get_dashboard_ids(access_token):
    url = f"{superset_domain}/api/v1/dashboard/"
    headers = {'Authorization': f'Bearer {access_token}'}
    response = requests.get(url, headers=headers)
    # Формируем список с ids дашбордов
    dashboard_ids = [dashboard['id'] for dashboard in response.json()['result']]
    if response.status_code == 200:
        return dashboard_ids
    else:
        raise Exception(f"Failed to get dashboard IDs: {response.text}")

def export_dashboards(access_token, dashboard_ids, output_dir):
    url = f"{superset_domain}/api/v1/dashboard/export/?q={json.dumps(dashboard_ids)}"
    headers = {'Authorization': f'Bearer {access_token}'}
    response = requests.get(url, headers=headers, stream=True)
    if response.status_code == 200:
        zip_file_path = os.path.join(output_dir, 'dashboards.zip')
        with open(zip_file_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=128):
                f.write(chunk)
        return zip_file_path
    else:
        raise Exception(f"Failed to export dashboards: {response.text}")

superset_domain = "https://your-superset-domain.ru"
refresh_token = 'вставьте_сюда_ваш_refresh_token'

access_token = get_refresh_token(refresh_token)
dashboard_ids = get_dashboard_ids(access_token)

print(dashboard_ids)

output_dir = "/opt/bckp"
zip_file_path = export_dashboards(access_token, dashboard_ids, output_dir)
print(f"Dashboards exported successfully to: {zip_file_path}")

Замените <https://your-superset-domain.ru> на адрес и порт вашего Superset-сервера, <refresh_token> на ваш рефреш токен от API.

Скрипт получает все IDs дашбордов с помощью запросов к API Superset, сохраняет их в файле zip.

Пример python скрипта для импорта дашбордов из zip архива в Apache Superset через API

В процессе разработки

Ivan Shamaev (Admin)
Работаю с Apache Superset с 2021 года. Веду этот блог, чтобы систематизировать свои знания и поделиться ими с другими специалистами. Подписывайтесь на мой телеграм канал @apache_superset_bi
2
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x