Dela via


Referens för Azure Digital Twins-frågespråk: SELECT-sats

Det här dokumentet innehåller referensinformation om SELECT-satsen för Azure Digital Twins-frågespråket.

SELECT-satsen är den första delen av en fråga. Den anger listan över kolumner som frågan ska returnera.

Den här satsen krävs för alla frågor.

VÄLJ*

* Använd tecknet i en select-instruktion för att projicera digital tvilling-dokumentet som det är, utan att tilldela det till en egenskap i resultatuppsättningen.

Anteckning

SELECT * är endast giltig syntax när frågan inte använder en JOIN. Mer information om frågor med hjälp av finns JOINi Azure Digital Twins-frågespråksreferens: JOIN-sats.

Syntax

SELECT *
--FROM ...

Returer

Den uppsättning egenskaper som returneras från frågan.

Exempel

Följande fråga returnerar alla digitala tvillingar i instansen.

SELECT *
FROM DIGITALTWINS

SELECT-kolumner med projektioner

Du kan använda projektioner i SELECT-satsen för att välja vilka kolumner en fråga ska returnera. Du kan ange namngivna samlingar av tvillingar och relationer, eller egenskaper för tvillingar och relationer.

Projektion stöds nu för både primitiva egenskaper och komplexa egenskaper.

Syntax

Så här projicerar du en samling:

SELECT <twin-or-relationship-collection>

Så här projicerar du en egenskap:

SELECT <twin-or-relationship-collection>.<property-name>

Returer

En samling tvillingar, egenskaper eller relationer som anges i projektionen.

Om en egenskap som ingår i projektionen inte finns för en viss datarad finns inte egenskapen på samma sätt i resultatuppsättningen. Ett exempel på det här beteendet finns i Exempel på projektegenskap: Egenskapen finns inte för en datarad.

Exempel

Exempel på ett scenario

I följande exempel kan du överväga en tvillinggraf som innehåller följande dataelement:

  • En fabrikstvilling med namnet FactoryA
    • Innehåller en egenskap som heter name med värdet FactoryA
  • En konsumenttvilling med namnet Contoso
    • Innehåller en egenskap som heter name med värdet Contoso
  • En consumerRelationship-relation från FactoryA till Contoso, kallad FactoryA-consumerRelationship-Contoso
    • Innehåller en egenskap som heter managedBy med värdet Jeff

Här är ett diagram som illustrerar det här scenariot:

Diagram som visar exempeldiagrammet som beskrivs ovan.

Exempel på projektsamling

Nedan visas en exempelfråga som projicerar en samling från den här grafen. Följande fråga returnerar alla digitala tvillingar i instansen genom att namnge hela tvillingsamlingen T och projicera T som den samling som ska returneras.

SELECT T
FROM DIGITALTWINS T

Här är JSON-nyttolasten som returneras från den här frågan:

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

Projekt med JOIN-exempel

Projektion används ofta för att returnera en samling som anges i en JOIN. Följande fråga använder projektion för att returnera data för konsument, fabrik och relation. Mer information om syntaxen JOIN som används i exemplet finns i Frågespråksreferens för Azure Digital Twins: JOIN-sats.

SELECT Consumer, Factory, Relationship
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'

Här är JSON-nyttolasten som returneras från den här frågan:

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

Exempel på projektegenskap

Här är ett exempel som projicerar en egenskap. Följande fråga använder projektion för att returnera name egenskapen för konsumenttvillingen managedBy och egenskapen för relationen.

SELECT Consumer.name, Relationship.managedBy
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'

Här är JSON-nyttolasten som returneras från den här frågan:

{
  "value": [
    {
      "result": [
        {
          "managedBy": "Jeff",
          "name": "Contoso"
        }
      ]
    }
  ],
  "continuationToken": "null"
}

Exempel på projektegenskap: Egenskapen finns inte för en datarad

Om en egenskap som ingår i projektionen inte finns för en viss datarad finns inte egenskapen på samma sätt i resultatuppsättningen.

I det här exemplet bör du överväga en uppsättning tvillingar som representerar personer. Vissa av tvillingarna har åldrar associerade med dem, men andra har det inte.

Här är en fråga som projicerar name egenskaperna och age :

SELECT name, age 
FROM DIGITALTWINS

Resultatet kan se ut ungefär så här, och age egenskapen saknas i vissa tvillingar i resultatet där tvillingarna inte har den här egenskapen.

{
  "value": [
    {
      "result": [
        {
          "name": "John",
          "age": 27
        },
        {
          "name": "Keanu"
        }
      ]
    }
  ],
  "continuationToken": "null"
}

VÄLJ ANTAL

Använd den här metoden för att räkna antalet objekt i resultatuppsättningen och returnera det talet.

Syntax

SELECT COUNT()

Argument

Inga.

Returer

Ett int värde.

Exempel

Följande fråga returnerar antalet digitala tvillingar i instansen.

SELECT COUNT()
FROM DIGITALTWINS

Följande fråga returnerar antalet alla relationer i instansen.

SELECT COUNT()
FROM RELATIONSHIPS

VÄLJ ÖVERKANT

Använd den här metoden om du bara vill returnera några av de översta objekten som uppfyller frågekraven.

Syntax

SELECT TOP(<number-of-return-items>)

Argument

Ett int värde som anger antalet översta objekt att välja.

Returer

En samling tvillingar.

Exempel

Följande fråga returnerar endast de första fem digitala tvillingarna i instansen.

SELECT TOP(5)
FROM DIGITALTWINS