Compartir vía


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'
  • 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)
  • 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 propiedad lift 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").
  • 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 para 2 usar la consulta SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 2) devuelve False. Una búsqueda de un valor en la matriz de nivel superior, como 1 el uso de la consulta SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, 1), devuelve True.
  • 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] donde Room1 y Room2 son objetos. No se admiten consultas como esta: SELECT * FROM DIGITALTWINS WHERE ARRAY_CONTAINS(tags, Room2).

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 falsees .

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 MapObjecty no tiene una propiedad TemperatureReadingsecundaria .

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-')