Datenimport
Daten aus mehreren Quellen importieren
Importieren Sie Daten aus CSV, Excel, JSON und anderen Formaten. Verarbeiten Sie große Datensätze mit Streaming-Uploads.
Daten-Datei hochladen
POST /api/{tenantId}/{projectId}/dataset/{datasetId}/import
Laden Sie Daten aus verschiedenen Dateiformaten wie CSV, Excel und XES hoch und importieren Sie diese. Unterstützt große Datei-Uploads mit chunked Transfer.
Parameter
| Parameter | Typ | Ort | Beschreibung |
|---|---|---|---|
tenantId |
GUID | Pfad | Der Mandantenbezeichner |
projectId |
GUID | Pfad | Der Projektbezeichner |
datasetId |
GUID | Pfad | Der Datensatzbezeichner |
file |
Datei | Formular-Daten | Die hochzuladende Datendatei |
columnMapping |
JSON | Formular-Daten | Konfiguration der Spaltenzuordnung |
Spaltenzuordnungskonfiguration
{
"mapping": [
{
"sourceColumn": "Case_ID",
"targetColumn": "CaseID",
"dataType": "string"
},
{
"sourceColumn": "Event_Name",
"targetColumn": "Activity",
"dataType": "string"
},
{
"sourceColumn": "Event_Time",
"targetColumn": "Timestamp",
"dataType": "datetime",
"format": "yyyy-MM-dd HH:mm:ss"
}
],
"options": {
"hasHeader": true,
"delimiter": ",",
"encoding": "UTF-8",
"skipRows": 0
}
}
Antwort
{
"importId": "import-550e8400-e29b-41d4-a716-446655440000",
"datasetId": "550e8400-e29b-41d4-a716-446655440000",
"status": "Processing",
"fileName": "process_events.csv",
"fileSize": 15728640,
"rowsProcessed": 0,
"rowsTotal": 50000,
"errors": [],
"warnings": [],
"startTime": "2024-01-15T10:30:00Z"
}
CSV mit Zuordnung importieren
POST /api/{tenantId}/{projectId}/dataset/{datasetId}/import/csv
Importieren Sie CSV-Daten mit erweiterten Spaltenzuordnungs-, Datenumwandlungs- und Validierungsoptionen.
Anfragekörper
{
"fileUrl": "https://your-storage.com/data/events.csv",
"mapping": [
{
"sourceColumn": "order_id",
"targetColumn": "CaseID",
"dataType": "string",
"required": true
},
{
"sourceColumn": "step_name",
"targetColumn": "Activity",
"dataType": "string",
"required": true
},
{
"sourceColumn": "timestamp",
"targetColumn": "Timestamp",
"dataType": "datetime",
"format": "ISO8601",
"required": true
},
{
"sourceColumn": "user_name",
"targetColumn": "Resource",
"dataType": "string",
"required": false
}
],
"options": {
"hasHeader": true,
"delimiter": ",",
"encoding": "UTF-8",
"skipRows": 1,
"validateData": true,
"replaceExisting": false
},
"transformations": [
{
"column": "Activity",
"type": "replace",
"find": "ORDER_",
"replace": "Order "
}
]
}
Antwort
Gibt das gleiche Importstatus-Objekt zurück wie der Dateiupload-Endpunkt.
Importstatus abrufen
GET /api/{tenantId}/{projectId}/dataset/{datasetId}/import/{importId}/status
Überwachen Sie den Fortschritt und Status eines Datenimportvorgangs einschließlich Validierungsergebnissen und Fehlerdetails.
Antwort
{
"importId": "import-550e8400-e29b-41d4-a716-446655440000",
"datasetId": "550e8400-e29b-41d4-a716-446655440000",
"status": "Completed",
"fileName": "process_events.csv",
"fileSize": 15728640,
"rowsProcessed": 49876,
"rowsTotal": 50000,
"rowsSkipped": 124,
"startTime": "2024-01-15T10:30:00Z",
"endTime": "2024-01-15T10:45:23Z",
"duration": "00:15:23",
"errors": [
{
"row": 1532,
"column": "Timestamp",
"error": "Ungültiges Datumsformat",
"value": "2024-13-01 25:00:00"
}
],
"warnings": [
{
"row": 2847,
"column": "Resource",
"warning": "Leerer Wert für optionales Feld",
"value": ""
}
],
"statistics": {
"uniqueCases": 1247,
"uniqueActivities": 12,
"dateRange": {
"earliest": "2024-01-01T08:00:00Z",
"latest": "2024-01-31T17:30:00Z"
}
}
}
Unterstützte Dateiformate
mindzieStudio unterstützt mehrere Datenformate für einen nahtlosen Import von Process Mining-Daten:
CSV-Dateien
Durch Komma getrennte Werte mit flexiblen Parsing-Optionen.
- Benutzerdefinierte Trennzeichen (Komma, Semikolon, Tabulator)
- Unterstützung für UTF-8, ISO-8859-1 Kodierung
- Erkennung der Kopfzeile
- Umgang mit Anführungszeichen
Excel-Dateien
Microsoft Excel-Arbeitsmappen (.xlsx, .xls).
- Unterstützung für mehrere Arbeitsblätter
- Beibehaltung der Zellformatierung
- Erkennung von Datum/Uhrzeit
- Streaming großer Dateien
XES-Format
IEEE XES-Standard für Process Mining.
- Volle Unterstützung der XES-Spezifikation
- Ereignisattributen und Erweiterungen
- Lebenszyklusinformationen
- Kompatibilität mit Process Mining Werkzeugen
JSON-Dateien
Strukturierte JSON-Daten für komplexe Ereignisse.
- Unterstützung verschachtelter Objekte
- Umgang mit Arrays
- Benutzerdefinierte Schema-Zuordnung
- Streaming-Verarbeitung von JSON
JavaScript-Beispiel: Datei-Upload mit Fortschritt
class DataImporter {
constructor(baseUrl, tenantId, projectId, token) {
this.baseUrl = baseUrl;
this.tenantId = tenantId;
this.projectId = projectId;
this.headers = {
'Authorization': `Bearer ${token}`
};
}
async uploadFile(datasetId, file, columnMapping) {
const formData = new FormData();
formData.append('file', file);
formData.append('columnMapping', JSON.stringify(columnMapping));
const url = `${this.baseUrl}/api/${this.tenantId}/${this.projectId}/dataset/${datasetId}/import`;
const response = await fetch(url, {
method: 'POST',
headers: this.headers,
body: formData
});
return await response.json();
}
async importCsv(datasetId, csvConfig) {
const url = `${this.baseUrl}/api/${this.tenantId}/${this.projectId}/dataset/${datasetId}/import/csv`;
const response = await fetch(url, {
method: 'POST',
headers: {
...this.headers,
'Content-Type': 'application/json'
},
body: JSON.stringify(csvConfig)
});
return await response.json();
}
async getImportStatus(datasetId, importId) {
const url = `${this.baseUrl}/api/${this.tenantId}/${this.projectId}/dataset/${datasetId}/import/${importId}/status`;
const response = await fetch(url, {
headers: this.headers
});
return await response.json();
}
async monitorImport(datasetId, importId, callback) {
const checkStatus = async () => {
try {
const status = await this.getImportStatus(datasetId, importId);
callback(status);
if (status.status === 'Processing') {
setTimeout(checkStatus, 2000); // Prüfe alle 2 Sekunden
}
} catch (error) {
callback({ error: error.message });
}
};
checkStatus();
}
buildStandardMapping() {
return {
mapping: [
{
sourceColumn: 'case_id',
targetColumn: 'CaseID',
dataType: 'string'
},
{
sourceColumn: 'activity',
targetColumn: 'Activity',
dataType: 'string'
},
{
sourceColumn: 'timestamp',
targetColumn: 'Timestamp',
dataType: 'datetime',
format: 'ISO8601'
}
],
options: {
hasHeader: true,
delimiter: ',',
encoding: 'UTF-8',
validateData: true
}
};
}
}
// Beispiel zur Nutzung
const importer = new DataImporter(
'https://your-mindzie-instance.com',
'tenant-guid',
'project-guid',
'your-token'
);
// Datei-Upload mit Fortschrittsüberwachung
document.getElementById('fileInput').addEventListener('change', async (e) => {
const file = e.target.files[0];
if (!file) return;
const mapping = importer.buildStandardMapping();
try {
const result = await importer.uploadFile('dataset-guid', file, mapping);
console.log('Upload gestartet:', result.importId);
// Fortschritt überwachen
importer.monitorImport('dataset-guid', result.importId, (status) => {
if (status.error) {
console.error('Import fehlgeschlagen:', status.error);
} else {
const progress = (status.rowsProcessed / status.rowsTotal) * 100;
console.log(`Fortschritt: ${progress.toFixed(1)}% (${status.rowsProcessed}/${status.rowsTotal})`);
if (status.status === 'Completed') {
console.log('Import erfolgreich abgeschlossen!');
console.log(`Verarbeitete ${status.rowsProcessed} Zeilen mit ${status.errors.length} Fehlern`);
}
}
});
} catch (error) {
console.error('Upload fehlgeschlagen:', error);
}
});