Azure Digital Twins 查詢語言參考:SELECT 子句
本檔包含 Azure Digital Twins 查詢語言之 SELECT 子句 的 參考資訊。
SELECT 子句是查詢的第一個部分。 它會指定查詢將傳回的數據行清單。
所有查詢都需要這個子句。
SELECT *
*
使用 select 語句中的字元來投影數字對應項檔,而不需將它指派給結果集中的屬性。
注意
SELECT *
只有在查詢不使用 JOIN
時,才有效語法。 如需使用 JOIN
查詢的詳細資訊,請參閱 Azure Digital Twins 查詢語言參考:JOIN 子句。
語法
SELECT *
--FROM ...
傳回
從查詢傳回的屬性集。
範例
下列查詢會傳回 實例中的所有數字對應項。
SELECT *
FROM DIGITALTWINS
具有投影的 SELECT 數據行
您可以使用 SELECT 子句中的投影來選擇查詢將傳回的數據行。 您可以指定對應項和關聯性的具名集合,或對應項和關聯性的屬性。
基本屬性和複雜屬性現在都支援投影。
語法
若要投影集合:
SELECT <twin-or-relationship-collection>
若要投影屬性:
SELECT <twin-or-relationship-collection>.<property-name>
傳回
投影中指定的對應項、屬性或關聯性的集合。
如果投影中包含的屬性不存在於特定數據列中,則屬性在結果集中同樣不會存在。 如需此行為的範例,請參閱 Project 屬性範例:數據列的屬性不存在。
範例
範例案例
針對下列範例,請考慮包含下列數據元素的對應項圖形:
- 稱為 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 的 Project 範例
投影通常用來傳回 中指定的 JOIN
集合。 下列查詢會使用投影來傳回消費者、Factory 和 Relationship 的數據。 如需範例中使用的語法詳細資訊 JOIN
,請參閱 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"
}
Project 屬性範例
以下是投影屬性的範例。 下列查詢會使用投影傳回 name
Consumer 對應項的 屬性,以及 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"
}
項目屬性範例:數據列的屬性不存在
如果投影中包含的屬性不存在於特定數據列中,則屬性在結果集中同樣不會存在。
針對此範例,請考慮一組代表人員的對應項。 有些雙胞胎有與他們相關的年齡,但其他人則沒有。
以下是投影 和 age
屬性的name
查詢:
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(<number-of-return-items>)
引數
值 int
,指定要選取的最上層項目數目。
傳回
對應項的集合。
範例
下列查詢只會傳回 實例中的前五個數字對應項。
SELECT TOP(5)
FROM DIGITALTWINS