Partage via


Référence rapide GQL

Note

Cette fonctionnalité est actuellement disponible en préversion publique. Cette préversion est fournie sans contrat de niveau de service, et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.

Cet article est une référence rapide à la syntaxe GQL (Graph Query Language) pour les graphes dans Microsoft Fabric. Pour obtenir des explications détaillées, consultez le guide de langage GQL.

Important

Cet article utilise exclusivement l’exemple de jeu de données de graphe de réseau social.

Structure de la requête

Les requêtes GQL utilisent une séquence d’instructions qui définissent les données à obtenir à partir du graphique, comment les traiter et comment afficher les résultats. Chaque instruction a un objectif spécifique et, ensemble, ils créent un pipeline linéaire qui correspond aux données du graphique et les transforme pas à pas.

Flux de requête classique :
Une requête GQL commence généralement par spécifier le modèle de graphique à mettre en correspondance, puis utilise des instructions facultatives pour la création de variables, le filtrage, le tri, la pagination et la sortie de résultat.

Exemple :

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

Ordre des instructions :

Important

Graph dans Microsoft Fabric ne prend pas encore en charge la composition d’instructions arbitraires. Consultez l’article sur les limitations actuelles.

Les instructions peuvent généralement apparaître dans n’importe quel ordre dans une requête :

  • MATCH : spécifiez des modèles de graphique à rechercher.
  • LET : définissez des variables à partir d’expressions.
  • FILTER : conservez les conditions de correspondance des lignes.
  • ORDER BY - Trier les résultats.
  • OFFSET : ignorez de nombreuses lignes.
  • LIMIT : limitez le nombre de lignes.
  • RETURN – Sortie des résultats finaux.

Chaque instruction s’appuie sur la précédente, afin d’affiner et de mettre en forme de manière incrémentielle la sortie de la requête. Pour plus d’informations sur chaque instruction, consultez les sections suivantes.

Instructions de requête SQL

MATCH

Recherchez des modèles de graphiques dans vos données.

Syntaxe :

MATCH <graph pattern> [ WHERE <predicate> ]
...

Exemple :

MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *

Pour plus d’informations sur l’instruction MATCH , consultez les modèles Graph.

LAISSER

Créez des variables à l’aide d’expressions.

Syntaxe :

LET <variable> = <expression>, <variable> = <expression>, ...
...

Exemple :

MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName

Pour plus d’informations sur l’instruction LET , consultez le guide de langue GQL.

FILTRE

Conservez les lignes qui correspondent aux conditions.

Syntaxe :

FILTER [ WHERE ] <predicate>
...

Exemple :

MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *

Pour plus d’informations sur l’instruction FILTER , consultez le guide de langue GQL.

ORDONNER PAR

Triez les résultats.

Syntaxe :

ORDER BY <expression> [ ASC | DESC ], ...
...

Exemple :

MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC, n.firstName ASC

Important

L’ordre demandé des lignes n’est garanti de tenir qu’immédiatement après une instruction précédente ORDER BY . Toute déclaration suivante (si présente) ne garantit pas de préserver un tel ordre.

Pour plus d’informations sur l’instruction ORDER BY , consultez le guide de langue GQL.

OFFSET/LIMIT

Ignorez les lignes et limitez le nombre de résultats.

Syntaxe :

OFFSET <offset> [ LIMIT <limit> ]
LIMIT <limit>
...

Exemple :

MATCH (n:Person)
ORDER BY n.birthday
OFFSET 10 LIMIT 20
RETURN n.firstName || ' ' || n.lastName AS name, n.birthday

Pour plus d’informations sur les instructions et OFFSET les LIMIT instructions, consultez le guide de langue GQL.

RETURN

Affichez les résultats finaux.

Syntaxe :

RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...

Exemple :

MATCH (n:Person)
RETURN n.firstName, n.lastName

Pour plus d’informations sur l’instruction RETURN , consultez le guide de langue GQL.

Modèles graphiques

Les modèles de graphique décrivent la structure du graphique à mettre en correspondance.

Modèles de nœud

Dans les bases de données de graphiques, les nœuds sont généralement utilisés pour représenter des entités, telles que des personnes, des produits ou des emplacements.

Les modèles de nœud décrivent comment faire correspondre les nœuds dans le graphique. Vous pouvez filtrer par étiquette ou lier des 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

Pour plus d’informations sur les modèles de nœud, consultez les modèles Graph.

Modèles de périphérie

Les modèles de périphérie spécifient des relations entre les nœuds, y compris le sens et le type de périphérie. Dans les bases de données de graphiques, un bord représente une connexion ou une relation entre deux nœuds.

<-[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

Pour plus d’informations sur les modèles de périphérie, consultez les modèles Graph.

Expressions d’étiquette

Les expressions d’étiquette vous permettent de faire correspondre des nœuds avec des combinaisons d’étiquettes spécifiques à l’aide d’opérateurs logiques.

:Person&Company                  -- Both Person AND Company labels
:Person|Company                  -- Person OR Company labels
:!Company                        -- NOT Company label
:(Person|!Company)&Active        -- Complex expressions with parentheses

Pour plus d’informations sur les expressions d’étiquette, consultez les modèles Graph.

Modèles de chemin d’accès

Les modèles de chemin décrivent les traversées par le graphique, y compris les nombres de tronçons et les liaisons de variables.

(a)-[:knows|likes]->{1,3}(b)      -- 1-3 hops via knows/likes
p=()-[:knows]->()                 -- Binding a path variable

Pour plus d’informations sur les modèles de chemin d’accès, consultez les modèles Graph.

Modèles multiples

Plusieurs modèles vous permettent de faire correspondre des structures de graphe complexes et non linéaires dans une seule requête.

(a)->(b), (a)->(c)               -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d)          -- Nonlinear structures

Pour plus d’informations sur plusieurs modèles, consultez les modèles Graph.

Valeurs et types de valeurs

Types de base

Les types de base sont des valeurs de données primitives telles que des chaînes, des nombres, des booléens et des 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')

En savoir plus sur les types de base dans les valeurs GQL et les types valeur.

Types de valeurs de référence

Les types de valeurs de référence sont des nœuds et des arêtes utilisés comme valeurs dans les requêtes.

NODE             -- Node reference values
EDGE             -- Edge reference values

En savoir plus sur les types de valeurs de référence dans les valeurs GQL et les types valeur.

Types de collection

Les types de collection regroupent plusieurs valeurs, telles que des listes et des chemins d’accès.

LIST<INT64>      -- [1, 2, 3]
LIST<STRING>     -- ['a', 'b', 'c']
PATH             -- Path values

En savoir plus sur les types de collection dans les valeurs GQL et les types valeur.

Types matériels et nullables

Chaque type de valeur est soit annulable (y compris la valeur nulle), soit matériel (l’exclut). Par défaut, les types sont nullables sauf indication explicite comme NOT NULL.

STRING NOT NULL  -- Material (Non-nullable) string type
INT64            -- Nullable (default) integer type

Expressions &opérateurs

Comparison

Les opérateurs de comparaison comparent les valeurs et vérifient l’égalité, l’ordre ou les valeurs Null.

=, <>, <, <=, >, >=              -- Standard comparison
IS NULL, IS NOT NULL             -- Null checks

Pour plus d’informations sur les prédicats de comparaison, consultez les expressions et fonctions GQL.

Logical

Les opérateurs logiques combinent ou annulent des conditions booléennes dans les requêtes.

AND, OR, NOT                     -- Boolean logic

Pour plus d’informations sur les expressions logiques, consultez les expressions et fonctions GQL.

Arithmetic

Les opérateurs arithmétiques effectuent des calculs sur des nombres.

+, -, *, /                       -- Basic arithmetic operations

Pour plus d’informations sur les expressions arithmétiques, consultez les expressions et fonctions GQL.

Modèles de chaîne

Les prédicats de modèle de chaîne correspondent à des sous-chaînes, des préfixes ou des suffixes dans des chaînes.

n.firstName CONTAINS 'John'          -- Has substring
n.browserUsed STARTS WITH 'Chrome'   -- Starts with prefix
n.locationIP ENDS WITH '.1'          -- Ends with suffix

Pour plus d’informations sur les prédicats de modèle de chaîne, consultez les expressions et fonctions GQL.

Répertorier les opérations

Répertorier l’appartenance aux opérations de test, les éléments d’accès et la longueur de la liste de mesures.

n.gender IN ['male', 'female']    -- Membership test
n.tags[0]                        -- First element
size(n.tags)                     -- List length

Pour plus d’informations sur les prédicats d’appartenance à la liste, consultez les expressions et fonctions GQL.

Accès à la propriété

L’accès aux propriétés obtient la valeur d’une propriété à partir d’un nœud ou d’un bord.

n.firstName                      -- Property access

Pour plus d’informations sur l’accès aux propriétés, consultez les expressions et fonctions GQL.

Functions

Fonctions d'agrégation

Les fonctions d’agrégation calculent des valeurs récapitulatives pour les groupes de lignes (agrégation verticale) ou sur les éléments d’une liste de groupes (agrégation horizontale).

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

En savoir plus sur les fonctions d’agrégation dans les expressions et fonctions GQL.

Fonctions de chaîne

Les fonctions de chaîne vous permettent d’utiliser et d’analyser les valeurs de chaîne.

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

En savoir plus sur les fonctions de chaîne dans les expressions et fonctions GQL.

Fonctions de liste

Les fonctions de liste vous permettent d’utiliser des listes, telles que la vérification de la longueur ou de la taille de découpage.

size(list)                       -- List length
trim(list, n)                    -- Trim a list to be at most size `n`

En savoir plus sur les fonctions de liste dans les expressions et fonctions GQL.

Fonctions graphiques

Les fonctions graphes vous permettent d’obtenir des informations à partir de nœuds, de chemins et de bords.

labels(node)                     -- Get node labels
nodes(path)                      -- Get path nodes
edges(path)                      -- Get path edges

En savoir plus sur les fonctions de graphe dans les expressions et fonctions GQL.

Fonctions temporelles

Les fonctions temporelles vous permettent d’utiliser des valeurs de date et d’heure.

zoned_datetime()               -- Get the current timestamp

En savoir plus sur les fonctions temporelles dans les expressions et fonctions GQL.

Fonctions génériques

Les fonctions génériques vous permettent d’utiliser des données de manière courante.

coalesce(expr1, expr2, ...)    -- Get the first non-null value

En savoir plus sur les fonctions génériques dans les expressions et fonctions GQL.

Modèles courants

Rechercher des connexions

-- Friends of friends  
MATCH (me:Person {firstName: 'Annemarie'})-[:knows]->{2}(fof:Person)
WHERE fof <> me
RETURN DISTINCT fof.firstName

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

Top k

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

Filtrage et conditions

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

Chemin d’accès traversal

-- Variable length paths
MATCH p = TRAIL (src:Person {firstName: 'Annemarie'})-[:knows]->{1,3}(dst:Person)
WHERE dst.firstName = 'Alexander'
RETURN p