共用方式為


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