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 más información, consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure.
Las expresiones GQL permiten realizar cálculos, comparaciones y transformaciones en los datos de las consultas. En combinación con las funciones integradas, las expresiones proporcionan herramientas eficaces para el procesamiento, el filtrado y el análisis de datos en las consultas de grafos.
Literals
Los literales son expresiones simples que se evalúan directamente con el valor indicado. Los literales de cada tipo de valor se explican en detalle en los valores de GQL y los tipos de valor.
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 se usan normalmente para filtrar los resultados en las consultas GQL. Se evalúan como TRUE, FALSEo UNKNOWN (null).
Precaución
Cuando se usa como filtro, los predicados conservan solo los elementos para los que el predicado se evalúa TRUEcomo .
Predicados de comparación
Compare valores con estos operadores:
-
=(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:
En orden de prioridad:
- Las 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, puedes utilizar:
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 inexistente se realiza en función del tipo de nodo o arista accedida.
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 con 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:
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
Obtener acceso 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
Las funciones de agregado se usan 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. Se admiten las siguientes funciones de agregado para graph en Microsoft Fabric:
-
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 también valores NULL en el recuento.
Las funciones de agregado se usan de tres maneras diferentes:
- Para los agregados informáticos (verticales) en tablas completas
- Para los agregados informáticos (verticales) sobre 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 ASCII de EE. UU.) -
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): recortar una lista para que tenga el tamaño máximon
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 datetime con zona actual. -
zoned_datetime("2025-09-12T10:10:52Z"): devuelve datetime con zona dado 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