Справочник по языку запросов 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