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.
Les expressions GQL vous permettent d’effectuer des calculs, des comparaisons et des transformations sur des données au sein de vos requêtes. En combinaison avec les fonctions intégrées, les expressions fournissent des outils puissants pour le traitement, le filtrage et l’analyse des données dans les requêtes de graphique.
Littéraux
Les littéraux sont des expressions simples qui évaluent directement la valeur indiquée. Les littéraux de chaque type de valeur sont expliqués en détail dans les valeurs et les types valeur GQL.
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, qui sont couramment utilisées pour filtrer les résultats dans les requêtes GQL. Ils sont évalués à TRUE, FALSEou UNKNOWN (null).
Caution
Lorsqu’il est utilisé comme filtre, les prédicats conservent uniquement les éléments pour lesquels le prédicat est TRUEévalué .
Prédicats de comparaison
Comparez les valeurs à l’aide de ces opérateurs :
-
=(é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 :
Dans l’ordre de priorité :
- Les expressions de comparaison impliquant des arguments de types numériques approximatifs forcent tous les arguments à être d’un type numérique approximatif.
- Les expressions de comparaison impliquant 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, vous pouvez utiliser :
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 inexistante se fait en fonction du type de nœud ou d’arête accédée.
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 d’un modèle correspondant :
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 :
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é
Propriétés d’accè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
Les fonctions d’agrégation permettent d’évaluer une expression sur un ensemble de lignes et d’obtenir une valeur de résultat finale en combinant les valeurs calculées pour chaque ligne. Les fonctions d’agrégation suivantes sont prises en charge pour le graphe dans Microsoft Fabric :
-
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(*) également d’inclure des valeurs Null dans le nombre.
Les fonctions d’agrégation sont utilisées de trois façons différentes :
- Pour les agrégats informatiques (verticaux) sur des tables entières
- Pour les agrégats informatiques (verticaux) sur les sous-tables déterminées par une clé de regroupement
- Pour les agrégats informatiques (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 datetime en zone actuelle -
zoned_datetime("2025-09-12T10:10:52Z")- retourne datetime interzone donnée 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