

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 匯入中繼資料範例
<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_tw/iot-sitewise/latest/userguide/images/import-example-asset.png)


下列螢幕擷取畫面是在您執行先前程式碼範例 AWS IoT SiteWise 主控台 後，顯示於 中的模型、資產和階層。

![AWS IoT SiteWise 具有資產、資產模型和階層的模型。](http://docs.aws.amazon.com/zh_tw/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_tw/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"
        }
    ]
}
```