Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite 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 Supplemental Conditions d’utilisation pour les préversions Microsoft Azure.
Cet article fournit une référence complète pour les expressions GQL, les prédicats et les fonctions intégrées disponibles dans les requêtes Microsoft Fabric. Utilisez cette référence pour comprendre comment effectuer des calculs, filtrer les résultats et transformer des données dans vos requêtes de graphe.
Pour obtenir une vue d’ensemble du langage de requête GQL et des exemples de requêtes de bout en bout, consultez le guide de langage GQL. Pour plus d’informations sur les types de données pris en charge et la syntaxe littérale, consultez les valeurs GQL et les types valeur.
Littéraux
Les littéraux sont des expressions simples qui évaluent directement la valeur indiquée. L’article sur les valeurs et les types de valeurs GQL décrit en détail les littéraux de chaque type de valeur.
Exemple :
1
1.0d
TRUE
"Hello, graph!"
[ 1, 2, 3 ]
NULL
Pour obtenir une syntaxe littérale détaillée pour chaque type de données, consultez les valeurs GQL et les types valeur.
Predicates
Les prédicats sont des expressions booléennes que vous utilisez couramment pour filtrer les résultats dans les requêtes GQL. Ils sont évalués à TRUE, FALSEou UNKNOWN (null).
Caution
Lorsque vous utilisez des prédicats comme filtre, ils conservent uniquement les éléments pour lesquels le prédicat est TRUEévalué .
Prédicats de comparaison
Utilisez ces opérateurs pour comparer les valeurs :
-
=(égal) -
<>(non égal) -
<(inférieur à) -
>(supérieur à) -
<=(inférieur ou égal) -
>=(supérieur ou égal)
GQL utilise une logique à trois valeurs où les comparaisons avec retour UNKNOWNnull :
| Expression | Résultat |
|---|---|
5 = 5 |
TRUE |
5 = 3 |
FALSE |
5 = NULL |
UNKNOWN |
NULL = NULL |
UNKNOWN |
Pour un comportement de comparaison spécifique, consultez la documentation de chaque type valeur dans les valeurs GQL et les types valeur.
Exemple :
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915
RETURN p.firstName
Règles de contrainte de nombre :
Utilisez les règles suivantes dans l’ordre de priorité :
- Les expressions de comparaison qui impliquent des arguments de types numériques approximatifs forcent tous les arguments à être d’un type numérique approximatif.
- Les expressions de comparaison qui impliquent des arguments des types entiers signés et non signés forcent tous les arguments à être d’un type entier signé.
Expression logiques
Combinez des conditions avec des opérateurs logiques :
-
AND(les deux conditions true) -
OR(l’une ou l’autre condition true) -
NOT(condition de négation)
Exemple :
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915 AND p.firstName = 'John'
RETURN p.firstName || ' ' || p.lastName AS fullName
Prédicats d’existence de propriété
Pour vérifier si des propriétés existent, utilisez ces prédicats :
p.locationIP IS NOT NULL
p.browserUsed IS NULL
Note
Tenter d’accéder à une propriété connue comme inexistante entraîne une erreur de syntaxe.
L’accès à une propriété potentiellement inexistante s’évalue à null.
La détermination de savoir si une propriété est connue ou potentiellement non existante est basée sur le type du nœud ou du bord accédé.
Répertorier les prédicats d’appartenance
Testez si les valeurs se trouvent dans des listes :
p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']
Prédicats de modèle de chaîne
Mettre en correspondance des chaînes à l’aide de techniques de correspondance de modèle :
p.firstName CONTAINS 'John'
p.browserUsed STARTS WITH 'Chrome'
p.locationIP ENDS WITH '.1'
Expressions arithmétiques
Utilisez des opérateurs arithmétiques standard avec des valeurs numériques :
-
+(ajout) -
-(soustraction) -
*(multiplication) -
/(division)
Les opérateurs arithmétiques suivent des conventions mathématiques générales.
Préséance:
En règle générale, les opérateurs suivent les règles de précédence des opérateurs établies, comme * avant +. Utilisez des parenthèses pour contrôler l’ordre d’évaluation si nécessaire.
Exemple :
(p.birthday < 20050915 OR p.birthday > 19651231) AND p.gender = 'male'
Règles de contrainte :
Utilisez les règles suivantes dans l’ordre de priorité :
- Les expressions arithmétiques impliquant des arguments de types nombre approximatifs retournent un résultat d’un type numérique approximatif.
- Les expressions arithmétiques impliquant des arguments des types entiers signés et non signés retournent un résultat d’un type entier signé.
Exemple :
LET birth_year = p.birthday / 10000
RETURN birth_year
Accès à la propriété
Accédez aux propriétés à l’aide de la notation par points :
p.firstName
edge.creationDate
Lister l’accès
Accéder aux éléments de liste à l’aide de l’indexation de base zéro :
interests[0] -- first element
interests[1] -- second element
Fonctions intégrées
GQL prend en charge différentes fonctions intégrées pour le traitement et l’analyse des données.
Fonctions d'agrégation
Utilisez des fonctions d’agrégation pour évaluer une expression sur un ensemble de lignes et obtenir une valeur de résultat finale en combinant les valeurs calculées pour chaque ligne. Graph prend en charge les fonctions d’agrégation suivantes :
-
count(*)- compte les lignes -
sum(expression)- somme des valeurs numériques -
avg(expression)- Moyennes des valeurs numériques -
min(expression)- recherche la valeur minimale -
max(expression)- recherche la valeur maximale -
collect_list(expression)- collecte des valeurs dans une liste
En général, les fonctions d’agrégation ignorent les valeurs Null et retournent toujours une valeur Null lorsqu’aucune valeur d’entrée matérielle n’est fournie. Vous pouvez utiliser coalesce pour obtenir une valeur par défaut différente : coalesce(sum(expr), 0). La seule exception est la count fonction d’agrégation, qui compte toujours les valeurs non null fournies, retournant 0 s’il n’y en a pas. Permet count(*) d’inclure des valeurs Null dans le nombre.
Utilisez des fonctions d’agrégation de trois façons différentes :
- Pour calculer des agrégats (verticaux) sur des tables entières
- Pour calculer des agrégats (verticaux) sur des sous-tables déterminées par une clé de regroupement
- Pour calculer des agrégats (horizontaux) sur les éléments d’une liste de groupes
Agrégats verticaux :
-- 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
Agrégats horizontaux :
L’agrégation horizontale calcule les agrégats sur les éléments des variables de liste de groupes à partir de modèles de longueur 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
L’agrégation horizontale est toujours prioritaire sur l’agrégation verticale.
Pour convertir une liste de groupes en liste régulière, utilisez collect_list(edges).
Note
Pour une couverture complète des techniques d’agrégation, notamment la liaison de bord de longueur variable et la combinaison d’agrégation horizontale/verticale, consultez Techniques d’agrégation avancées.
Fonctions de chaîne
-
char_length(string)- retourne la longueur de chaîne. -
upper(string)- retourne la variante majuscule de la chaîne fournie (US ASCII uniquement). -
lower(string)- retourne une variante minuscule de chaîne fournie (US ASCII uniquement). -
trim(string)- supprime les espaces blancs de début et de fin. -
string_join(list, separator)- joint les éléments de liste avec séparateur.
Exemple :
MATCH (p:Person)
WHERE char_length(p.firstName) > 5
RETURN upper(p.firstName) AS name_upper
Fonctions graphiques
-
nodes(path)- retourne des nœuds à partir d’une valeur de chemin d’accès. -
edges(path)- retourne des arêtes à partir d’une valeur de chemin d’accès. -
labels(node_or_edge)- retourne les étiquettes d’un nœud ou d’un bord sous forme de liste de chaînes.
Exemple :
MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues
Fonctions de liste
-
size(list)- retourne la taille d’une valeur de liste. -
trim(list,n)- découper une liste pour qu’elle soit au maximum de taillen.
Exemple :
MATCH (p:Person)-[:hasInterest]->(t:Tag)
WHERE size(collect_list(t)) > 3
RETURN p.firstName, collect_list(t.name) AS interests
Fonctions temporelles
-
zoned_datetime()- retourne la datetime en zone actuelle. -
zoned_datetime("2025-09-12T10:10:52Z")- retourne le datetime interzone donné par l’argument au format ISO 8601.
Exemple :
RETURN zoned_datetime() AS now
Fonctions génériques
-
coalesce(value1, value2, ...)- retourne la première valeur non null.
Exemple :
MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name