文件内容

本页介绍了制造数据引擎 (MDE) 的软件包中每个配置软件包文件夹的内容。

在每个配置软件包文件夹下,MDE 希望找到每个配置对象对应的 JSON 文件。如果您想创建两个分桶,则应有两个单独的文件。系统会忽略文件的名称。 不过,建议您根据要创建的配置对象名称来命名文件。每个对象的实际 JSON 架构取决于您要创建的配置实体的类型,但它与相应 API 响应的 JSON 架构相匹配。

如需进一步整理配置软件包,您可以引用要嵌入到特定字段下的文件中的其他 JSON 文件。例如,以下 JSON 指定了一个 MDE 存储桶,其架构在另一个 JSON 文件中定义。这有助于提高配置软件包的整体可读性和可维护性。


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

如需引用其他文件,您可以使用 {{relative-path/file.json}} 指令,其中包含需要包含在现有文件中的文件的相对路径。MDE 将解析该文件,并将 JSON 内容作为具有引用指令的字段的值包含在内。上例中 schema 字段的值将包含与文件内容匹配的嵌入式 JSON 子对象。

对于某些对象,您需要将 JSON 内容嵌入为字符串。例如,存储桶对象中的 schema 字段需要将存储桶架构嵌入为字符串,在这种情况下,引用指令应以单引号 ' 括起来,这会告知 MDE 将内容未经处理地嵌入为字符串;引用指令将为 '{{relative-path/file.json}}'

被引用的文件可以位于任何目录中,您可以出于组织目的创建不同的目录。例如,上例中名为 schemas 的目录是一个任意的文件夹结构,用于将常见文件分组在一起。可嵌入的文件类型为 Whistle 脚本的 JSONWSTL

以下是每个 MDE 实体的配置示例。

存储桶

本部分分享了 MDE 存储桶的示例配置。


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


注入规范

本部分分享了 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
}

消息类

本部分分享了 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"
}

元数据实例

本部分分享了 MDE 元数据实例的示例配置。


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

解析器

本部分分享了 MDE 解析器的示例配置。


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

类型

本部分分享了 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()"
          }
        }
      ]
    }
  ]
}