Datensatz Erstellung

Neue Datensätze Erstellen

Erstellen Sie Datensätze aus CSV-Dateien, ZIP-Paketen oder Binärdateien. Jedes Format erfordert spezifische Spaltenzuordnungen für die Process Mining Analyse.

Verbindungstest

Unautorisierter Ping

GET /api/{tenantId}/{projectId}/dataset/unauthorized-ping

Test-Endpunkt, der keine Authentifizierung benötigt.

Antwort

Ping Successful

Authentifizierter Ping

GET /api/{tenantId}/{projectId}/dataset/ping

Authentifizierter Ping-Endpunkt zur Überprüfung des API-Zugriffs.

Antwort (200 OK)

Ping Successful (tenant id: {tenantId})

Alle Datensätze Auflisten

GET /api/{tenantId}/{projectId}/dataset

Ruft alle Datensätze innerhalb des angegebenen Projekts ab.

Antwort (200 OK)

{
  "datasets": [
    {
      "datasetId": "550e8400-e29b-41d4-a716-446655440000",
      "datasetName": "Purchase Order Process",
      "datasetDescription": "Event log from SAP",
      "projectId": "660e8400-e29b-41d4-a716-446655440000",
      "caseIdColumnName": "CaseID",
      "activityColumnName": "Activity",
      "timeColumnName": "Timestamp",
      "resourceColumnName": "Resource",
      "beginTimeColumnName": null,
      "expectedOrderColumnName": null,
      "useDateOnlySorting": false,
      "useOnlyEventColumns": false,
      "dateCreated": "2024-01-15T10:30:00Z",
      "dateModified": "2024-01-15T14:45:00Z",
      "createdBy": "user@example.com",
      "modifiedBy": "user@example.com"
    }
  ]
}

Datensatz aus CSV Erstellen

POST /api/{tenantId}/{projectId}/dataset/csv

Erstellt einen neuen Datensatz durch Hochladen einer CSV-Datei mit Spaltenzuordnungen.

Anfrage (multipart/form-data)

Feld Typ Erforderlich Beschreibung
file Datei Ja CSV-Datei zum Hochladen (max. 1GB)
datasetName String Ja Name des neuen Datensatzes
caseIdColumn String Ja Spaltenname mit den Case-IDs
activityNameColumn String Ja Spaltenname mit den Aktivitätsnamen
activityTimeColumn String Ja Spaltenname mit Zeitstempeln
resourceColumn String Nein Spaltenname mit Ressource/Ausführer
startTimeColumn String Nein Spaltenname für Aktivitäts-Startzeiten
cultureInfo String Nein Kultur für Parsing (Standard: "en-US")

Antwort (200 OK)

{
  "datasetId": "550e8400-e29b-41d4-a716-446655440000",
  "caseCount": 5200,
  "eventCount": 150000,
  "invalidValueCount": 0,
  "skippedRowsCount": 0,
  "errors": [],
  "rowIssues": [],
  "statusCode": 200
}

Fehlerantwort (422 Unprocessable Entity)

{
  "errors": ["Column 'CaseID' not found in CSV file"],
  "statusCode": 422
}

Datensatz aus ZIP-Paket Erstellen

POST /api/{tenantId}/{projectId}/dataset/package

Erstellt einen neuen Datensatz aus einem ZIP-Paket mit Datendateien.

Anfrage (multipart/form-data)

Feld Typ Erforderlich Beschreibung
file Datei Ja ZIP-Paket Datei (max. 1GB)
datasetName String Ja Name des neuen Datensatzes
cultureInfo String Nein Kultur für Parsing (Standard: "en-US")

Antwort (200 OK)

{
  "datasetId": "550e8400-e29b-41d4-a716-446655440000",
  "caseCount": 5200,
  "eventCount": 150000,
  "invalidValueCount": 0,
  "skippedRowsCount": 0,
  "errors": [],
  "rowIssues": [],
  "statusCode": 200
}

Datensatz aus Binärdatei Erstellen

POST /api/{tenantId}/{projectId}/dataset/binary

Erstellt einen neuen Datensatz aus einer Binärdatei mit Spaltenzuordnungen.

Anfrage (multipart/form-data)

Feld Typ Erforderlich Beschreibung
file Datei Ja Binärdatei zum Hochladen (max. 1GB)
datasetName String Ja Name des neuen Datensatzes
caseIdColumn String Ja Spaltenname mit den Case-IDs
activityNameColumn String Ja Spaltenname mit den Aktivitätsnamen
activityTimeColumn String Ja Spaltenname mit Zeitstempeln
resourceColumn String Nein Spaltenname mit Ressource/Ausführer
startTimeColumn String Nein Spaltenname für Aktivitäts-Startzeiten

Antwort (200 OK)

Gleiche Struktur wie die Antwort bei der Erstellung aus CSV.

Implementierungsbeispiele

cURL - CSV Upload

curl -X POST "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/dataset/csv" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@event_log.csv" \
  -F "datasetName=Purchase Orders" \
  -F "caseIdColumn=CaseID" \
  -F "activityNameColumn=Activity" \
  -F "activityTimeColumn=Timestamp" \
  -F "resourceColumn=User" \
  -F "cultureInfo=en-US"

cURL - ZIP-Paket Upload

curl -X POST "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/dataset/package" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@data_package.zip" \
  -F "datasetName=SAP Export" \
  -F "cultureInfo=en-US"

Python

import requests

TENANT_ID = '12345678-1234-1234-1234-123456789012'
PROJECT_ID = '87654321-4321-4321-4321-210987654321'
BASE_URL = 'https://your-mindzie-instance.com'

class DatasetUploader:
    def __init__(self, token):
        self.headers = {'Authorization': f'Bearer {token}'}

    def create_from_csv(self, file_path, dataset_name, case_id_col, activity_col, time_col,
                        resource_col=None, start_time_col=None, culture='en-US'):
        """Erstellt einen Datensatz aus einer CSV-Datei."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dataset/csv'

        with open(file_path, 'rb') as f:
            files = {'file': (file_path, f, 'text/csv')}
            data = {
                'datasetName': dataset_name,
                'caseIdColumn': case_id_col,
                'activityNameColumn': activity_col,
                'activityTimeColumn': time_col,
                'cultureInfo': culture
            }
            if resource_col:
                data['resourceColumn'] = resource_col
            if start_time_col:
                data['startTimeColumn'] = start_time_col

            response = requests.post(url, headers=self.headers, files=files, data=data)

        if response.ok:
            return response.json()
        else:
            raise Exception(f'Upload fehlgeschlagen: {response.text}')

    def create_from_package(self, file_path, dataset_name, culture='en-US'):
        """Erstellt einen Datensatz aus einem ZIP-Paket."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dataset/package'

        with open(file_path, 'rb') as f:
            files = {'file': (file_path, f, 'application/zip')}
            data = {
                'datasetName': dataset_name,
                'cultureInfo': culture
            }

            response = requests.post(url, headers=self.headers, files=files, data=data)

        if response.ok:
            return response.json()
        else:
            raise Exception(f'Upload fehlgeschlagen: {response.text}')

    def list_datasets(self):
        """Listet alle Datensätze im Projekt auf."""
        url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dataset'
        response = requests.get(url, headers=self.headers)
        return response.json()

# Verwendung
uploader = DatasetUploader('your-auth-token')

# Erstellung aus CSV
result = uploader.create_from_csv(
    'event_log.csv',
    'Purchase Order Process',
    'CaseID',
    'Activity',
    'Timestamp',
    resource_col='User'
)
print(f"Erstellter Datensatz: {result['datasetId']}")
print(f"Fälle: {result['caseCount']}, Ereignisse: {result['eventCount']}")

# Alle Datensätze auflisten
datasets = uploader.list_datasets()
for ds in datasets['datasets']:
    print(f"- {ds['datasetName']} ({ds['datasetId']})")

JavaScript/Node.js

const TENANT_ID = '12345678-1234-1234-1234-123456789012';
const PROJECT_ID = '87654321-4321-4321-4321-210987654321';
const BASE_URL = 'https://your-mindzie-instance.com';

class DatasetUploader {
  constructor(token) {
    this.token = token;
  }

  async createFromCsv(file, datasetName, caseIdCol, activityCol, timeCol, options = {}) {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/dataset/csv`;

    const formData = new FormData();
    formData.append('file', file);
    formData.append('datasetName', datasetName);
    formData.append('caseIdColumn', caseIdCol);
    formData.append('activityNameColumn', activityCol);
    formData.append('activityTimeColumn', timeCol);
    formData.append('cultureInfo', options.culture || 'en-US');

    if (options.resourceColumn) {
      formData.append('resourceColumn', options.resourceColumn);
    }
    if (options.startTimeColumn) {
      formData.append('startTimeColumn', options.startTimeColumn);
    }

    const response = await fetch(url, {
      method: 'POST',
      headers: { 'Authorization': `Bearer ${this.token}` },
      body: formData
    });

    if (response.ok) {
      return await response.json();
    } else {
      throw new Error(`Upload fehlgeschlagen: ${await response.text()}`);
    }
  }

  async listDatasets() {
    const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/dataset`;
    const response = await fetch(url, {
      headers: { 'Authorization': `Bearer ${this.token}` }
    });
    return await response.json();
  }
}

// Verwendung (Browser)
const uploader = new DatasetUploader('your-auth-token');
const fileInput = document.getElementById('csvFile');

fileInput.addEventListener('change', async (e) => {
  const file = e.target.files[0];

  const result = await uploader.createFromCsv(
    file,
    'Mein Datensatz',
    'CaseID',
    'Activity',
    'Timestamp',
    { resourceColumn: 'User' }
  );

  console.log(`Erstellt: ${result.datasetId}`);
  console.log(`Fälle: ${result.caseCount}, Ereignisse: ${result.eventCount}`);
});

Antwortfelder

Feld Typ Beschreibung
datasetId GUID ID des erstellten Datensatzes
caseCount Integer Anzahl der importierten eindeutigen Fälle
eventCount Integer Gesamtanzahl der importierten Ereignisse
invalidValueCount Integer Anzahl der ungültigen Werte
skippedRowsCount Integer Anzahl der wegen Fehler übersprungenen Zeilen
errors Array Liste der Fehlermeldungen
rowIssues Array Detaillierte Informationen zu Zeilenproblemen
statusCode Integer HTTP-Statuscode

Best Practices

  • Spaltennamen validieren: Stellen Sie sicher, dass die Spaltennamen exakt übereinstimmen (Groß- und Kleinschreibung beachten)
  • Kultureinstellungen prüfen: Verwenden Sie die passende Kultur für Datums- und Zahlenformate
  • Große Dateien handhaben: Überwachen Sie den Upload-Fortschritt bei Dateien bis zu 1GB
  • Zeilenprobleme prüfen: Kontrollieren Sie das rowIssues-Array auf Datenqualitätsprobleme
  • Eindeutige Datensatznamen: Datensatznamen müssen innerhalb eines Projekts eindeutig sein