Azure Digital Twins 查詢語言參考:SELECT 子句
本文件包含 Azure Digital Twins 查詢語言的 SELECT 子句相關參考資訊。
SELECT 子句是查詢的第一個部分。 其會指定查詢將傳回的資料行清單。
所有查詢都需要這個子句。
SELECT *
在 select 陳述式中使用 *
字元,依原狀投影數位對應項文件,而不需將其指派給結果集中的屬性。
注意
在查詢不使用 JOIN
時,SELECT *
才是唯一有效的語法。 如需使用 JOIN
的查詢詳細資訊,請參閱 Azure Digital Twins 查詢語言參考:JOIN 子句。
語法
SELECT *
--FROM ...
傳回
從查詢傳回的屬性集。
範例
下列查詢會傳回執行個體中的所有數位對應項。
SELECT *
FROM DIGITALTWINS
具有投影的 SELECT 資料行
您可以在 SELECT 子句中使用投影,來選取查詢將傳回哪些資料行。 您可以指定對應項和關聯性的具名集合,或對應項和關聯性的屬性。
基本屬性和複雜屬性現在都支援投影。
Syntax
若要投影集合:
SELECT <twin-or-relationship-collection>
若要投影屬性:
SELECT <twin-or-relationship-collection>.<property-name>
傳回
投影中指定的對應項、屬性或關聯性集合。
如果投影中包含的屬性不存在於特定資料列,則屬性同樣存在於結果集中。 如需此行為的範例,請參閱投影屬性範例:屬性不存在於資料列中。
範例
範例案例
針對下列範例,請考慮包含下列資料元素的對應項圖表:
- 稱為 FactoryA 的 Factory 對應項
- 包含名為
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
中指定的集合。 下列查詢會使用投影,傳回取用者、Factory 和關聯性的資料。 如需範例中使用的 JOIN
0語法詳細資訊,請參閱 Azure Digital Twins 查詢語言參考: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