Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
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