Referencia del lenguaje de consulta de Azure Digital Twins: funciones
Este documento contiene información de referencia sobre las funciones del lenguaje de consulta de Azure Digital Twins.
ARRAY_CONTAINS
Función para determinar si una propiedad de matriz de un gemelo (compatible con DTDL v3) contiene otro valor especificado.
Sintaxis
ARRAY_CONTAINS(<array-to-check>,<contained-value>)
Argumentos
<array-to-check>
: propiedad gemela de tipo de matriz que quiere comprobar para el valor especificado.<contained-value>
: cadena, entero, doble o booleano que representa el valor que se va a comprobar dentro de la matriz.
Devoluciones
Un valor booleano que indica si la matriz contiene el valor especificado.
Ejemplo
La consulta siguiente devuelve el nombre de todos los gemelos digitales que tienen una propiedad de matriz floor_number
, y la matriz almacenada en esta propiedad contiene un valor de 2
.
SELECT T.name
FROM DIGITALTWINS T
WHERE ARRAY_CONTAINS (T.floor_number, 2)
Limitaciones
La función ARRAY_CONTAINS() tiene las siguientes limitaciones:
- No se admite la indexación de matrices.
- Por ejemplo:
array-name[index] = 'foo_bar'
- Por ejemplo:
- No se admiten subconsultas dentro de la propiedad ARRAY_CONTAINS().
- Por ejemplo:
SELECT T.name FROM DIGITALTWINS T WHERE ARRAY_CONTAINS (SELECT S.floor_number FROM DIGITALTWINS S, 4)
- Por ejemplo:
- ARRAY_CONTAINS() no se admite en las propiedades de las relaciones.
- Por ejemplo, supongamos que
Floor.Contains
es una relación de Floor a Room y tiene una propiedadlift
con un valor de["operating", "under maintenance", "under construction"]
. No se admiten consultas como esta:SELECT Room FROM DIGITALTWINS Floor JOIN Room RELATED Floor.Contains WHERE Floor.$dtId = 'Floor-35' AND ARRAY_CONTAINS(Floor.Contains.lift, "operating")
.
- Por ejemplo, supongamos que
- ARRAY_CONTAINS() no busca en matrices anidadas.
- Por ejemplo, supongamos que un gemelo tiene una propiedad
tags
con un valor de[1, [2,3], 3, 4]
. Una búsqueda para2
usar la consultaSELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2)
devuelveFalse
. Una búsqueda de un valor en la matriz de nivel superior, como1
el uso de la consultaSELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1)
, devuelveTrue
.
- Por ejemplo, supongamos que un gemelo tiene una propiedad
- ARRAY_CONTAINS() no se admite si la matriz contiene objetos.
- Por ejemplo, supongamos que un gemelo tiene una propiedad
tags
con un valor de[Room1, Room2]
dondeRoom1
yRoom2
son objetos. No se admiten consultas como esta:SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2)
.
- Por ejemplo, supongamos que un gemelo tiene una propiedad
CONTAINS
Función de cadena para determinar si una propiedad de cadena de un gemelo contiene otro valor de cadena especificado.
Sintaxis
CONTAINS(<string-to-check>,<contained-string>)
Argumentos
<string-to-check>
: propiedad gemela de tipo de cadena que quiere comprobar para el valor especificado.<contained-string>
: cadena que representa el valor que se va a comprobar.
Devoluciones
Valor booleano que indica si la primera expresión de cadena contiene la secuencia de caracteres definida en la segunda expresión de cadena.
Ejemplo
La consulta siguiente devuelve todos los gemelos digitales cuyos identificadores contienen -route
. La cadena que se va a comprobar es el $dtId
de cada gemelo de la colección y la cadena contenida es -route
.
SELECT *
FROM DIGITALTWINS T
WHERE CONTAINS(T.$dtId, '-route')
ENDSWITH
Función de cadena para determinar si una propiedad de cadena de un gemelo termina con otra cadena determinada.
Sintaxis
ENDSWITH(<string-to-check>,<ending-string>)
Argumentos
<string-to-check>
: propiedad gemela de tipo de cadena de la que quiere comprobar el final.<ending-string>
: cadena que representa el final que se va a comprobar.
Devoluciones
Valor booleano que indica si la primera expresión de cadena finaliza con la segunda.
Ejemplo
La consulta siguiente devuelve todos los gemelos digitales cuyos identificadores terminan en -small
. La cadena que se va a comprobar es el $dtId
de cada gemelo de la colección y la cadena final es -small
.
SELECT *
FROM DIGITALTWINS T
WHERE ENDSWITH(T.$dtId, '-small')
IS_BOOL
Función de comprobación de tipos para determinar si una propiedad tiene un valor booleano.
Esta función suele combinarse con otros predicados si el programa que procesa los resultados de la consulta requiere un valor booleano y desea filtrar los casos en los que la propiedad no es un valor booleano.
Sintaxis
IS_BOOL(<property>)
Argumentos
<property>
, una propiedad para comprobar si es un valor booleano.
Devoluciones
Valor booleano que indica si el tipo de la propiedad especificada es booleano.
Ejemplo
La consulta siguiente selecciona los gemelos digitales que tienen una propiedad HasTemperature
booleana.
SELECT *
FROM DIGITALTWINS T
WHERE IS_BOOL( HasTemperature )
La consulta siguiente se basa en el ejemplo anterior para seleccionar los gemelos digitales que tienen una propiedad booleana HasTemperature
y el valor de esa propiedad no false
es .
SELECT *
FROM DIGITALTWINS T
WHERE IS_BOOL( HasTemperature ) AND HasTemperature != false
IS_DEFINED
Función de comprobación de tipos para determinar si una propiedad está definida.
Sintaxis
IS_DEFINED(<property>)
Argumentos
<property>
, una propiedad para determinar si está definida.
Devoluciones
Valor booleano que indica si se ha asignado un valor a la propiedad.
Ejemplo
La consulta siguiente devuelve todos los gemelos digitales que tienen una propiedad definida Location
.
SELECT *
FROM DIGITALTWINS
WHERE IS_DEFINED(Location)
IS_NULL
Función de comprobación de tipos para determinar si el valor de una propiedad es null
.
Sintaxis
IS_NULL(<property>)
Argumentos
<property>
, una propiedad para comprobar si es null.
Devoluciones
Valor booleano que indica si el tipo de la propiedad especificada es null
.
Ejemplo
La consulta siguiente devuelve gemelos que no tienen un valor NULL para Temperature. Para obtener más información sobre el operador NOT
utilizado en esta consulta, consulte Referencia del lenguaje de consulta de Azure Digital Twins: operadores.
SELECT *
FROM DIGITALTWINS T
WHERE NOT IS_NULL(T.Temperature)
IS_NUMBER
Función de comprobación de tipos para determinar si una propiedad tiene un valor numérico.
Esta función suele combinarse con otros predicados si el programa que procesa los resultados de la consulta requiere un valor numérico y desea filtrar los casos en los que la propiedad no es un número.
Sintaxis
IS_NUMBER(<property>)
Argumentos
<property>
, una propiedad para comprobar si es un número.
Devoluciones
Valor booleano que indica si el tipo de la propiedad especificada es un número.
Ejemplo
La consulta siguiente selecciona los gemelos digitales que tienen una propiedad numérica Capacity
y su valor no es igual a 0.
SELECT *
FROM DIGITALTWINS
WHERE IS_NUMBER( Capacity ) AND Capacity != 0
IS_OBJECT
Función de comprobación de tipos para determinar si el valor de una propiedad se trata de un tipo de objeto JSON.
Esta función suele combinarse con otros predicados si el programa que procesa los resultados de la consulta requiere un objeto JSON y desea filtrar los casos en los que el valor no es un objeto JSON.
Sintaxis
IS_OBJECT<property>)
Argumentos
<property>
, una propiedad para comprobar si es de un tipo de objeto.
Devoluciones
Valor booleano que indica si el tipo de la propiedad especificada es un objeto JSON.
Ejemplo
La consulta siguiente selecciona todos los gemelos digitales donde se trata de un objeto denominado MapObject
y no tiene una propiedad TemperatureReading
secundaria .
SELECT *
FROM DIGITALTWINS
WHERE IS_OBJECT( MapObject ) AND NOT IS_DEFINED ( MapObject.TemperatureReading )
IS_OF_MODEL
Función de comprobación de tipos para determinar si un gemelo es de un tipo de modelo determinado. Incluye los modelos que se heredan del modelo especificado.
Sintaxis
IS_OF_MODEL(<twin-collection>,'<model-ID>', exact)
Argumentos
Requerido:
<model-ID>
: identificador del modelo que se va a comprobar.
Opcional:
<twin-collection>
: especifique una colección de gemelos para buscar cuando haya más de una (como cuando se usa ).JOIN
exact
: requiere una coincidencia exacta. Si no se establece este parámetro, el conjunto de resultados incluye gemelos con modelos que heredan del modelo especificado.
Devoluciones
Valor booleano que indica si el gemelo especificado coincide con el tipo de modelo especificado.
Ejemplo
La consulta siguiente devuelve gemelos de la colección de DT que son exactamente del tipo de modelo dtmi:example:room;1
.
SELECT ROOM FROM DIGITALTWINS DT WHERE IS_OF_MODEL(DT, 'dtmi:example:room;1', exact)
IS_PRIMITIVE
Función de comprobación de tipos para determinar si el valor de una propiedad es de un tipo primitivo (cadena, booleano, numérico o null
).
Esta función suele combinarse con otros predicados si el programa que procesa los resultados de la consulta requiere un valor con tipo primitivo y desea filtrar los casos en los que la propiedad no es primitiva.
Sintaxis
IS_PRIMITIVE(<property>)
Argumentos
<property>
, una propiedad para comprobar si es de un tipo primitivo.
Devoluciones
Valor booleano que indica si el tipo de la propiedad especificada es uno de los tipos primitivos (cadena, booleano, numérico o null
).
Ejemplo
La consulta siguiente devuelve la propiedad area
de la instancia de Factory con el identificador de "ABC", solo si la propiedad area
es un tipo primitivo. Para obtener más información sobre la proyección de determinadas columnas en el resultado de la consulta (como hace esta consulta con area
), consulte Referencia del lenguaje de consulta de Azure Digital Twins: cláusula SELECT.
SELECT Factory.area
FROM DIGITALTWINS Factory
WHERE Factory.$dtId = 'ABC'
AND IS_PRIMITIVE(Factory.area)
IS_STRING
Función de comprobación de tipos para determinar si una expresión tiene un valor de cadena.
Esta función suele combinarse con otros predicados si el programa que procesa los resultados de la consulta requiere un valor de cadena y desea filtrar los casos en los que la propiedad no es una cadena.
Sintaxis
IS_STRING(<property>)
Argumentos
<property>
, una propiedad para comprobar si es una cadena.
Devoluciones
Valor booleano que indica si el tipo de la expresión especificada es una cadena.
Ejemplo
La consulta siguiente selecciona los gemelos digitales que tienen una propiedad de propiedad Status
de cadena y su valor no es igual a Completed
.
SELECT *
FROM DIGITIALTWINS
WHERE IS_STRING( Status ) AND Status != 'Completed'
STARTSWITH
Función de cadena para determinar si una propiedad de cadena de un gemelo comienza con otra cadena determinada.
Sintaxis
STARTSWITH(<string-to-check>,<beginning-string>)
Argumentos
<string-to-check>
: propiedad gemela de tipo de cadena de la que quiere comprobar el principio.<beginning-string>
: cadena que representa el principio que se va a comprobar.
Devoluciones
Valor booleano que indica si la primera expresión de cadena empieza con la segunda.
Ejemplo
La consulta siguiente devuelve todos los gemelos digitales cuyos identificadores comienzan por area1-
. La cadena que se va a comprobar es el $dtId
de cada gemelo de la colección y la cadena del principio es area1-
.
SELECT *
FROM DIGITALTWINS T
WHERE STARTSWITH(T.$dtId, 'area1-')