Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin un contrato de nivel de servicio y no es aconsejable usarla para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para obtener más información, vea Supplemental Terms of Use for Microsoft Azure Previews.
En este artículo se proporciona una referencia completa para las expresiones, predicados y funciones integradas de GQL disponibles en las consultas de Fabric Graph. Use esta referencia para comprender cómo realizar cálculos, filtrar resultados y transformar datos en las consultas de grafos.
Para obtener información general sobre el lenguaje de consulta GQL y ejemplos de consultas de un extremo a otro, consulte la guía del lenguaje GQL. Para obtener información sobre los tipos de datos admitidos y la sintaxis literal, vea Valores de GQL y tipos de valor.
Literals
Los literales son expresiones simples que se evalúan directamente con el valor indicado. En el artículo Valores y tipos de valor de GQL se explican los literales de cada tipo de valor en detalle.
Example:
1
1.0d
TRUE
"Hello, graph!"
[ 1, 2, 3 ]
NULL
Para obtener una sintaxis literal detallada para cada tipo de datos, consulte Valores de GQL y tipos de valor.
Predicates
Los predicados son expresiones booleanas que normalmente se usan para filtrar los resultados en las consultas GQL. Se evalúan como TRUE, FALSEo UNKNOWN (null).
Precaución
Cuando se usan predicados como filtro, solo conservan los elementos para los que el predicado se evalúa como TRUE.
Predicados de comparación
Use estos operadores para comparar valores:
-
=(igual) -
<>(no igual) -
<(menor que) -
>(mayor que) -
<=(menor o igual que) -
>=(mayor o igual que)
GQL usa lógica de tres valores donde las comparaciones con valor NULL devuelven UNKNOWN:
| Expression | Resultado |
|---|---|
5 = 5 |
TRUE |
5 = 3 |
FALSE |
5 = NULL |
UNKNOWN |
NULL = NULL |
UNKNOWN |
Para obtener un comportamiento de comparación específico, consulte la documentación de cada tipo de valor en los valores de GQL y los tipos de valor.
Example:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915
RETURN p.firstName
Reglas de coerción de números:
Use las siguientes reglas en orden de prioridad:
- Expresiones de comparación que implican argumentos de tipos numéricos aproximados convierten todos los argumentos en un tipo numérico aproximado.
- Las expresiones de comparación que implican argumentos de tipos enteros con signo y sin signo convierten todos los argumentos en un tipo entero con signo.
Expresiones lógicas
Combinar condiciones con operadores lógicos:
-
AND(ambas condiciones son verdaderas) -
OR(cualquiera de las condiciones true) -
NOT(nega la condición)
Example:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915 AND p.firstName = 'John'
RETURN p.firstName || ' ' || p.lastName AS fullName
Predicados de existencia de propiedades
Para comprobar si existen propiedades, use estos predicados:
p.locationIP IS NOT NULL
p.browserUsed IS NULL
Nota:
Intentar acceder a una propiedad conocida como inexistente resulta en un error de sintaxis.
El acceso a una propiedad potencialmente inexistente se evalúa a null.
La determinación de si una propiedad es conocida o potencialmente no existente se basa en el tipo del nodo o borde al que se tiene acceso.
Enumerar predicados de pertenencia
Pruebe si los valores están en listas:
p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']
Predicados de patrón de cadena
Coincidencia de cadenas mediante técnicas de coincidencia de patrones:
p.firstName CONTAINS 'John'
p.browserUsed STARTS WITH 'Chrome'
p.locationIP ENDS WITH '.1'
Expresiones aritméticas
Use operadores aritméticos estándar con valores numéricos:
-
+(adición) -
-(resta) -
*(multiplicación) -
/(división)
Los operadores aritméticos siguen las convenciones matemáticas generales.
Precedencia:
Por lo general, los operadores siguen las reglas de precedencia de operador establecidas, como * antes +de . Use paréntesis para controlar el orden de evaluación según sea necesario.
Example:
(p.birthday < 20050915 OR p.birthday > 19651231) AND p.gender = 'male'
Reglas de coerción:
Use las siguientes reglas en orden de prioridad:
- Las expresiones aritméticas que implican argumentos de tipos numéricos aproximados devuelven un resultado de un tipo numérico aproximado.
- Las expresiones aritméticas que implican argumentos de tipos enteros con signo y sin signo devuelven un resultado de un tipo entero con signo.
Example:
LET birth_year = p.birthday / 10000
RETURN birth_year
Property Access
Acceda a las propiedades mediante la notación de puntos:
p.firstName
edge.creationDate
Acceso a la lista
Obtener acceso a los elementos de lista mediante la indexación basada en cero:
interests[0] -- first element
interests[1] -- second element
Funciones integradas
GQL admite varias funciones integradas para el procesamiento y el análisis de datos.
Funciones agregadas
Use funciones de agregado para evaluar una expresión en un conjunto de filas y obtener un valor de resultado final mediante la combinación de los valores calculados para cada fila. Graph admite las siguientes funciones de agregado:
-
count(*): cuenta filas -
sum(expression): suma valores numéricos -
avg(expression)- promedios de valores numéricos -
min(expression): busca el valor mínimo. -
max(expression): busca el valor máximo. -
collect_list(expression): recopila valores en una lista.
En general, las funciones de agregado omiten los valores NULL y siempre devuelven un valor NULL cuando no se proporcionan valores de entrada de material. Puede usar coalesce para obtener un valor predeterminado diferente: coalesce(sum(expr), 0). La única excepción es la count función de agregado, que siempre cuenta los valores no NULL proporcionados, devolviendo 0 si no hay ninguno. Use count(*) para incluir valores NULL en el recuento.
Use funciones de agregado de tres maneras diferentes:
- Para calcular (vertical) agregados en tablas completas
- Para calcular (vertical) agregados en subtables determinados por una clave de agrupación
- Para calcular (horizontal) agregados sobre los elementos de una lista de grupos
Agregados verticales:
-- Vertical aggregate over whole table
MATCH (p:Person)
RETURN count(*) AS total_people, avg(p.birthday) AS average_birth_year
-- Vertical aggregate with grouping
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name, count(*) AS population, avg(p.birthday) AS average_birth_year
GROUP BY c.name
Agregados horizontales:
La agregación horizontal calcula agregados sobre los elementos de las variables de lista de grupos a partir de patrones de longitud variable:
-- Horizontal aggregate over a group list variable
MATCH (p:Person)-[edges:knows]->{1,3}(:Person)
RETURN p.firstName, avg(edges.creationDate) AS avg_connection_date
La agregación horizontal siempre tiene prioridad sobre la agregación vertical.
Para convertir una lista de grupos en una lista normal, use collect_list(edges).
Nota:
Para obtener una cobertura completa de técnicas de agregación, incluido el enlace de borde de longitud variable y la combinación de agregaciones horizontales o verticales, consulte Técnicas avanzadas de agregación.
Funciones de cadena
-
char_length(string): devuelve la longitud de la cadena. -
upper(string): devuelve la variante mayúscula de la cadena proporcionada (solo US ASCII). -
lower(string): devuelve la variante minúscula de la cadena proporcionada (solo US ASCII). -
trim(string): quita los espacios en blanco iniciales y finales. -
string_join(list, separator): combina elementos de lista con separador.
Example:
MATCH (p:Person)
WHERE char_length(p.firstName) > 5
RETURN upper(p.firstName) AS name_upper
Funciones de grafo
-
nodes(path): devuelve nodos de un valor de ruta de acceso. -
edges(path): devuelve bordes de un valor de ruta de acceso. -
labels(node_or_edge): devuelve las etiquetas de un nodo o borde como una lista de cadenas.
Example:
MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues
Enumerar funciones
-
size(list): devuelve el tamaño de un valor de lista. -
trim(list,n): recorta una lista para que tenga el tamañonmáximo.
Example:
MATCH (p:Person)-[:hasInterest]->(t:Tag)
WHERE size(collect_list(t)) > 3
RETURN p.firstName, collect_list(t.name) AS interests
Funciones temporales
-
zoned_datetime(): devuelve la fecha y hora de zona actual. -
zoned_datetime("2025-09-12T10:10:52Z"): devuelve la fecha y hora de zona dada por el argumento en formato ISO 8601.
Example:
RETURN zoned_datetime() AS now
Funciones genéricas
-
coalesce(value1, value2, ...): devuelve el primer valor distinto de NULL.
Example:
MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name