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"
}

投影屬性範例:屬性不存在於資料列中

如果投影中包含的屬性不存在於特定資料列,則屬性同樣存在於結果集中。

針對此範例,請考慮一組代表人員的對應項。 有些對應項具有與其相關聯的存留期,但其他對應項則沒有。

以下是投影 nameage 屬性的查詢:

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