Condividi tramite


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 di Gemelli digitali di Azure.

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

Questa clausola è obbligatoria per tutte le query.

SELECT *

Usare il * carattere in un'istruzione select per proiettare il documento di Gemelli digitali così come è, senza assegnarlo a una proprietà nel set di risultati.

Nota

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

Sintassi

SELECT *
--FROM ...

Valori restituiti

Set di proprietà restituite dalla query.

Esempio

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

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>

Valori restituiti

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à di Project: Property not present for a data row .For an example of this behavior, see Project property example: Property not present for a data row.

Esempi

Scenario di esempio

Per gli esempi seguenti, considerare un grafo gemello che contiene gli elementi di dati seguenti:

  • Un gemello factory denominato FactoryA
    • Contiene una proprietà denominata name con un valore di FactoryA
  • Un dispositivo gemello consumer denominato Contoso
    • Contiene una proprietà denominata name con un valore di Contoso
  • Relazione consumerRelationship da FactoryA a Contoso, chiamata 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 di gemelli 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"
}

Esempio di Progetto con JOIN

La proiezione viene comunemente usata per restituire una raccolta specificata in un oggetto JOIN. La query seguente usa la proiezione per restituire i dati di Consumer, Factory e Relationship. Per altre informazioni sulla JOIN sintassi usata nell'esempio, 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à del progetto: 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 associato a loro età, ma altri no.

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

Nessuno.

Valori restituiti

Valore int.

Esempio

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

SELECT COUNT()
FROM DIGITALTWINS

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

SELECT COUNT()
FROM RELATIONSHIPS

SELECT TOP

Utilizzare questo metodo per restituire solo alcuni degli elementi principali che soddisfano i requisiti di query.

Sintassi

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

Argomenti

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

Valori restituiti

Raccolta di gemelli.

Esempio

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

SELECT TOP(5)
FROM DIGITALTWINS