你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 数字孪生查询语言参考:SELECT 子句
本文档包含有关 Azure 数字孪生查询语言 SELECT 子句的参考信息。
SELECT 子句是查询的第一个部分。 它指定查询将返回的列的列表。
所有查询都需要此子句。
SELECT *
在 select 语句中使用 *
字符按原样投影数字孪生体文档,而无需将其分配给结果集中的属性。
注意
仅当查询不使用 JOIN
时,SELECT *
才是有效语法。 有关使用 JOIN
的查询的详细信息,请参阅 Azure 数字孪生查询语言参考:JOIN 子句。
语法
SELECT *
--FROM ...
返回
从查询返回的属性集。
示例
下面的查询将返回实例中的所有数字孪生体。
SELECT *
FROM DIGITALTWINS
包含投影的 SELECT 列
可使用 SELECT 子句中的投影来选择查询将返回的列。 可指定孪生和关系的命名集合,或孪生和关系的属性。
基元属性和复杂属性现在都支持投影。
语法
投影集合:
SELECT <twin-or-relationship-collection>
投影属性:
SELECT <twin-or-relationship-collection>.<property-name>
返回
投影中指定的孪生体、属性或关系的集合。
如果对于特定的数据行,投影中包含的属性不存在,则结果集中同样也不存在该属性。 有关此行为的示例,请参阅投影属性示例:数据行不存在该属性。
示例
示例方案
对于以下示例,请考虑包含以下数据元素的孪生图:
- 名为 FactoryA 的工厂孪生体
- 包含一个名为
name
的属性,其值为FactoryA
- 包含一个名为
- 名为 Contoso 的使用者孪生体
- 包含一个名为
name
的属性,其值为Contoso
- 包含一个名为
- 从 FactoryA 到 Contoso 的 consumerRelationship 关系,称为
FactoryA-consumerRelationship-Contoso
- 包含一个名为
managedBy
的属性,其值为Jeff
- 包含一个名为
以下是说明此情况的关系图:
投影集合示例
以下是一个示例查询,该查询投影该图的一个集合。 下面的查询将返回实例中的所有数字孪生体,方法是将整个孪生体集合命名为 T
,并将 T
投影为要返回的集合。
SELECT T
FROM DIGITALTWINS T
以下是此查询返回的 JSON 有效负载:
{
"value": [
{
"result": [
{
"T": {
"$dtId": "FactoryA",
"$etag": "W/\"d22267a0-fd4f-4f6b-916d-4946a30453c9\"",
"$metadata": {
"$model": "dtmi:contosocom:DigitalTwins:Factory;1",
"name": {
"lastUpdateTime": "2021-04-19T17:15:54.4977151Z"
}
},
"name": "FactoryA"
}
},
{
"T": {
"$dtId": "Contoso",
"$etag": "W/\"a96dc85e-56ae-4061-866b-058a149e03d8\"",
"$metadata": {
"$model": "dtmi:com:contoso:Consumer;1",
"name": {
"lastUpdateTime": "2021-04-19T17:16:30.2154166Z"
}
},
"name": "Contoso"
}
}
]
}
],
"continuationToken": "null"
}
使用 JOIN 的投影示例
投影通常用于返回在 JOIN
中指定的集合。 以下查询使用投影来返回使用者、工厂和关系数据。 有关此示例中使用的 JOIN
语法的详细信息,请参阅 Azure 数字孪生查询语言参考:JOIN 子句。
SELECT Consumer, Factory, Relationship
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'
以下是此查询返回的 JSON 有效负载:
{
"value": [
{
"result": [
{
"Consumer": {
"$dtId": "Contoso",
"$etag": "W/\"a96dc85e-56ae-4061-866b-058a149e03d8\"",
"$metadata": {
"$model": "dtmi:com:contoso:Consumer;1",
"name": {
"lastUpdateTime": "2021-04-19T17:16:30.2154166Z"
}
},
"name": "Contoso"
},
"Factory": {
"$dtId": "FactoryA",
"$etag": "W/\"d22267a0-fd4f-4f6b-916d-4946a30453c9\"",
"$metadata": {
"$model": "dtmi:contosocom:DigitalTwins:Factory;1",
"name": {
"lastUpdateTime": "2021-04-19T17:15:54.4977151Z"
}
},
"name": "FactoryA"
},
"Relationship": {
"$etag": "W/\"f01e07c1-19e4-4bbe-a12d-f5761e86d3e8\"",
"$relationshipId": "FactoryA-consumerRelationship-Contoso",
"$relationshipName": "consumerRelationship",
"$sourceId": "FactoryA",
"$targetId": "Contoso",
"managedBy": "Jeff"
}
}
]
}
],
"continuationToken": "null"
}
投影属性示例
以下是投影属性的示例。 下面的查询使用投影来返回使用者孪生体的 name
属性和关系的 managedBy
属性。
SELECT Consumer.name, Relationship.managedBy
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'
以下是此查询返回的 JSON 有效负载:
{
"value": [
{
"result": [
{
"managedBy": "Jeff",
"name": "Contoso"
}
]
}
],
"continuationToken": "null"
}
投影属性示例:数据行不存在属性
如果对于特定的数据行,投影中包含的属性不存在,则结果集中同样也不存在该属性。
对于本示例,请考虑一组表示用户的孪生体。 有些孪生体有与之关联的期限,而其他孪生体则没有。
以下是投影 name
和 age
属性的查询:
SELECT name, age
FROM DIGITALTWINS
结果可能如下所示,其中某些孪生体缺少 age
属性,因为这些孪生体不具有此属性。
{
"value": [
{
"result": [
{
"name": "John",
"age": 27
},
{
"name": "Keanu"
}
]
}
],
"continuationToken": "null"
}
SELECT COUNT
使用此方法对结果集中的项数进行计数并返回该数字。
语法
SELECT COUNT()
参数
无。
返回
一个 int
值。
示例
下面的查询返回实例中所有数字孪生体的计数。
SELECT COUNT()
FROM DIGITALTWINS
下面的查询返回实例中所有关系的计数。
SELECT COUNT()
FROM RELATIONSHIPS
SELECT TOP
使用此方法仅返回满足查询要求的前面几项。
语法
SELECT TOP(<number-of-return-items>)
参数
一个 int
值,指定要选择的前面几项。
返回
孪生体的集合。
示例
下面的查询仅返回实例中的前五个数字孪生体。
SELECT TOP(5)
FROM DIGITALTWINS