Contenuti file
Questa pagina descrive i contenuti di ogni cartella del pacchetto di configurazione nel pacchetto di Manufacturing Data Engine (MDE).
In ogni cartella del pacchetto di configurazione, MDE prevede di trovare un file JSON per ogni oggetto di configurazione. Se vuoi creare due bucket, devono esserci due file separati. I nomi dei file vengono ignorati. Tuttavia, è consigliabile denominare i file in base al nome dell'oggetto di configurazione che vuoi creare. Lo schema JSON effettivo per ogni oggetto dipende dal tipo di entità di configurazione che vuoi creare, ma corrisponde allo schema JSON della risposta API corrispondente.
Per organizzare ulteriormente il pacchetto di configurazione, puoi fare riferimento ad altri file JSON da incorporare nel file in un determinato campo. Ad esempio, il seguente JSON specifica un bucket MDE con uno schema in cui lo schema è definito in un altro file JSON. Ciò migliora la leggibilità e la manutenibilità complessive del pacchetto di configurazione.
{
"type": "TAG",
"name": "second-tag-bucket",
"attributes": {
"instanceOverwriteMode": "true"
},
"versions": [
{
"version": 1,
"schema": "'{{schemas/generic-schema.json}}'",
"provider": "local",
}
]
}
Per fare riferimento a un altro file, puoi utilizzare la
direttiva
{{relative-path/file.json}}
che contiene il percorso relativo del file da
includere nel file esistente. MDE risolverà il file e
includerà i contenuti JSON come valore del campo con la direttiva di riferimento. Il valore del campo schema nell'esempio precedente conterrà un sotto-oggetto JSON incorporato che corrisponde ai contenuti del file.
Per alcuni oggetti, devi incorporare i contenuti JSON come stringa. Ad esempio, il campo schema nell'oggetto bucket richiede che lo schema del bucket
venga incorporato come stringa e, in questo caso, la direttiva di riferimento deve
essere racchiusa tra virgolette singole ', che indica a MDE di incorporare i
contenuti non elaborati come stringa; la direttiva di riferimento sarà:
'{{relative-path/file.json}}'.
Il file a cui viene fatto riferimento può trovarsi in qualsiasi directory e puoi creare directory diverse per scopi organizzativi. Ad esempio, la directory denominata
schemas nell'esempio precedente è una struttura di cartelle arbitraria per raggruppare
i file comuni. I tipi di file che possono essere incorporati sono JSON o WSTL per gli script di Whistle.
Di seguito sono riportate configurazioni di esempio per ogni entità MDE.
Bucket
Questa sezione mostra una configurazione di esempio per un bucket MDE.
{
"type": "TAG",
"name": "second-tag-bucket",
"attributes": {
"instanceOverwriteMode": "true"
},
"versions": [
{
"version": 1,
"schema": "'{{schemas/generic-schema.json}}'",
"provider": "local"
}
]
}
Specifica di importazione
Questa sezione condivide una configurazione di esempio per una specifica di importazione MDE.
{
"name": "csv-full-ingestion-specification",
"source": "CSV",
"folderName": "test-csv-folder",
"separator": ",",
"skipRows": 10,
"headers": {
"headerNames": {
"names": [
"one",
"two",
"three"
]
}
},
"insertMetadata": true,
"disabled": false
}
Classi di messaggi
Questa sezione mostra una configurazione di esempio per le classi di messaggi MDE.
{
"name": "default-numeric-message-class",
"priority": 970,
"expression": "#root.event['value'] instanceof T(Number) && #root.event['timestamp'] != null && #root.event['tagName'] != null && #root.event['cluster'] == null"
}
Istanze dei metadati
Questa sezione condivide una configurazione di esempio per le istanze di metadati MDE.
{
"bucketReference": {
"bucketName": "default-tag-bucket",
"bucketType": "TAG",
"version": 1
},
"naturalKey": "cloud-natural-key",
"instance": {
"site": "simulated-site",
"factory": "test-factory"
}
}
Parser
Questa sezione mostra una configurazione di esempio per i parser MDE.
{
"name": "default-numeric-parser",
"messageClassName": "default-numeric-message-class",
"typeReference": {
"name": "default-numeric-type",
"version": 1
},
"disabled": false,
"script": "'{{scripts/parser-script.wstl}}'"
}
Tipo
Questa sezione mostra una configurazione di esempio per un tipo di MDE.
{
"archetype": "NUMERIC_DATA_SERIES",
"name": "default-numeric-type",
"disabled": false,
"versions": [
{
"version": 1,
"dataSchema": "",
"storageSpecs": [
{
"sink": "PUBSUB_PROTO",
"disabled": true,
"materializeCloudMetadata": false
},
{
"sink": "BIG_QUERY",
"disabled": false,
"materializeCloudMetadata": true
},
{
"sink": "GCS",
"disabled": false,
"materializeCloudMetadata": false
},
{
"sink": "PUBSUB_JSON",
"disabled": true,
"materializeCloudMetadata": false
},
{
"sink": "BIG_TABLE",
"disabled": false,
"materializeCloudMetadata": false
}
],
"metadataBuckets": [
{
"bucketName": "default-record-bucket",
"version": 1,
"required": false
},
{
"bucketName": "second-tag-bucket",
"version": 1,
"required": false
},
{
"bucketName": "default-tag-bucket",
"version": 1,
"required": false
}
],
"transformations": [
{
"window": {
"id": "10-minutes-window",
"durationMinutes": 10,
"valueExpression": "#message['data']['numeric'].toString()"
}
},
{
"eventChange": {
"keyExpression": "#message['tagName']",
"valueExpression": "#message['data']['numeric'].toString()"
}
}
]
}
]
}