Поделиться через


Справочник по языку запросов Azure Digital Twins — предложение SELECT

Этот документ содержит справочные сведения о предложении SELECT для языка запросов Azure Digital Twins.

Предложение SELECT является первой частью запроса. Оно позволяет указать список столбцов, которые будут возвращены с помощью запроса.

Это предложение требуется для всех запросов.

SELECT *

Используйте символ * из инструкции SELECT для проецирования документа цифрового двойника как есть, не присваивая его свойству в результирующем наборе.

Примечание

SELECT * — допустимый синтаксис только в том случае, если для запроса не используется JOIN. Дополнительные сведения о запросах с помощью JOIN см. в статье со справочником по языку запросов Azure Digital Twins и предложению JOIN.

Синтаксис

SELECT *
--FROM ...

Возвращаемое значение

Набор свойств, которые возвращаются из запроса.

Пример

Приведенный ниже запрос возвращает все цифровые двойники в экземпляре.

SELECT *
FROM DIGITALTWINS

Столбцы SELECT с проекциями

Можно использовать проекции в предложении SELECT, чтобы выбрать, какие столбцы запрос должен возвратить. Можно указать именованные коллекции двойников и связей или свойства двойников и связей.

Проекция теперь поддерживается как для простых свойств, так и для сложных свойств.

Синтаксис

Проецирование коллекции:

SELECT <twin-or-relationship-collection>

Проецирование свойства:

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

Возвращаемое значение

Коллекция двойников, свойств или связей, указанных в проекции.

Если свойство, включенное в проекцию, отсутствует для определенной строки данных, это свойство также будет отсутствовать в результирующем наборе. Пример свойства проекта и отсутствия свойства для строки данных см. здесь.

Примеры

Пример сценария

В рамках приведенных ниже примеров рассмотрим граф двойника, который содержит следующие элементы данных:

  • Двойник фабрики с именем FactoryA.
    • Содержит свойство с именем name со значением FactoryA.
  • Двойник объекта-получателя с именем Contoso
    • Содержит свойство с именем name со значением Contoso.
  • Связь consumerRelationship из FactoryA в Contoso с именем FactoryA-consumerRelationship-Contoso.
    • Содержит свойство с именем managedBy со значением Jeff.

Ниже приведена диаграмма, иллюстрирующая этот сценарий.

Диаграмма, на которой показан пример графа, описанный выше.

Пример коллекции проектов

Ниже приведен пример запроса, который проецирует коллекцию из этого графа. Приведенный ниже запрос возвращает все цифровые двойники в экземпляре путем именования всей коллекции двойников T и проецирования T в качестве возвращаемой коллекции.

SELECT T
FROM DIGITALTWINS T

Ниже приведены полезные данные JSON, возвращаемые из этого запроса:

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

Проект с примером JOIN

Проекция обычно используется для возврата коллекции, указанной в JOIN. В приведенном ниже запросе используется проекция для возврата данных объекта-получателя, фабрики и связи. Дополнительные сведения о синтаксисе JOIN, используемом в примере, см. в справочнике по языку запросов Azure Digital Twins и предложении JOIN.

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

Ниже приведены полезные данные JSON, возвращаемые из этого запроса:

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

Пример свойства проекта

Ниже приведен пример, в рамках которого проецируется свойство. В приведенном ниже запросе используется проекция для возвращения свойства name двойника объекта-получателя, а также свойства managedBy связи.

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

Ниже приведены полезные данные JSON, возвращаемые из этого запроса:

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

Пример свойства проекта: для строки данных отсутствует свойство

Если свойство, включенное в проекцию, отсутствует для определенной строки данных, это свойство также будет отсутствовать в результирующем наборе.

Рассмотрим в рамках этого примера набор двойников, представляющих людей. Для некоторых из двойников указан возраст, а для других — нет.

Ниже приведен запрос, который проецирует свойства name и age:

SELECT name, age 
FROM DIGITALTWINS

Результат может выглядеть примерно так, как указано ниже. Свойство age отсутствует в некоторых двойниках в результате, где двойники не имеют этого свойства.

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

SELECT COUNT

Используйте этот метод, чтобы подсчитать количество элементов в результирующем наборе и вернуть это количество.

Синтаксис

SELECT COUNT()

Аргументы

Нет.

Возвращаемое значение

Значение int.

Пример

Приведенный ниже запрос возвращает количество всех цифровых двойников в экземпляре.

SELECT COUNT()
FROM DIGITALTWINS

Приведенный ниже запрос возвращает количество всех связей в экземпляре.

SELECT COUNT()
FROM RELATIONSHIPS

SELECT TOP

Используйте этот метод, чтобы вернуть только определенное количество верхних элементов, соответствующих требованиям запроса.

Синтаксис

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

Аргументы

Значение int, указывающее количество верхних элементов для выбора.

Возвращаемое значение

Коллекция двойников.

Пример

Приведенный ниже запрос возвращает только первые пять цифровых двойников в экземпляре.

SELECT TOP(5)
FROM DIGITALTWINS