Partilhar via


Referência de 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 dos Gêmeos Digitais do Azure.

A cláusula SELECT é a primeira parte de uma consulta. Ele especifica a lista de colunas que a consulta retornará.

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

SELECIONAR *

Use o * caractere em uma instrução select para projetar o documento de gêmeo digital como está, sem atribuí-lo a uma propriedade no conjunto de resultados.

Nota

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

Sintaxe

SELECT *
--FROM ...

Devoluções

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

Exemplo

A consulta a seguir retorna todos os gêmeos digitais na instância.

SELECT *
FROM DIGITALTWINS

SELECIONAR colunas com projeções

Você pode usar projeções na cláusula SELECT para escolher quais colunas uma consulta retornará. Você pode especificar coleções nomeadas de gêmeos e relacionamentos, ou propriedades de gêmeos e relacionamentos.

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

Sintaxe

Para projetar uma coleção:

SELECT <twin-or-relationship-collection>

Para projetar um imóvel:

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

Devoluções

Uma coleção de gêmeos, propriedades ou relacionamentos especificados na projeção.

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

Exemplos

Cenário de exemplo

Para os exemplos a seguir, considere um gráfico gêmeo que contenha os seguintes elementos de dados:

  • Um gêmeo de fábrica chamado FactoryA
    • Contém uma propriedade chamada name com um valor de FactoryA
  • Um gêmeo 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

Aqui está um diagrama ilustrando esse cenário:

Diagrama mostrando o gráfico de exemplo descrito acima.

Exemplo de coleção de projetos

Abaixo está um exemplo de consulta que projeta uma coleção a partir deste gráfico. A consulta a seguir retorna todos os gêmeos digitais na instância, nomeando toda a coleção T de gêmeos e projetando T como a coleção a ser retornada.

SELECT T
FROM DIGITALTWINS T

Aqui está a carga JSON retornada 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"
}

Projeto com exemplo JOIN

A projeção é comumente usada para retornar uma coleção especificada em um JOINarquivo . A consulta a seguir usa projeção para retornar os dados de Consumidor, Fábrica e Relacionamento. Para obter mais informações sobre a JOIN sintaxe usada no exemplo, consulte Referência de 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'

Aqui está a carga JSON retornada 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

Veja um exemplo que projeta uma propriedade. A consulta a seguir usa projeção para retornar a name propriedade do gêmeo 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'

Aqui está a carga JSON retornada 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 também não estará presente no conjunto de resultados.

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

Aqui está uma consulta que projeta as name propriedades e age :

SELECT name, age 
FROM DIGITALTWINS

O resultado pode ser mais ou menos assim, com a age propriedade faltando para alguns gêmeos no resultado onde os gêmeos não têm essa propriedade.

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

SELECIONAR CONTAGEM

Use esse método para contar o número de itens no conjunto de resultados e retornar esse número.

Sintaxe

SELECT COUNT()

Argumentos

Nenhum.

Devoluções

Um int valor.

Exemplo

A consulta a seguir retorna a contagem de todos os gêmeos digitais na instância.

SELECT COUNT()
FROM DIGITALTWINS

A consulta a seguir retorna a contagem de todos os relacionamentos na instância.

SELECT COUNT()
FROM RELATIONSHIPS

SELECT TOP

Use esse método para retornar apenas alguns dos principais itens que atendem aos requisitos de consulta.

Sintaxe

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

Argumentos

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

Devoluções

Uma coleção de gêmeos.

Exemplo

A consulta a seguir retorna apenas os cinco primeiros gêmeos digitais na instância.

SELECT TOP(5)
FROM DIGITALTWINS