Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
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.
Este artículo es una referencia rápida para la sintaxis de GQL (lenguaje de consulta de Graph) para graph en Microsoft Fabric. Para obtener explicaciones detalladas, consulte la guía del lenguaje GQL.
Nota:
En este artículo se usa principalmente el conjunto de datos del gráfico de ejemplo de red social. También proporciona algunos ejemplos que usan el conjunto de datos Adventure Works del tutorial de Graph.
Estructura de la consulta
Las consultas GQL usan una secuencia de instrucciones que definen qué datos obtener del grafo, cómo procesarlos y cómo mostrar los resultados. Cada instrucción tiene un propósito específico y, juntos, crean una canalización lineal que coincide con los datos del grafo y lo transforman paso a paso.
Flujo de consulta típico:
Normalmente, una consulta GQL se inicia especificando el patrón de grafo que debe coincidir. A continuación, usa instrucciones opcionales para la creación de variables, el filtrado, la ordenación, la paginación y la salida de resultados.
Example:
MATCH (n:Person)-[:knows]->(m:Person)
LET fullName = n.firstName || ' ' || n.lastName
FILTER m.gender = 'female'
ORDER BY fullName ASC
OFFSET 10
LIMIT 5
RETURN fullName, m.firstName
Orden de instrucciones:
Importante
Graph en Microsoft Fabric aún no admite la composición arbitraria de instrucciones. Consulte el artículo sobre las limitaciones actuales.
Por lo general, las instrucciones pueden aparecer en cualquier orden dentro de una consulta:
-
MATCH: especifique los patrones de grafos que se van a buscar. -
LET– Definir variables a partir de expresiones. -
FILTER– Mantener las condiciones de coincidencia de filas. -
ORDER BY– Ordenar los resultados. -
OFFSET– Omitir muchas filas. -
LIMIT: restringe el número de filas. -
RETURN: genera los resultados finales.
Cada instrucción se basa en la anterior, por lo que se refina incrementalmente y se da forma a la salida de la consulta. Para obtener más información sobre cada instrucción, consulte las secciones siguientes.
Instrucciones de consulta
MATCH
Busque patrones de grafos en los datos.
Sintaxis:
MATCH <graph pattern> [ WHERE <predicate> ]
...
Example:
MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *
Para obtener más información sobre la MATCH instrucción , vea Los patrones de Graph.
DEJAR
Cree variables mediante expresiones.
Sintaxis:
LET <variable> = <expression>, <variable> = <expression>, ...
...
Example:
MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName
Para obtener más información sobre la LET instrucción , consulte la guía del lenguaje GQL.
FILTRO
Mantiene las filas que coinciden con las condiciones.
Sintaxis:
FILTER [ WHERE ] <predicate>
...
Example:
MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *
Para obtener más información sobre la FILTER instrucción , consulte la guía del lenguaje GQL.
ORDENAR POR
Ordena los resultados.
Sintaxis:
ORDER BY <expression> [ ASC | DESC ], ...
...
Example:
MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC, n.firstName ASC
Importante
El orden solicitado de filas solo garantiza que se cumpla inmediatamente después de una instrucción anterior ORDER BY .
No se garantiza que las siguientes instrucciones (si están presentes) conserven este orden.
Para obtener más información sobre la ORDER BY instrucción , consulte la guía del lenguaje GQL.
OFFSET/LIMIT
Omita las filas y limite el número de resultados.
Sintaxis:
OFFSET <offset> [ LIMIT <limit> ]
LIMIT <limit>
...
Example:
MATCH (n:Person)
ORDER BY n.birthday
OFFSET 10 LIMIT 20
RETURN n.firstName || ' ' || n.lastName AS name, n.birthday
Para obtener más información sobre las OFFSET instrucciones y LIMIT , consulte la guía del lenguaje GQL.
RETURN
Genera los resultados finales.
Sintaxis:
RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...
Example:
MATCH (n:Person)
RETURN n.firstName, n.lastName
Para obtener más información sobre la RETURN instrucción , consulte la guía del lenguaje GQL.
Patrones de grafos
Los patrones de grafo describen la estructura del grafo que se va a coincidir.
Patrones de nodo
En las bases de datos de grafos, los nodos se suelen usar para representar entidades, como personas, productos o lugares.
Los patrones de nodo describen cómo hacer coincidir nodos en el gráfico. Puede filtrar por etiqueta o enlazar variables.
(n) -- Any node
(n:Person) -- Node with Person label
(n:City&Place) -- Node with City AND Place label
(:Person) -- Person node, don't bind variable
Para obtener más información sobre los patrones de nodo, consulte Los patrones de Graph.
Patrones perimetrales
Los patrones perimetrales especifican relaciones entre nodos, incluido el tipo de dirección y borde. En las bases de datos de grafos, un borde representa una conexión o relación entre dos nodos.
<-[e]- -- Incoming edge
-[e]-> -- Outgoing edge
-[e]- -- Any edge
-[e:knows]-> -- Edge with label ("relationship type")
-[e:knows|likes]-> -- Edges with different labels
-[:knows]-> -- :knows edge, don't bind variable
Para obtener más información sobre los patrones perimetrales, consulte Los patrones de Graph.
Expresiones de etiqueta
Las expresiones de etiqueta permiten hacer coincidir nodos con combinaciones de etiquetas específicas mediante operadores lógicos.
:Person&Company -- Both Person AND Company labels
:Person|Company -- Person OR Company labels
:!Company -- NOT Company label
:(Person|!Company)&Active -- Complex expressions with parentheses
Para obtener más información sobre las expresiones de etiqueta, consulte Los patrones de Graph.
Patrones de ruta de acceso
Los patrones de ruta de acceso describen recorridos a través del gráfico, incluidos los recuentos de saltos y los enlaces de variables.
(a)-[:knows|likes]->{1,3}(b) -- 1-3 hops via knows/likes
p=()-[:knows]->() -- Binding a path variable
Para obtener más información sobre los patrones de ruta de acceso, consulte Los patrones de Graph.
Varios patrones
Puede usar varios patrones para que coincidan con estructuras de grafos complejas y no lineales en una sola consulta.
(a)->(b), (a)->(c) -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d) -- Nonlinear structures
Para obtener más información sobre varios patrones, consulte Los patrones de Graph.
Valores y tipos de valor
Tipos básicos
Los tipos básicos son valores de datos primitivos, como cadenas, números, booleanos y datetimes.
STRING -- 'hello', "world"
INT64 -- 42, -17
FLOAT64 -- 3.14, -2.5e10
BOOL -- TRUE, FALSE, UNKNOWN
ZONED DATETIME -- ZONED_DATETIME('2023-01-15T10:30:00Z')
Para obtener más información sobre los tipos básicos, vea Valores de GQL y tipos de valor.
Tipos de valor de referencia
Los tipos de valor de referencia son nodos y bordes que se usan como valores en las consultas.
NODE -- Node reference values
EDGE -- Edge reference values
Para obtener más información sobre los tipos de valor de referencia, vea Valores de GQL y tipos de valor.
Tipos de colección
Los tipos de colección agrupan varios valores, como listas y rutas de acceso.
LIST<INT64> -- [1, 2, 3]
LIST<STRING> -- ['a', 'b', 'c']
PATH -- Path values
Para obtener más información sobre los tipos de colección, vea Valores y tipos de valor de GQL.
Tipos materiales y anulables
Cada tipo de valor es que acepta valores NULL (incluye el valor NULL) o material (lo excluye).
De forma predeterminada, los tipos admiten valores NULL a menos que especifique NOT NULLexplícitamente .
STRING NOT NULL -- Material (Non-nullable) string type
INT64 -- Nullable (default) integer type
Expresiones y operadores
Comparación
Los operadores de comparación comparan valores y comprueban si hay igualdad, ordenación o valores NULL.
=, <>, <, <=, >, >= -- Standard comparison
IS NULL, IS NOT NULL -- Null checks
Para obtener más información sobre los predicados de comparación, consulte las funciones y expresiones de GQL.
Logical
Los operadores lógicos combinan o niegan las condiciones booleanas en las consultas.
AND, OR, NOT -- Boolean logic
Para obtener más información sobre las expresiones lógicas, consulte las funciones y expresiones GQL.
Arithmetic
Los operadores aritméticos realizan cálculos en números.
+, -, *, / -- Basic arithmetic operations
Para obtener más información sobre las expresiones aritméticas, consulte las funciones y expresiones GQL.
Patrones de cadena
Los predicados de patrón de cadena coinciden con subcadenas, prefijos o sufijos en cadenas.
n.firstName CONTAINS 'John' -- Has substring
n.browserUsed STARTS WITH 'Chrome' -- Starts with prefix
n.locationIP ENDS WITH '.1' -- Ends with suffix
Para obtener más información sobre los predicados de patrón de cadena, consulte las funciones y expresiones GQL.
Operaciones de lista
Enumerar las operaciones prueba la pertenencia, los elementos de acceso y la longitud de la lista de medida.
n.gender IN ['male', 'female'] -- Membership test
n.tags[0] -- First element
size(n.tags) -- List length
Para obtener más información sobre los predicados de pertenencia a listas, consulte las funciones y expresiones de GQL.
Property Access
El acceso a la propiedad obtiene el valor de una propiedad desde un nodo o borde.
n.firstName -- Property access
Para obtener más información sobre el acceso a propiedades, vea las funciones y expresiones GQL.
Functions
Funciones agregadas
Las funciones de agregado calculan valores de resumen para grupos de filas (agregación vertical) o sobre los elementos de una lista de grupos (agregación horizontal).
count(*) -- Count all rows
count(expr) -- Count non-null values
sum(p.birthday) -- Sum values
avg(p.birthday) -- Average
min(p.birthday), max(p.birthday) -- Minimum and maximum values
collect_list(p.firstName) -- Collect values into a list
Obtenga más información sobre las funciones de agregado en las expresiones y funciones de GQL.
Funciones de cadena
Las funciones de cadena permiten trabajar con valores de cadena y analizarlos.
char_length(s) -- String length
upper(s), lower(s) -- Change case (US ASCII only)
trim(s) -- Remove leading and trailing whitespace
string_join(list, separator) -- Join list elements with a separator
Obtenga más información sobre las funciones de cadena en las expresiones y funciones de GQL.
Enumerar funciones
Las funciones de lista permiten trabajar con listas, como comprobar la longitud o el tamaño de recorte.
size(list) -- List length
trim(list, n) -- Trim a list to be at most size `n`
Para obtener más información sobre las funciones de lista, vea Expresiones y funciones de GQL.
Funciones de grafo
Las funciones de grafo permiten obtener información de nodos, rutas de acceso y bordes.
labels(node) -- Get node labels
nodes(path) -- Get path nodes
edges(path) -- Get path edges
Para obtener más información sobre las funciones de grafo, consulte Expresiones y funciones de GQL.
Funciones temporales
Las funciones temporales permiten trabajar con valores de fecha y hora.
zoned_datetime() -- Get the current timestamp
Para obtener más información sobre las funciones temporales, vea Expresiones y funciones de GQL.
Funciones genéricas
Las funciones genéricas permiten trabajar con datos de maneras comunes.
coalesce(expr1, expr2, ...) -- Get the first non-null value
Para obtener más información sobre las funciones genéricas, vea Expresiones y funciones GQL.
Patrones comunes
En esta sección se muestran algunos patrones de consulta de GQL comunes que puede usar.
Ejemplos de redes sociales
En estos ejemplos se usa el conjunto de datos de grafo de ejemplo de red social.
Buscar todos los nodos de un tipo
-- Get all nodes with a specific label
MATCH (p:Person) RETURN p
Búsqueda de nodos con propiedades específicas
-- Filter nodes by property value
MATCH (p:Person) FILTER p.firstName = 'Annemarie' RETURN p
Búsqueda de conexiones
-- Friends of friends
MATCH (me:Person {firstName: 'Annemarie'})-[:knows]->{2}(fof:Person)
WHERE fof <> me
RETURN DISTINCT fof.firstName
Atravesar relaciones
-- Multi-hop traversal through different edge types
MATCH (p:Person)-[:knows]->(f:Person)-[:isLocatedIn]->(c:City)
RETURN p.firstName, f.firstName, c.name
Aggregation
-- Count by group
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name AS name, count(*) AS population
GROUP BY name
ORDER BY population DESC
K superior
-- Top 10
MATCH (p:Person)-[:hasCreator]-(m:Post)
RETURN p.firstName AS name, count(m) AS posts
GROUP BY name
ORDER BY posts DESC
LIMIT 10
Filtrado y condiciones
-- Complex conditions
MATCH (p:Person)-[:isLocatedIn]->(c:City)
WHERE p.birthday >= 19800101 AND p.birthday <= 20000101
AND c.name IN ['Seattle', 'Portland']
AND p.firstName IS NOT NULL
RETURN p.firstName, p.birthday
Recorrido de ruta de acceso
-- Variable length paths
MATCH p = TRAIL (src:Person {firstName: 'Annemarie'})-[:knows]->{1,3}(dst:Person)
WHERE dst.firstName = 'Alexander'
RETURN p
Ejemplos de Adventure Works
En estos ejemplos se usa el conjunto de datos Adventure Works del tutorial de Graph.
Buscar todos los clientes
-- Get all customer nodes
MATCH (c:Customer) RETURN c
Buscar productos por nombre
-- Filter products by name
MATCH (p:Product) FILTER p.productName = 'Mountain Bike' RETURN p
Recorrer pedidos de clientes
-- Multi-hop traversal: customers to orders to products
MATCH (c:Customer)-[:purchases]->(o:Order)-[:contains]->(p:Product)
RETURN c, o, p
Recuento de pedidos por empleado
-- Count orders by employee
MATCH (e:Employee)-[:sells]->(o:Order)
RETURN e.employeeName, count(o) AS total_orders
GROUP BY e.employeeName
ORDER BY total_orders DESC