Contenu du fichier

Cette page décrit le contenu de chaque dossier de package de configuration dans le package Manufacturing Data Engine (MDE).

Sous chaque dossier de package de configuration, MDE s'attend à trouver un fichier JSON par objet de configuration. Si vous souhaitez créer deux buckets, vous devez utiliser deux fichiers distincts. Les noms des fichiers sont ignorés. Toutefois, il est recommandé de nommer les fichiers d'après le nom de l'objet de configuration que vous souhaitez créer. Le schéma JSON réel de chaque objet dépend du type d'entité de configuration que vous souhaitez créer, mais il correspond au schéma JSON de la réponse API correspondante.

Pour organiser davantage le package de configuration, vous pouvez faire référence à d'autres fichiers JSON à intégrer dans le fichier sous un champ spécifique. Par exemple, le JSON suivant spécifie un bucket MDE avec un schéma défini dans un autre fichier JSON. Cela améliore la lisibilité et la facilité de gestion globales du package de configuration.


{
  "type": "TAG",
  "name": "second-tag-bucket",
  "attributes": {
    "instanceOverwriteMode": "true"
  },
  "versions": [
    {
      "version": 1,
      "schema": "'{{schemas/generic-schema.json}}'",
      "provider": "local",
    }
  ]
}

Pour faire référence à un autre fichier, vous pouvez utiliser la directive {{relative-path/file.json}} qui contient le chemin d'accès relatif du fichier à inclure dans le fichier existant. MDE résoudra le fichier et inclura le contenu JSON comme valeur du champ comportant la directive de référence. La valeur du champ schema de l'exemple précédent contiendra un sous-objet JSON intégré correspondant au contenu du fichier.

Pour certains objets, vous devez intégrer le contenu JSON sous forme de chaîne. Par exemple, le champ schema de l'objet bucket nécessite que le schéma du bucket soit intégré sous forme de chaîne. Dans ce cas, la directive de référence doit être entourée de guillemets simples ', ce qui indique à MDE d'intégrer le contenu tel quel sous forme de chaîne. La directive de référence sera la suivante : '{{relative-path/file.json}}'.

Le fichier référencé peut se trouver dans n'importe quel répertoire. Vous pouvez créer différents répertoires pour l'organiser. Par exemple, le répertoire appelé schemas dans l'exemple précédent est une structure de dossiers arbitraire permettant de regrouper les fichiers communs. Les types de fichiers pouvant être intégrés sont JSON ou WSTL pour les scripts Whistle.

Vous trouverez ci-dessous des exemples de configurations pour chaque entité MDE.

Bucket

Cette section présente un exemple de configuration pour un bucket MDE.


{
  "type": "TAG",
  "name": "second-tag-bucket",
  "attributes": {
    "instanceOverwriteMode": "true"
  },
  "versions": [
    {
      "version": 1,
      "schema": "'{{schemas/generic-schema.json}}'",
      "provider": "local"
    }
  ]
}


Spécification d'ingestion

Cette section présente un exemple de configuration pour une spécification d'ingestion 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
}

Classes de messages

Cette section présente un exemple de configuration pour les classes de messages 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"
}

Instances de métadonnées

Cette section présente un exemple de configuration pour les instances de métadonnées MDE.


{
    "bucketReference": {
        "bucketName": "default-tag-bucket",
        "bucketType": "TAG",
        "version": 1
    },
    "naturalKey": "cloud-natural-key",
    "instance": {
        "site": "simulated-site",
        "factory": "test-factory"
    }
}

Analyseurs

Cette section présente un exemple de configuration pour les analyseurs MDE.


{
  "name": "default-numeric-parser",
  "messageClassName": "default-numeric-message-class",
  "typeReference": {
    "name": "default-numeric-type",
    "version": 1
  },
  "disabled": false,
  "script": "'{{scripts/parser-script.wstl}}'"
}

Type

Cette section présente un exemple de configuration pour un type 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()"
          }
        }
      ]
    }
  ]
}