Як автоматизувати оновлення даних у Dataverse

Опис вашого першого форуму.
Відповісти
admin
Адміністратор сайту
Повідомлень: 35
З нами з: Чет серпня 15, 2024 4:51 am

Як автоматизувати оновлення даних у Dataverse

Повідомлення admin »

🔁 Як автоматизувати оновлення даних у Dataverse: покрокова інструкція

Dataverse підтримує повноцінний REST API для інтеграції та автоматизації роботи з наборами даних. Це дозволяє:
• автоматично оновлювати файли у вже опублікованих версіях;
• додавати нові версії наборів;
• змінювати метадані;
• створювати нові набори з CI/CD або наукових серверів.

У цій темі — докладна інструкція, як налаштувати автоматичне оновлення даних у Dataverse за допомогою API та Python.

--------------------------------------------------------------------------------------------------------------

🔐 Крок 1. Отримайте API токен

1. Увійдіть у свій обліковий запис Dataverse (наприклад, https://dataverse.harvard.edu або власна інстанція).
2. Перейдіть у “Account Settings” → “API Token”.
3. Згенеруйте або скопіюйте свій токен.
4. Збережіть токен в `.env` файлі або як змінну середовища для безпеки.

Приклад:

Код: Виділити все

export DATAVERSE_TOKEN=abc123xyz456
------------------------------------------------------------------------------------------------------------------

📁 Крок 2. Підготуйте ID вашого набору даних

• Дізнайтесь persistent ID (DOI) або internal ID набору, який ви хочете оновлювати.
• Ви можете отримати список своїх наборів через API або у вебінтерфейсі.

Приклад DOI: `doi:10.5072/FK2/ABCDEFG`

------------------------------------------------------------------------------------------------------------------

⚙️ Крок 3. Сценарій автоматичного оновлення файлів (Python)

Ось простий скрипт для:
• оновлення файлу `data.csv` у вже опублікованому наборі;
• створення нової версії.

Код: Виділити все

import os
import requests

BASE_URL = "https://dataverse.example.org"
API_TOKEN = os.getenv("DATAVERSE_TOKEN")
PERSISTENT_ID = "doi:10.5072/FK2/ABCDEFG"
FILE_PATH = "data.csv"

headers = {
    "X-Dataverse-key": API_TOKEN
}

# Крок 1: створити нову версію як чернетку
resp = requests.post(
    f"{BASE_URL}/api/datasets/:persistentId/actions/:version?persistentId={PERSISTENT_ID}",
    headers=headers
)

# Крок 2: завантажити новий файл
files = {
    'file': (os.path.basename(FILE_PATH), open(FILE_PATH, 'rb')),
    'jsonData': (None, '{"description":"Оновлений файл даних"}')
}

upload = requests.post(
    f"{BASE_URL}/api/datasets/:persistentId/add?persistentId={PERSISTENT_ID}",
    headers=headers,
    files=files
)

# Крок 3: публікувати нову версію
publish = requests.post(
    f"{BASE_URL}/api/datasets/:persistentId/actions/:publish?persistentId={PERSISTENT_ID}&type=major",
    headers=headers
)

print("✅ Дані оновлено і опубліковано.")
Залежності: `pip install requests python-dotenv`

-------------------------------------------------------------------------------------------------------------------------

📝 Крок 4. (Опціонально) Оновіть метадані або changelog

Ви також можете:
• оновити поля заголовку, опису, авторів — через PUT-запит до API `/api/datasets/{id}/versions/:draft`
• додати changelog у README-файл або окреме поле опису

Код: Виділити все

PUT /api/datasets/{id}/versions/:draft
Content-Type: application/json
{
  "title": "Набір даних - оновлення липень 2025",
  "description": "Оновлення включає додані вимірювання, виправлення одиниць виміру..."
}
-----------------------------------------------------------------------------------------------------------------------------

📦 Крок 5. Інтегруйте в CI/CD (GitHub Actions, Cron)

• Запускайте цей скрипт щоразу, коли файл `data.csv` оновлюється
• Налаштуйте GitHub Actions, GitLab CI, Travis або cron job на сервері лабораторії

Приклад у GitHub Actions:
- `.github/workflows/update.yml`
- дія: `on: push`
- викликає Python-скрипт із оновленням даних

--------------------------------------------------------------------------------------------------------------

📚 Документація та інструменти

Dataverse API Documentation
Dataverse Python Client
PyDataverse (просунутий Python SDK)
Demo Dataverse (тестове середовище)

-----------------------------------------------------------------------------------------------------------------

📌 Висновки

Автоматичне оновлення даних у Dataverse:
• полегшує регулярну публікацію нових даних
• підтримує прозорість та відтворюваність
• дозволяє підключити до репозиторію інструменти аналізу, лабораторії, сенсори

💬 Маєте приклади автоматизації з вашої практики? Пишіть у цій темі!
Відповісти