Definición del modelo de ThingWorx en Composer > Modelado > Cosas > Servicios de cosa > Parámetro de consulta para servicios de consulta
Parámetro de consulta para servicios de consulta
Varios servicios de ThingWorx aceptan un parámetro de consulta opcional. El parámetro de consulta es un objeto de valores que se configura de forma diferente en función del tipo de la consulta que se solicita.
Los tipos posibles son los siguientes:
Matches, NotMatches TaggedWith,
NotTaggedWith
GT, LT, GE, LE, NE, EQ, LIKE, NOTLIKE, IN, NOTIN
Between, NotBetween MissingValue,
NotMissingValue Near, NotNear
Las consultas pueden ser Y/O y pueden incluir una clasificación.
El parámetro de consulta se utiliza en todos los servicios que empiezan por consulta, como por ejemplo:
Todas las cosas
QueryThingStreamEntries
Todos los flujos
QueryStreamData
QueryStreamEntries
QueryStreamEntriesWithData
Todas las tablas de datos
QueryDataTableEntries
Recurso InfoTableFunctions
Query
Todas las plantillas de cosa
QueryImplementingThings
QueryImplementingThingsWithData
Todas las definiciones de cosa
QueryImplementingThings
QueryImplementingThingsWithData
Subsistema de auditoría
Configuración
En el parámetro de consulta se incluyen dos opciones configurables: filtros y clasificadores. Después de definir el parámetro de consulta, este se puede pasar a un servicio de consulta. A continuación se muestran ejemplos de las opciones de filtro y clasificación para el parámetro de consulta. Se recomienda utilizar las herramientas de creación de scripts y los fragmentos de código en el configurador de scripts como punto de partida y, a continuación, crear manualmente el objeto del parámetro de consulta según corresponda.
Opciones de filtro único
Filtro Matches o NotMatches
var query =
{
"filters": {
"type": "Matches|NotMatches",
"fieldName": "Source",
"expression": "(Kettle)|(Filler)"
}
};
Filtro TAGGED o NOTTAGGED
var query = {
"fieldName": "tags",
"type": "NOTTAGGED",
"tags": [
{
"vocabulary": "Applications",
"vocabularyTerm": "Testing"
},
{
"vocabulary": "Plants",
"vocabularyTerm": "Sedona"
}
]
};
Comparador único
* 
Cuando se utiliza LIKE/NOTLIKE, es necesario añadir caracteres comodín propios (% o * o? para un comodín de un solo carácter). Por ejemplo, para buscar ThingWorx, utilice LIKE Th%.
var query = {
"filters":{
"type": "GT, LT, GE, LE, NE, EQ, LIKE, NOTLIKE",
"fieldName": "<field_name>",
"value": "Th\\+*"
}
};
Filtro In o Not In
var jsonArray = [12,14];
var query = {
"filters": {
"type": "IN, NOTIN",
"fieldName": "Duration",
"values": jsonArray
}
};
Filtro Between o NotBetween
var query =
{
"filters": {
"type": "Between, NotBetween",
"fieldName": "Duration",
"from": "2",
"to": "12"
}
};
Filtro MissingValue o NotMissingValue
var query =
{
"filters": {
"type": "MissingValue, NotMissingValue",
"fieldName": "OrderQuantity"
}
};
Filtro Near o NotNear
var query =
{
"filters": {
"type": "Near, NotNear",
"fieldName": "fieldName",
"distance": "50",
"units": "M(iles), K(ilometers), N(autical miles)",
"location": {
"latitude": "40.12",
"longitude": "51.24",
"elevation": "300",
"units": "WGS84"
}
}
};
Opciones de filtro compuesto
Es posible combinar varios filtros mediante el tipo de filtro And u Or. En el siguiente ejemplo se filtra por filas que tienen una duración mayor que 12 y además están etiquetadas con un problema de mantenimiento por apagón eléctrico en el campo de etiquetas.
var query =
{
"filters": {
"type": "And",
"filters": [
{
"type": "GT",
"fieldName": "Duration",
"value": "12"
},
{
"type": "TaggedWith",
"fieldName": "tags",
"tags": "MaintenanceIssues:PowerOutage"
}
]
}
};
Anidamiento de filtros con distintos tipos And/Or
Para anidar filtros con distintos tipos And/Or, son necesarios un tipo y una palabra clave de filtros para cada nivel del objeto JSON. Con la siguiente sintaxis de JSON para la consulta se obtienen los resultados deseados (distintos que la cadena vacía, que se reemplaza por empty en el siguiente ejemplo).
var query3 = {
"filters": {
"type": "AND",
"filters": [
{
"type": "OR",
"filters": [
{ "fieldName": "Status", "type": "LIKE", "value": "*-none-*" }
,
{ "fieldName": "Status", "type": "LIKE", "value": "empty" }
]
},
{ "fieldName": "IsDeleted", "type": "EQ", "value": false }
]
}
};
Opciones de clasificación
La opción de los clasificadores es una matriz de objetos. Hay tres parámetros posibles para cada uno de los objetos de clasificación en la matriz de clasificadores: fieldName, isAscending, isCaseSensitive. Solo el nombre de campo es obligatorio. El valor por defecto de isAscending e isCaseSensitive es verdadero.
Opción de clasificación única
var query =
{
"sorts": [
{
"fieldName": "Material"
}
]
}
Opción de clasificación compleja
var query =
{
"sorts": [
{
"fieldName": "Material"
},
{
"fieldName": "OrderDate",
"isAscending": false
}
]
}
Clasificación y filtro
Se puede aplicar una clasificación y un filtro al mismo servicio de consulta, como se muestra en el siguiente ejemplo:
var query =
{
"sorts": [
{
"fieldName": "LotID",
"isAscending": false,
"isCaseSensitive": false
},
{
"fieldName": "Plant"
}
],
"filters": {
"type": "And",
"filters": [
{
"type": "GT",
"fieldName": "Duration",
"value": "12"
},
{
"type": "TaggedWith",
"fieldName": "tags",
"tags": "MaintenanceIssues:PowerOutage"
}
]
}
};
Tipos posibles
Los tipos posibles son los siguientes:
EQ = igual a
NE = distinto de
GT = mayor que
GE = mayor o igual que
LT = menor que
LE = menor o igual que
LIKE = como
BETWEEN
NOTBETWEEN
¿Fue esto útil?