디지털 트윈에 태그 추가
이 문서에서는 모델 및 디지털 트윈에 다양한 형식의 태그를 추가하는 방법과 태그를 사용하여 쿼리하는 방법을 설명합니다.
태그 개념을 사용하여 디지털 트윈을 추가로 식별하고 분류할 수 있습니다. 특히 사용자는 해당 Azure Digital Twins 인스턴스 내에서 Haystack Tags와 같은 기존 시스템의 태그를 복제할 수 있습니다.
이 문서에서는 디지털 트윈에서 태그를 구현하는 데 사용할 수 있는 패턴에 대해 설명합니다.
태그는 먼저 디지털 트윈을 설명하는 모델 내에 속성으로 추가됩니다. 그런 다음, 해당 속성이 모델을 기반으로 생성될 때 트윈에서 설정됩니다. 이후 쿼리에서 태그를 사용하여 트윈을 식별하고 필터링할 수 있습니다.
표식 태그
표식 태그는 "blue" 또는 "red"와 같이 디지털 트윈을 표시하거나 분류하는 데 사용되는 간단한 문자열입니다. 이 문자열은 태그의 이름이고, 표식 태그에는 의미 있는 값이 없습니다. 즉, 태그는 존재(또는 부재)로만 의미가 있습니다.
모델에 표식 태그 추가
표식 태그는 string
에서 boolean
로 DTDL 맵으로 모델링됩니다. 태그의 존재는 모두 중요하므로 부울 mapValue
은 무시됩니다.
다음은 표식 태그를 속성으로 구현하는 트윈 모델에서 발췌한 것입니다.
{
"@type": "Property",
"name": "tags",
"schema": {
"@type": "Map",
"mapKey": {
"name": "tagName",
"schema": "string"
},
"mapValue": {
"name": "tagValue",
"schema": "boolean"
}
}
},
디지털 트윈에 표식 태그 추가
tags
속성이 디지털 트윈 모델의 일부이면 이 속성의 값을 설정하여 디지털 트윈의 표식 태그를 설정할 수 있습니다.
다음은 .NET SDK를 사용하여 트윈에 대한 tags
표식을 설정하는 방법에 대한 코드 예입니다.
IDictionary<string, bool> tags = new Dictionary<string, bool>
{
{ "oceanview", true },
{ "VIP", true }
};
var twin = new BasicDigitalTwin
{
Metadata = { ModelId = "dtmi:example:Room;1" },
Contents =
{
{ "Temperature", 75 },
{ "tags", tags },
},
};
await client.CreateOrReplaceDigitalTwinAsync<BasicDigitalTwin>("myTwinID", twin);
위의 예제에 따라 만든, 태그 속성이 있는 트윈은 다음과 같이 표시됩니다.
{
"$dtId": "myTwinID",
"$etag": "W/\"e7429259-6833-46b4-b443-200a77a468c2\"",
"$metadata": {
"$model": "dtmi:example:Room;1",
"Temperature": {
"lastUpdateTime": "2021-08-03T14:24:42.0850614Z"
},
"tags": {
"lastUpdateTime": "2021-08-03T14:24:42.0850614Z"
}
},
"Temperature": 75,
"tags": {
"VIP": true,
"oceanview": true
}
}
팁
CLI 또는 API를 사용하여 쿼리하면 트윈의 JSON 표현을 확인할 수 있습니다.
표식 태그가 있는 쿼리
태그가 디지털 트윈에 추가되면 태그를 사용하여 쿼리에서 트윈을 필터링할 수 있습니다.
다음은 "red"로 태그가 지정된 모든 트윈을 가져오는 쿼리입니다.
SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)
더 복잡한 쿼리에 대한 태그를 결합할 수도 있습니다. 다음은 빨간색이 아닌 둥근 트윈을 모두 가져오는 쿼리입니다.
SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND IS_DEFINED(tags.round)
값 태그
값 태그는 "color": "blue"
또는 "color": "red"
와 같이 각 태그를 값으로 제공하는 데 사용되는 키-값 쌍입니다. 값 태그를 만들면 태그의 값을 무시하여 표식 태그로 사용할 수도 있습니다.
모델에 값 태그 추가
값 태그는 string
에서 string
으로 DTDL 맵으로 모델링 됩니다. mapKey
와 mapValue
모두 중요합니다.
다음은 값 태그를 속성으로 구현하는 트윈 모델에서 발췌한 것입니다.
{
"@type": "Property",
"name": "tags",
"schema": {
"@type": "Map",
"mapKey": {
"name": "tagName",
"schema": "string"
},
"mapValue": {
"name": "tagValue",
"schema": "string"
}
}
}
디지털 트윈에 값 태그 추가
표식 태그와 마찬가지로 모델에서 이 tags
속성의 값을 설정하여 디지털 트윈에서 값 태그를 설정할 수 있습니다. 값 태그를 표식 태그로 사용하려면 tagValue
필드를 빈 문자열 값(""
)으로 설정하면 됩니다.
아래에는 크기를 나타내는 값 태그가 있는 두 트윈의 JSON 본문이 나와 있습니다. 예제의 트윈에는 표식 태그로 사용되는 “red” 또는 “purple”의 값 태그도 있습니다.
large 크기의 값 태그와 “red”의 표식 태그가 있는 예제 Twin1:
{
"$dtId": "Twin1",
"$etag": "W/\"d3997593-cc5f-4d8a-8683-957becc2bcdd\"",
"$metadata": {
"$model": "dtmi:example:ValueTags;1",
"tags": {
"lastUpdateTime": "2021-08-03T14:43:02.3150852Z"
}
},
"tags": {
"red": "",
"size": "large"
}
}
small 크기의 값 태그와 “purple”의 표식 태그가 있는 예제 Twin2:
{
"$dtId": "Twin2",
"$etag": "W/\"e215e586-b14a-4234-8ddb-be69ebfef878\"",
"$metadata": {
"$model": "dtmi:example:ValueTags;1",
"tags": {
"lastUpdateTime": "2021-08-03T14:43:53.1517123Z"
}
},
"tags": {
"purple": "",
"size": "small"
}
}
값 태그가 있는 쿼리
표식 태그와 마찬가지로 값 태그를 사용하여 쿼리에서 트윈을 필터링할 수 있습니다. 값 태그와 표식 태그를 함께 사용할 수도 있습니다.
위 예에서는 red
가 표식 태그로 사용됩니다. 이는 "red"로 태그가 지정된 모든 트윈을 가져오는 쿼리입니다.
SELECT * FROM DIGITALTWINS WHERE IS_DEFINED(tags.red)
다음은 red가 아니라 small(값 태그)인 모든 엔터티를 가져오는 쿼리입니다.
SELECT * FROM DIGITALTWINS WHERE NOT IS_DEFINED(tags.red) AND tags.size = 'small'
다음 단계
디지털 트윈 모델 디자인 및 관리에 대해 자세히 알아보기
트윈 그래프 쿼리에 대해 자세히 알아보기