Vue d'ensemble
Dans une instruction UQL, plusieurs clauses sont souvent impliquées, à travers lesquelles les données récupérées de la base de données ou construites au sein de l'instruction sont séquentiellement transmises et traitées. Les alias sont utilisés pour représenter les données, permettant aux clauses de les appeler pour utilisation ou traitement ultérieur.
Les données peuvent contenir plusieurs entrées, qui peuvent être vues à des fins d'illustration comme plusieurs lignes, chacune contenant une entrée de données. Lorsqu'une clause (en particulier une clause enchaînée) appelle des alias, la requête ou le calcul correspondant est effectué ligne par ligne.
Données Homologues
Les données dérivées d'une clause sont appelées homologues, et les données produites par une clause restent homologues avec les données qui sont entrées. En général, toutes les données homologues ont le même nombre de lignes, et les entrées dans la même ligne sont corrélées. Cette homogénéité s'étend aux informations extraites des données homologues.
Exemple : tail
, path
et length
sont homologues, ils ont tous 5 lignes.
n().e()[:2].n(as tail).limit(5) as path
with length(path) as length
return path, tail, length
Exemple : n
, n.score1
, n.score2
et mean
sont homologues, ils ont tous 4 lignes.
find().nodes() as n
return (n.score1 + n.score2) / 2 as mean
Agrégation
Les fonctions d'agrégation condensent les données en une seule ligne tout en supprimant les autres, et les données homologues des données agrégées seront également affectées. Après l'agrégation, la seule ligne restante de tous les flux de données homologues est généralement non corrélée.
Exemple : n
et n.score1
sont homologues, à l'origine avec 4 lignes ; tandis que n.score1
est agrégé dans la clause RETURN
et produit minS1
, n
est également réduit à une seule ligne.
find().nodes() as n
return n, min(n.score1) as minS1
Déduplication
L'application de la déduplication aux données réduit habituellement leur nombre de lignes, et les données homologues des données dédupliquées seront également affectées. Les lignes restantes dans toutes les données homologues restent corrélées par ligne.
La seule exception se produit lorsque la déduplication a lieu dans la clause RETURN
, où les données homologues des données dédupliquées ne seront pas affectées. Par conséquent, la corrélation ligne par ligne entre les données dédupliquées et leurs données homologues est perdue.
Exemple : tail
et path
sont homologues, à l'origine avec 5 lignes.
- Dans la partie (a) où
tail
est dédupliqué dans la clauseWITH
, les lignes correspondantes danspath
sont supprimées également. - Dans la partie (b) où
tail
est dédupliqué dans la clauseRETURN
,path
n'est pas affecté.
Données Hétérologues
Les données dérivées de clauses totalement indépendantes sont appelées hétérologues. Les lignes dans les données hétérologues sont généralement non corrélées et libres d'avoir un nombre de lignes différent.
Lorsque les données hétérologues entrent dans la même clause, elles sont généralement réduites automatiquement à la longueur minimale de toutes les données pour garantir qu'elles peuvent être traitées ligne par ligne. Cependant, il y a deux exceptions à cette règle :
- Dans la clause
WITH
, un produit cartésien sera effectué entre toutes les données hétérologues. - Dans la clause
RETURN
, les données hétérologues ne sont pas réduites à la même longueur, sauf si elles sont conjointement utilisées pour certains calculs ou si une fonction d'agrégation est incluse.
Exemple : n1
et n2
sont hétérologues, chacun avec un nombre différent de lignes ; lorsqu'ils entrent ensemble dans la clause de recherche de chemin, la troisième ligne de n2
est supprimée pour garantir que n1
et n2
ont le même nombre de lignes pour le traitement.
find().nodes({_uuid in [1, 3]}) as n1
find().nodes({_uuid in [2, 4, 5]}) as n2
n(n1).e().n(n2) as path
return path
Clause WITH
Exemple : a
et c
sont homologues avec 3 lignes chacun, tandis que b
est hétérologue avec 2 lignes ; lorsque c
et b
sont utilisés ensemble dans la clause WITH
, un produit cartésien est effectué entre eux. En conséquence, c
et b
deviennent homologues et contiennent tous deux 6 lignes chacun.
Clause RETURN
Exemple : a
avec 3 lignes et b
avec 2 lignes sont hétérologues.
- Dans la partie (a) où le calcul sur
b
dans la clauseRETURN
n'implique pasa
,a
etb+1
retournent respectivement 3 lignes et 2 lignes. - Dans la partie (b) où le calcul de
c
dans la clauseRETURN
implique à la foisa
etb
,a
est réduit à 2 lignes, etc
contient 2 lignes. Cependant,a
etb
qui retournent indépendamment ne sont pas affectés.
Exemple : a
est agrégé dans la clause RETURN
, ce qui laisse b
avec 1 ligne également.