Informazioni di riferimento sul linguaggio di query di Gemelli digitali di Azure: clausola SELECT

Questo documento contiene informazioni di riferimento sulla clausola SELECT per il linguaggio di query gemelli digitali di Azure.

La clausola SELECT è la prima parte di una query. Specifica l'elenco di colonne restituite dalla query.

Questa clausola è necessaria per tutte le query.

SELECT *

Usare il carattere in un'istruzione select per proiettare il * documento del gemello digitale come è, senza assegnarlo a una proprietà nel set di risultati.

Nota

SELECT * è solo una sintassi valida quando la query non usa un JOINoggetto . Per altre informazioni sulle query con JOIN, vedere Informazioni di riferimento sul linguaggio di query di Gemelli digitali di Azure: clausola JOIN.

Sintassi

SELECT *
--FROM ...

Restituisce

Set di proprietà restituite dalla query.

Esempio

La query seguente restituisce tutti i gemelli digitali nell'istanza.

SELECT *
FROM DIGITALTWINS

Colonne SELECT con proiezioni

È possibile usare le proiezioni nella clausola SELECT per scegliere le colonne restituite da una query. È possibile specificare raccolte denominate di gemelli e relazioni o proprietà di gemelli e relazioni.

La proiezione è ora supportata sia per le proprietà primitive che per le proprietà complesse.

Sintassi

Per proiettare una raccolta:

SELECT <twin-or-relationship-collection>

Per proiettare una proprietà:

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

Restituisce

Raccolta di gemelli, proprietà o relazioni specificate nella proiezione.

Se una proprietà inclusa nella proiezione non è presente per una determinata riga di dati, la proprietà non sarà presente nel set di risultati. Per un esempio di questo comportamento, vedere Esempio di proprietà project: proprietà non presente per una riga di dati.

Esempio

Scenario di esempio

Per gli esempi seguenti, prendere in considerazione un grafico gemello che contiene gli elementi dati seguenti:

  • Un gemello Factory denominato FactoryA
    • Contiene una proprietà denominata name con un valore di FactoryA
  • Un consumer gemello denominato Contoso
    • Contiene una proprietà denominata name con un valore di Contoso
  • Relazione consumerRelationship da FactoryA a Contoso, denominata FactoryA-consumerRelationship-Contoso
    • Contiene una proprietà denominata managedBy con un valore di Jeff

Ecco un diagramma che illustra questo scenario:

Diagramma che mostra il grafico di esempio descritto in precedenza.

Esempio di raccolta di progetti

Di seguito è riportata una query di esempio che proietta una raccolta da questo grafico. La query seguente restituisce tutti i gemelli digitali nell'istanza, assegnando un nome all'intera raccolta T gemella e proiettando T come raccolta da restituire.

SELECT T
FROM DIGITALTWINS T

Ecco il payload JSON restituito da questa query:

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

Progetto con esempio JOIN

La proiezione viene comunemente usata per restituire una raccolta specificata in un JOINoggetto . La query seguente usa la proiezione per restituire i dati del consumer, della factory e della relazione. Per altre informazioni sulla sintassi usata nell'esempio JOIN , vedere Informazioni di riferimento sul linguaggio di query di Gemelli digitali di Azure: clausola JOIN.

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

Ecco il payload JSON restituito da questa query:

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

Esempio di proprietà del progetto

Ecco un esempio che proietta una proprietà. La query seguente usa la proiezione per restituire la name proprietà del gemello Consumer e la managedBy proprietà della relazione.

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

Ecco il payload JSON restituito da questa query:

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

Esempio di proprietà project: proprietà non presente per una riga di dati

Se una proprietà inclusa nella proiezione non è presente per una determinata riga di dati, la proprietà non sarà presente nel set di risultati.

Si consideri per questo esempio un set di gemelli che rappresentano le persone. Alcuni dei gemelli hanno età associate a loro, ma altri non lo fanno.

Ecco una query che proietta le name proprietà e age :

SELECT name, age 
FROM DIGITALTWINS

Il risultato potrebbe essere simile al seguente, con la age proprietà mancante da alcuni gemelli nel risultato in cui i gemelli non hanno questa proprietà.

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

SELECT COUNT

Utilizzare questo metodo per contare il numero di elementi nel set di risultati e restituire tale numero.

Sintassi

SELECT COUNT()

Argomenti

No.

Restituisce

Valore int.

Esempio

La query seguente restituisce il numero di tutti i gemelli digitali nell'istanza.

SELECT COUNT()
FROM DIGITALTWINS

La query seguente restituisce il conteggio di tutte le relazioni nell'istanza.

SELECT COUNT()
FROM RELATIONSHIPS

SELEZIONARE IN ALTO

Usare questo metodo per restituire solo alcuni degli elementi principali che soddisfano i requisiti della query.

Sintassi

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

Argomenti

Valore int che specifica il numero di elementi principali da selezionare.

Restituisce

Raccolta di gemelli.

Esempio

La query seguente restituisce solo i primi cinque gemelli digitali nell'istanza.

SELECT TOP(5)
FROM DIGITALTWINS