Пример 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
В процессе разработки
2 Comments