

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 导入元数据示例
<a name="bulk-operations-import-metadata-example"></a>

本节介绍了如何通过一次批量导入操作创建元数据文件，以导入资产模型和资产。

## 批量导入示例
<a name="example-metadata-file"></a>

通过一次批量导入操作导入多个资产模型和资产。以下示例说明了如何创建元数据文件来完成此操作。

 在此示例场景中，您拥有不同的工作场所，其工作单元中包含工业机器人。

此示例定义了两种资产模型：
+ `RobotModel1`：此资产模型表示您在工作场所拥有的一种特定类型的机器人。机器人具有测量值属性 `Temperature`。
+ `WorkCell`：此资产模型表示您的一个工作场所中的机器人集合。此资产模型定义了一个层次结构 `robotHierarchyOEM1`，用于表示工作单元包含机器人的关系。

此示例还定义了一些资产：
+ `WorkCell1`：波士顿站点内的一个工作单元
+ `RobotArm123456`：该工作单元中的一个机器人
+ `RobotArm987654`：该工作单元中的另一个机器人

以下 JSON 元数据文件定义了这些资产模型和资产。使用此元数据进行批量导入会在其中创建资产模型和资产 AWS IoT SiteWise，包括它们的层次关系。

### 用于导入的元数据文件
<a name="bulk-import-metadata-file"></a>

```
{
    "assetModels": [
        {
            "assetModelExternalId": "Robot.OEM1.3536",
            "assetModelName": "RobotModel1",
            "assetModelProperties": [
                {
                    "dataType": "DOUBLE",
                    "externalId": "Temperature",
                    "name": "Temperature",
                    "type": {
                        "measurement": {
                            "processingConfig": {
                                "forwardingConfig": {
                                    "state": "ENABLED"
                                }
                            }
                        }
                    },
                    "unit": "fahrenheit"
                }
            ]
        },
        {
            "assetModelExternalId": "ISA95.WorkCell",
            "assetModelName": "WorkCell",
            "assetModelProperties": [],
            "assetModelHierarchies": [
                {
                    "externalId": "workCellHierarchyWithOEM1Robot",
                    "name": "robotHierarchyOEM1",
                    "childAssetModelExternalId": "Robot.OEM1.3536"
                }
            ]
        }
    ],
    "assets": [
        {
            "assetExternalId": "Robot.OEM1.3536.123456",
            "assetName": "RobotArm123456",
            "assetModelExternalId": "Robot.OEM1.3536"
        },
        {
            "assetExternalId": "Robot.OEM1.3536.987654",
            "assetName": "RobotArm987654",
            "assetModelExternalId": "Robot.OEM1.3536"
        },
        {
            "assetExternalId": "BostonSite.Area1.Line1.WorkCell1",
            "assetName": "WorkCell1",
            "assetModelExternalId": "ISA95.WorkCell",
            "assetHierarchies": [
                {
                    "externalId": "workCellHierarchyWithOEM1Robot",
                    "childAssetExternalId": "Robot.OEM1.3536.123456"
                },
                {
                    "externalId": "workCellHierarchyWithOEM1Robot",
                    "childAssetExternalId": "Robot.OEM1.3536.987654"
                }
            ]
        }
    ]
}
```

## 模型和资产的初始载入示例
<a name="example-scenario1"></a>

在此示例场景中，您拥有不同的工作场所，包含一家公司的工业机器人。

此示例定义了多个资产模型：
+ `Sample_Enterprise` — 此资产模型表示这些站点所属的公司。此资产模型定义了一个层次结构 `Enterprise to Site`，用于表示站点与企业的关系。
+ `Sample_Site` — 此资产模型表示公司内部的制造站点。此资产模型定义了一个层次结构 `Site to Line`，用于表示装配线与站点的关系。
+ `Sample_Welding Line` — 此资产模型表示工作场所内的装配线。此资产模型定义了一个层次结构 `Line to Robot`，用于表示机器人与装配线的关系。
+ `Sample_Welding Robot` — 此资产模型表示您的工作场所中的一种特定类型的机器人。

此示例还根据资产模型定义资产。
+ `Sample_AnyCompany Motor` – 此资产是从 `Sample_Enterprise` 资产模型创建的。
+ `Sample_Chicago` – 此资产是从 `Sample_Site` 资产模型创建的。
+ `Sample_Welding Line 1` – 此资产是从 `Sample_Welding Line` 资产模型创建的。
+ `Sample_Welding Robot 1` – 此资产是从 `Sample_Welding Robot` 资产模型创建的。
+ `Sample_Welding Robot 2` – 此资产是从 `Sample_Welding Robot` 资产模型创建的。

以下 JSON 元数据文件定义了这些资产模型和资产。使用此元数据进行批量导入会在其中创建资产模型和资产 AWS IoT SiteWise，包括它们的层次关系。

### 用于载入要导入的资产和模型的 JSON 文件
<a name="bulk-import-JSON-file"></a>

```
{
    "assetModels": [
        {
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetModelName": "Sample_Welding Robot",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "name": "Serial Number",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "name": "CycleCount",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "EA"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "name": "Joint 1 Current",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "Amps"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Max_Current",
                    "name": "Max Joint 1 Current",
                    "type": {
                        "metric": {
                            "expression": "max(joint1current)",
                            "variables": [
                                {
                                    "name": "joint1current",
                                    "value": {
                                        "propertyExternalId": "External_Id_Welding_Robot_Joint_1_Current"
                                    }
                                }
                            ],
                            "window": {
                                "tumbling": {
                                    "interval": "5m"
                                }
                            }
                        }
                    },
                    "unit": "Amps"
                }
            ]
        },
        {
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetModelName": "Sample_Welding Line",
            "assetModelProperties": [
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Line_Availability",
                    "name": "Availability",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "%"
                }
            ],
            "assetModelHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "name": "Line to Robot",
                    "childAssetModelExternalId": "External_Id_Welding_Robot"
                }
            ]
        },
        {
            "assetModelExternalId": "External_Id_Site",
            "assetModelName": "Sample_Site",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "externalId": "External_Id_Site_Street_Address",
                    "name": "Street Address",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                }
            ],
            "assetModelHierarchies": [
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "name": "Site to Line",
                    "childAssetModelExternalId": "External_Id_Welding_Line"
                }
            ]
        },
        {
            "assetModelExternalId": "External_Id_Enterprise",
            "assetModelName": "Sample_Enterprise",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "name": "Company Name",
                    "externalId": "External_Id_Enterprise_Company_Name",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                }
            ],
            "assetModelHierarchies": [
                {
                    "externalId": "External_Id_Enterprise_TO_Site",
                    "name": "Enterprise to Site",
                    "childAssetModelExternalId": "External_Id_Site"
                }
            ]
        }
    ],
    "assets": [
        {
            "assetExternalId": "External_Id_Welding_Robot_1",
            "assetName": "Sample_Welding Robot 1",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S1000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S1000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S1000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Robot_2",
            "assetName": "Sample_Welding Robot 2",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S2000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S2000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S2000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Line_1",
            "assetName": "Sample_Welding Line 1",
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Line_Availability",
                    "alias": "AnyCompany/Chicago/Welding Line/Availability"
                }
            ],
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_1"
                },
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_2"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Site_Chicago",
            "assetName": "Sample_Chicago",
            "assetModelExternalId": "External_Id_Site",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "childAssetExternalId": "External_Id_Welding_Line_1"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Enterprise_AnyCompany",
            "assetName": "Sample_AnyEnterprise Motor",
            "assetModelExternalId": "External_Id_Enterprise",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Enterprise_TO_Site",
                    "childAssetExternalId": "External_Id_Site_Chicago"
                }
            ]
        }
    ]
}
```

以下屏幕截图显示的是运行前面的代码示例 AWS IoT SiteWise 控制台 之后显示的模型。

![\[AWS IoT SiteWise 包含资产和资产模型的模型。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/import-example-asset.png)


以下屏幕截图显示了运行上一个代码示例 AWS IoT SiteWise 控制台 之后显示在中的模型、资产和层次结构。

![\[AWS IoT SiteWise 包含资产、资产模型和层次结构的模型。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/hierarchy-example-import.png)


## 载入额外资产的示例
<a name="example-scenario2"></a>

此示例定义了要导入到您账户中现有资产模型的其他资产：
+ `Sample_Welding Line 2` – 此资产是从 `Sample_Welding Line` 资产模型创建的。
+ `Sample_Welding Robot 3` – 此资产是从 `Sample_Welding Robot` 资产模型创建的。
+ `Sample_Welding Robot 4` – 此资产是从 `Sample_Welding Robot` 资产模型创建的。

要为此示例创建初始资产，请参阅[模型和资产的初始载入示例](#example-scenario1)。

以下 JSON 元数据文件定义了这些资产模型和资产。使用此元数据进行批量导入会在其中创建资产模型和资产 AWS IoT SiteWise，包括它们的层次关系。

### 用于载入其他资产的 JSON 文件
<a name="bulk-import-JSON-file-additional-assets"></a>

```
{
    "assets": [
        {
            "assetExternalId": "External_Id_Welding_Robot_3",
            "assetName": "Sample_Welding Robot 3",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S3000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S3000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S3000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Robot_4",
            "assetName": "Sample_Welding Robot 4",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S4000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S4000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S4000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Line_1",
            "assetName": "Sample_Welding Line 1",
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_1"
                },
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_2"
                },
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_3"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Line_2",
            "assetName": "Sample_Welding Line 2",
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_4"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Site_Chicago",
            "assetName": "Sample_Chicago",
            "assetModelExternalId": "External_Id_Site",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "childAssetExternalId": "External_Id_Welding_Line_1"
                },
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "childAssetExternalId": "External_Id_Welding_Line_2"
                }
            ]
        }
    ]
}
```

以下屏幕截图显示了运行上一个代码示例 AWS IoT SiteWise 控制台 之后显示在中的模型、资产和层次结构。

![\[AWS IoT SiteWise 包含资产和资产模型的模型。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/additional-assets-import.png)


## 载入新属性的示例
<a name="example-scenario3"></a>

此示例定义了现有资产模型上的新属性。请参阅[载入额外资产的示例](#example-scenario2)，以载入其他资产和模型。
+ `Joint 1 Temperature` – 此属性已添加到 `Sample_Welding Robot` 资产模型中。此新属性还将传播到从 `Sample_Welding Robot` 资产模型创建的每个资产。

要向现有资产模型添加新属性，请参阅以下 JSON 元数据文件示例。如 JSON 所示，必须提供新属性以及现有 `Sample_Welding Robot` 资产模型的完整定义。如果未提供现有定义中的整个属性列表，则 AWS IoT SiteWise 删除省略的属性。

### 用于载入新属性的 JSON 文件
<a name="bulk-import-JSON-file-new-properties"></a>

此示例向资产模型添加了一个新属性 `Joint 1 Temperature`。

```
{
    "assetModels": [
        {
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetModelName": "Sample_Welding Robot",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "name": "Serial Number",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "name": "CycleCount",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "EA"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "name": "Joint 1 Current",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "Amps"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Max_Current",
                    "name": "Max Joint 1 Current",
                    "type": {
                        "metric": {
                            "expression": "max(joint1current)",
                            "variables": [
                                {
                                    "name": "joint1current",
                                    "value": {
                                        "propertyExternalId": "External_Id_Welding_Robot_Joint_1_Current"
                                    }
                                }
                            ],
                            "window": {
                                "tumbling": {
                                    "interval": "5m"
                                }
                            }
                        }
                    },
                    "unit": "Amps"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Temperature",
                    "name": "Joint 1 Temperature",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "degC"
                }
            ]
        }
    ]
}
```

## 管理数据流的示例
<a name="example-managing-data-streams"></a>

 此示例介绍了管理与资产属性关联的数据流的两种方法。重命名资产属性别名时，对于当前存储在资产属性的数据流中的历史数据，有两个选项。
+  选项一 — 保留当前数据流并仅重命名别名，这会支持使用新别名访问历史数据。

   在 JSON 元数据文件示例中，带有 ID `External_Id_Welding_Robot_Cycle_Count` 的资产属性将其别名更改为 `AnyCompany/Chicago/Welding Line/S3000/Count-Updated`。该资产属性的历史数据不受此次更改的影响，将保持不变。
+  选项二 — 为资产属性分配新的数据流，该数据流可使用新别名进行访问。旧数据流及其历史数据仍可使用旧别名进行访问，但不与任何资产属性相关联。

   在 JSON 元数据文件示例中，带有 ID `External_Id_Welding_Robot_Joint_1_Current` 的资产属性将其别名更改为 `AnyCompany/Chicago/Welding Line/S4999/1/Current`。这次，存在其他值 `retainDataOnAliasChange` 并将其设置为 `False`。通过此设置，原始数据流将与资产属性断开关联，并会创建一个不包含历史数据的新数据流。

 要使用原始历史数据访问旧数据流，请在中 AWS Console Home，转到 “*数据流*” 页面并搜索旧别名`AnyCompany/Chicago/Welding Line/S3000/1/Current`。

### 用于更新属性别名的 JSON 文件
<a name="bulk-import-JSON-file-update-aliases"></a>

```
{
    "assetExternalId": "External_Id_Welding_Robot_3",
    "assetName": "Sample_Welding Robot 3",
    "assetModelExternalId": "External_Id_Welding_Robot",
    "assetProperties": [
        {
            "externalId": "External_Id_Welding_Robot_Serial_Number",
            "attributeValue": "S3000"
        },
        {
            "externalId": "External_Id_Welding_Robot_Cycle_Count",
            "alias": "AnyCompany/Chicago/Welding Line/S3000/Count-Updated"
        },
        {
            "externalId": "External_Id_Welding_Robot_Joint_1_Current",
            "alias": "AnyCompany/Chicago/Welding Line/S4999/1/Current",
            "retainDataOnAliasChange": "FALSE"
        }
    ]
}
```