Referencia del lenguaje de consulta de Azure Digital Twins: cláusula SELECT
Este documento contiene información de referencia sobre la cláusula SELECT para el lenguaje de consulta de Azure Digital Twins.
La cláusula SELECT es la primera parte de una consulta. Especifica la lista de columnas que devolverá la consulta.
Esta cláusula es necesaria para todas las consultas.
SELECT *
Use el carácter *
de una instrucción SELECT para proyectar el documento del gemelo digital tal y como está, sin asignarlo a una propiedad del conjunto de resultados.
Nota
SELECT *
solo es una sintaxis válida si la consulta no usa cláusula JOIN
. Para obtener más información sobre las consultas que usan una cláusula JOIN
, consulte Referencia del lenguaje de consulta de Azure Digital Twins: cláusula JOIN.
Sintaxis
SELECT *
--FROM ...
Devoluciones
Conjunto de propiedades que devuelve la consulta.
Ejemplo
La consulta siguiente devuelve todos los gemelos digitales de la instancia.
SELECT *
FROM DIGITALTWINS
Columnas SELECT con proyecciones
Puede usar las proyecciones de la cláusula SELECT para elegir las columnas que devolverá una consulta. Puede especificar colecciones con nombre de gemelos y relaciones, o propiedades de gemelos y relaciones.
Ahora se admite la proyección de propiedades primitivas y propiedades complejas.
Sintaxis
Para proyectar una colección:
SELECT <twin-or-relationship-collection>
Para proyectar una propiedad:
SELECT <twin-or-relationship-collection>.<property-name>
Devoluciones
Colección de gemelos, propiedades o relaciones especificados en la proyección.
Si una propiedad incluida en la proyección no está presente para una fila de datos determinada, la propiedad tampoco estará presente en el conjunto de resultados. Para obtener un ejemplo de este comportamiento, consulte Ejemplo de propiedad del proyecto: propiedad no presente para una fila de datos.
Ejemplos
Escenario de ejemplo
Para los ejemplos siguientes, considere la posibilidad de usar un gráfico gemelo que contenga los siguientes elementos de datos:
- Un gemelo de Factory denominado FactoryA
- Contiene una propiedad denominada
name
con un valor deFactoryA
.
- Contiene una propiedad denominada
- Un gemelo de consumidor denominado Contoso
- Contiene una propiedad denominada
name
con un valor deContoso
.
- Contiene una propiedad denominada
- Una relación consumerRelationship de FactoryA a Contoso, denominada
FactoryA-consumerRelationship-Contoso
- Contiene una propiedad denominada
managedBy
con un valor deJeff
.
- Contiene una propiedad denominada
El diagrama siguiente ilustra este escenario:
Ejemplo de colección de proyectos
A continuación se muestra una consulta de ejemplo que proyecta una colección a partir de este gráfico. La consulta siguiente devuelve todos los gemelos digitales de la instancia, asigna el nombre T
a la colección de gemelos completa y proyecta T
como la colección que se va a devolver.
SELECT T
FROM DIGITALTWINS T
Esta es la carga JSON que devuelve esta 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"
}
Ejemplo de proyecto con una cláusula JOIN
La proyección se usa normalmente para devolver una colección especificada en una cláusula JOIN
. La consulta siguiente usa la proyección para devolver los datos de Consumer, Factory y Relationship. Para obtener más información sobre la sintaxis JOIN
usada en el ejemplo, consulte Referencia del lenguaje de consulta de Azure Digital Twins: cláusula JOIN.
SELECT Consumer, Factory, Relationship
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'
Esta es la carga JSON que devuelve esta 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"
}
Ejemplo de propiedad del proyecto
A continuación se muestra un ejemplo que proyecta una propiedad. La consulta siguiente usa la proyección para devolver la propiedad name
del gemelo Consumer y la propiedad managedBy
de la relación.
SELECT Consumer.name, Relationship.managedBy
FROM DIGITALTWINS Factory
JOIN Consumer RELATED Factory.consumerRelationship Relationship
WHERE Factory.$dtId = 'FactoryA'
Esta es la carga JSON que devuelve esta consulta:
{
"value": [
{
"result": [
{
"managedBy": "Jeff",
"name": "Contoso"
}
]
}
],
"continuationToken": "null"
}
Ejemplo de propiedad del proyecto: propiedad no presente para una fila de datos
Si una propiedad incluida en la proyección no está presente para una fila de datos determinada, la propiedad tampoco estará presente en el conjunto de resultados.
Considere para este ejemplo un conjunto de gemelos que represente personas. Algunos de los gemelos tienen edades asociadas, pero otros no.
A continuación se muestra una consulta que proyecta las propiedades name
y age
:
SELECT name, age
FROM DIGITALTWINS
El resultado podría tener un aspecto parecido al siguiente, donde falta la propiedad age
de algunos gemelos en el resultado en el que los gemelos no tienen esta propiedad.
{
"value": [
{
"result": [
{
"name": "John",
"age": 27
},
{
"name": "Keanu"
}
]
}
],
"continuationToken": "null"
}
SELECT COUNT
Use este método para que se cuente el número de elementos del conjunto de resultados y se devuelva ese número.
Sintaxis
SELECT COUNT()
Argumentos
Ninguno.
Devoluciones
Valor int
.
Ejemplo
La consulta siguiente devuelve el recuento de todos los gemelos digitales de la instancia.
SELECT COUNT()
FROM DIGITALTWINS
La consulta siguiente devuelve el recuento de todas las relaciones de la instancia.
SELECT COUNT()
FROM RELATIONSHIPS
SELECT TOP
Use este método para que se devuelvan solo algunos elementos principales que cumplan los requisitos de consulta.
Sintaxis
SELECT TOP(<number-of-return-items>)
Argumentos
Valor int
que especifica el número de elementos principales que se van a seleccionar.
Devoluciones
Colección de gemelos.
Ejemplo
La consulta siguiente devuelve solo los cinco primeros gemelos digitales de la instancia.
SELECT TOP(5)
FROM DIGITALTWINS