Referência da linguagem de consulta do Azure Digital Twins: cláusula SELECT

Este documento contém informações de referência sobre a cláusula SELECT para a linguagem de consulta do Azure Digital Twins.

A cláusula SELECT é a primeira parte de uma consulta. Especifica a lista de colunas que a consulta irá devolver.

Esta cláusula é necessária para todas as consultas.

SELECT *

Utilize o * caráter numa instrução select para projetar o documento do duplo digital tal como está, sem o atribuir a uma propriedade no conjunto de resultados.

Nota

SELECT * só é uma sintaxe válida quando a consulta não utiliza um JOIN. Para obter mais informações sobre consultas com JOINo , veja Referência da linguagem de consulta do Azure Digital Twins: cláusula JOIN.

Syntax

SELECT *
--FROM ...

Devoluções

O conjunto de propriedades que são devolvidas da consulta.

Exemplo

A consulta seguinte devolve todos os duplos digitais na instância.

SELECT *
FROM DIGITALTWINS

Select columns with projections (SELECIONAR colunas com projeções)

Pode utilizar projeções na cláusula SELECT para escolher as colunas que uma consulta irá devolver. Pode especificar coleções nomeadas de duplos e relações ou propriedades de duplos e relações.

A projeção é agora suportada para propriedades primitivas e propriedades complexas.

Syntax

Para projetar uma coleção:

SELECT <twin-or-relationship-collection>

Para projetar uma propriedade:

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

Devoluções

Uma coleção de duplos, propriedades ou relações especificada na projeção.

Se uma propriedade incluída na projeção não estiver presente para uma linha de dados específica, a propriedade não estará igualmente presente no conjunto de resultados. Para obter um exemplo deste comportamento, veja Exemplo de propriedade do projeto: Propriedade não presente para uma linha de dados.

Exemplos

Cenário de exemplo

Para os exemplos seguintes, considere um gráfico duplo que contém os seguintes elementos de dados:

  • Um duplo de fábrica chamado FactoryA
    • Contém uma propriedade chamada name com um valor de FactoryA
  • Um duplo consumidor chamado Contoso
    • Contém uma propriedade chamada name com um valor de Contoso
  • Uma relação consumerRelationship de FactoryA para Contoso, chamada FactoryA-consumerRelationship-Contoso
    • Contém uma propriedade chamada managedBy com um valor de Jeff

Eis um diagrama que ilustra este cenário:

Diagrama a mostrar o gráfico de exemplo descrito acima.

Exemplo de coleção de projetos

Segue-se uma consulta de exemplo que projeta uma coleção a partir deste gráfico. A consulta seguinte devolve todos os duplos digitais na instância ao atribuir um nome a toda a coleção T de duplos e ao projetar T como a coleção a devolver.

SELECT T
FROM DIGITALTWINS T

Eis o payload JSON que é devolvido desta consulta:

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

Exemplo de Projeto com JOIN

Normalmente, a projeção é utilizada para devolver uma coleção especificada num JOIN. A consulta seguinte utiliza a projeção para devolver os dados do Consumidor, Fábrica e Relação. Para obter mais informações sobre a JOIN sintaxe utilizada no exemplo, veja Referência da linguagem de consulta do Azure Digital Twins: cláusula JOIN.

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

Eis o payload JSON que é devolvido desta consulta:

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

Exemplo de propriedade do projeto

Eis um exemplo que projeta uma propriedade. A consulta seguinte utiliza a projeção para devolver a name propriedade do Duplo consumidor e a managedBy propriedade da relação.

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

Eis o payload JSON que é devolvido desta consulta:

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

Exemplo de propriedade do projeto: Propriedade não presente para uma linha de dados

Se uma propriedade incluída na projeção não estiver presente para uma linha de dados específica, a propriedade não estará igualmente presente no conjunto de resultados.

Considere para este exemplo um conjunto de duplos que representam pessoas. Alguns dos gémeos têm idades associadas, mas outros não.

Eis uma consulta que projeta as name propriedades e age :

SELECT name, age 
FROM DIGITALTWINS

O resultado pode ter um aspeto semelhante ao seguinte, com a age propriedade em falta em alguns duplos no resultado em que os duplos não têm esta propriedade.

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

SELECIONAR CONTAR

Utilize este método para contar o número de itens no conjunto de resultados e devolver esse número.

Sintaxe

SELECT COUNT()

Argumentos

Nenhum.

Devoluções

Um int valor.

Exemplo

A consulta seguinte devolve a contagem de todos os duplos digitais na instância.

SELECT COUNT()
FROM DIGITALTWINS

A consulta seguinte devolve a contagem de todas as relações na instância.

SELECT COUNT()
FROM RELATIONSHIPS

SELECIONE SUPERIOR

Utilize este método para devolver apenas alguns dos principais itens que cumprem os requisitos de consulta.

Sintaxe

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

Argumentos

Um int valor que especifica o número de itens principais a selecionar.

Devoluções

Uma coleção de gémeos.

Exemplo

A consulta seguinte devolve apenas os primeiros cinco duplos digitais na instância.

SELECT TOP(5)
FROM DIGITALTWINS