Пример 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