Conteúdo do arquivo

Esta página descreve o conteúdo de cada pasta de pacote de configuração no pacote do Manufacturing Data Engine (MDE).

Em cada pasta de pacote de configuração, o MDE espera encontrar um arquivo JSON por objeto de configuração. Se você quiser criar dois buckets, serão necessários dois arquivos separados. Os nomes dos arquivos são ignorados. No entanto, é recomendável nomear os arquivos com o nome do objeto de configuração que você quer criar. O esquema JSON real de cada objeto depende do tipo de entidade de configuração que você quer criar, mas corresponde ao esquema JSON da resposta da API correspondente.

Para organizar ainda mais o pacote de configuração, consulte outros arquivos JSON a serem incorporados no arquivo em um campo específico. Por exemplo, o JSON a seguir especifica um bucket do MDE com um esquema definido em outro arquivo JSON. Isso melhora a legibilidade e a capacidade de manutenção geral do pacote de configuração.


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

Para referenciar outro arquivo, use a diretiva {{relative-path/file.json}} que contém o caminho relativo do arquivo que precisa ser incluído no arquivo atual. O MDE vai resolver o arquivo e incluir o conteúdo JSON como o valor do campo que tem a diretiva de referência. O valor do campo schema no exemplo anterior vai conter um subobjeto JSON incorporado que corresponde ao conteúdo do arquivo.

Para alguns objetos, é necessário incorporar o conteúdo JSON como uma string. Por exemplo, o campo schema no objeto de bucket exige que o esquema do bucket seja incorporado como uma string. Nesse caso, a diretiva de referência precisa estar entre aspas simples ', o que informa ao MDE para incorporar o conteúdo sem processamento como uma string. A diretiva de referência será: '{{relative-path/file.json}}'.

O arquivo referenciado pode estar em qualquer diretório, e você pode criar diretórios diferentes para fins de organização. Por exemplo, o diretório chamado schemas no exemplo anterior é uma estrutura de pastas arbitrária para agrupar arquivos comuns. Os tipos de arquivos que podem ser incorporados são JSON ou WSTL para scripts do Whistle.

Confira a seguir exemplos de configurações para cada entidade do MDE.

Bucket

Nesta seção, compartilhamos um exemplo de configuração para um bucket do MDE.


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


Especificação de ingestão

Esta seção compartilha uma configuração de amostra para uma especificação de ingestão de 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 mensagem

Esta seção compartilha um exemplo de configuração para classes de mensagens do 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"
}

Instâncias de metadados

Esta seção compartilha um exemplo de configuração para instâncias de metadados do MDE.


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

Analisadores

Esta seção compartilha uma configuração de exemplo para analisadores do 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

Esta seção compartilha uma configuração de amostra para um tipo de 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()"
          }
        }
      ]
    }
  ]
}