Gegevens Importeren
Gegevens importeren uit meerdere bronnen
Importeer gegevens uit CSV, Excel, JSON en andere formaten. Verwerk grote datasets met streaming uploads.
Gegevensbestand Uploaden
POST /api/{tenantId}/{projectId}/dataset/{datasetId}/import
Upload en importeer gegevens uit verschillende bestandsformaten, waaronder CSV, Excel en XES. Ondersteunt het uploaden van grote bestanden met chunked overdracht.
Parameters
| Parameter | Type | Locatie | Beschrijving |
|---|---|---|---|
tenantId |
GUID | Pad | De tenant identificatie |
projectId |
GUID | Pad | De project identificatie |
datasetId |
GUID | Pad | De dataset identificatie |
file |
Bestand | Formuliergegevens | Gegevensbestand om te uploaden |
columnMapping |
JSON | Formuliergegevens | Configuratie voor kolomtoewijzing |
Configuratie Kolomtoewijzing
{
"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
}
}
Respons
{
"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 importeren met Mapping
POST /api/{tenantId}/{projectId}/dataset/{datasetId}/import/csv
Importeer CSV-gegevens met geavanceerde kolomtoewijzing, datatransformatie en validatieopties.
Request Body
{
"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 "
}
]
}
Respons
Retourneert hetzelfde importstatusobject als de endpoint voor het uploaden van bestanden.
Importstatus Ophalen
GET /api/{tenantId}/{projectId}/dataset/{datasetId}/import/{importId}/status
Monitor de voortgang en status van een gegevensimportoperatie inclusief validatieresultaten en foutdetails.
Respons
{
"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": "Ongeldig datumformaat",
"value": "2024-13-01 25:00:00"
}
],
"warnings": [
{
"row": 2847,
"column": "Resource",
"warning": "Lege waarde voor optioneel veld",
"value": ""
}
],
"statistics": {
"uniqueCases": 1247,
"uniqueActivities": 12,
"dateRange": {
"earliest": "2024-01-01T08:00:00Z",
"latest": "2024-01-31T17:30:00Z"
}
}
}
Ondersteunde Bestandsformaten
mindzieStudio ondersteunt meerdere dataformaten voor naadloze procesmining data-import:
CSV Bestanden
Door komma's gescheiden waarden met flexibele parsingopties.
- Aangepaste scheidingstekens (komma, puntkomma, tab)
- UTF-8, ISO-8859-1 codering ondersteuning
- Detectie van koprij
- Afhandeling van aanhalingstekens
Excel Bestanden
Microsoft Excel werkboeken (.xlsx, .xls).
- Ondersteuning voor meerdere werkbladen
- Behoud van celopmaak
- Herkenning van datum/tijd
- Streaming van grote bestanden
XES Formaat
IEEE XES-standaard voor procesmining.
- Volledige ondersteuning van de XES-specificatie
- Eventattributen en extensies
- Lifecycle-informatie
- Compatibiliteit met procesmining tools
JSON Bestanden
Gestructureerde JSON-gegevens voor complexe events.
- Ondersteuning voor geneste objecten
- Afhandeling van arrays
- Aangepaste schema-toewijzing
- Streaming JSON verwerking
JavaScript Voorbeeld: Bestand Uploaden met Voortgang
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); // Controleer elke 2 seconden
}
} 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
}
};
}
}
// Gebruik voorbeeld
const importer = new DataImporter(
'https://your-mindzie-instance.com',
'tenant-guid',
'project-guid',
'your-token'
);
// Beheer bestand upload met voortgangsmonitoring
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 gestart:', result.importId);
// Monitor voortgang
importer.monitorImport('dataset-guid', result.importId, (status) => {
if (status.error) {
console.error('Import mislukt:', status.error);
} else {
const progress = (status.rowsProcessed / status.rowsTotal) * 100;
console.log(`Voortgang: ${progress.toFixed(1)}% (${status.rowsProcessed}/${status.rowsTotal})`);
if (status.status === 'Completed') {
console.log('Import succesvol voltooid!');
console.log(`Verwerkt ${status.rowsProcessed} rijen met ${status.errors.length} fouten`);
}
}
});
} catch (error) {
console.error('Upload mislukt:', error);
}
});