Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
Questa funzionalità è attualmente disponibile in anteprima pubblica. Questa anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.
Le espressioni GQL consentono di eseguire calcoli, confronti e trasformazioni sui dati all'interno delle query. In combinazione con le funzioni predefinite, le espressioni offrono potenti strumenti per l'elaborazione, il filtro e l'analisi dei dati nelle query a grafo.
Literals
I valori letterali sono espressioni semplici che restituiscono direttamente il valore dichiarato. I valori letterali di ogni tipo di valore vengono illustrati in dettaglio nei valori GQL e nei tipi valore.
Esempio:
1
1.0d
TRUE
"Hello, graph!"
[ 1, 2, 3 ]
NULL
Per una sintassi letterale dettagliata per ogni tipo di dati, vedere Valori GQL e tipi valore.
Predicates
I predicati sono espressioni booleane, comunemente usate per filtrare i risultati nelle query GQL. Restituiscono TRUE, FALSEo UNKNOWN (null).
Attenzione
Se usato come filtro, i predicati mantengono solo gli elementi, per i quali il predicato restituisce TRUE.
Predicati di confronto
Confrontare i valori usando questi operatori:
-
=(uguale) -
<>(diverso da) -
<(minore di) -
>(maggiore di) -
<=(minore o uguale) -
>=(maggiore o uguale)
GQL usa la logica a tre valori in cui i confronti con valori Null restituiscono UNKNOWN:
| Expression | Result |
|---|---|
5 = 5 |
TRUE |
5 = 3 |
FALSE |
5 = NULL |
UNKNOWN |
NULL = NULL |
UNKNOWN |
Per un comportamento di confronto specifico, vedere la documentazione per ogni tipo di valore nei valori GQL e nei tipi valore.
Esempio:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915
RETURN p.firstName
Regole di coercizione numerica:
In ordine di precedenza:
- Le espressioni di confronto che includono argomenti di tipi numerici approssimativi comproprigliano tutti gli argomenti di un tipo numerico approssimativo.
- Le espressioni di confronto che includono argomenti di tipi integer con segno e senza segno coercino tutti gli argomenti in modo che siano di un tipo integer con segno.
Espressioni logiche
Combinare condizioni con operatori logici:
-
AND(entrambe le condizioni true) -
OR(entrambe le condizioni true) -
NOT(nega condizione)
Esempio:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915 AND p.firstName = 'John'
RETURN p.firstName || ' ' || p.lastName AS fullName
Predicati di esistenza delle proprietà
Per verificare se esistono proprietà, puoi utilizzare:
p.locationIP IS NOT NULL
p.browserUsed IS NULL
Annotazioni
Tentare di accedere a una proprietà nota inesistente comporta un errore di sintassi.
L'accesso a una proprietà potenzialmente inesistente valuta a null.
La determinazione se una proprietà sia nota o potenzialmente inesistente avviene in base al tipo di nodo o spigolo a cui si accede.
Elencare i predicati di appartenenza
Verificare se i valori si trovano negli elenchi:
p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']
Predicati del modello di stringa
Trova la corrispondenza tra stringhe usando criteri di ricerca:
p.firstName CONTAINS 'John'
p.browserUsed STARTS WITH 'Chrome'
p.locationIP ENDS WITH '.1'
Espressioni aritmetiche
Usare operatori aritmetici standard con valori numerici:
-
+(addizione) -
-(sottrazione) -
*(moltiplicazione) -
/(divisione)
Gli operatori aritmetici seguono convenzioni matematiche generali.
Precedenza:
Gli operatori in genere seguono le regole di precedenza degli operatori stabilite, ad esempio * prima +di . Usare le parentesi per controllare l'ordine di valutazione in base alle esigenze.
Esempio:
(p.birthday < 20050915 OR p.birthday > 19651231) AND p.gender = 'male'
Regole di coercizione:
In ordine di precedenza:
- Le espressioni aritmetiche che coinvolgono argomenti di tipi numerici approssimativi restituiscono un risultato di un tipo numerico approssimativo.
- Le espressioni aritmetiche che coinvolgono argomenti di tipi integer con segno e senza segno restituiscono un risultato di un tipo integer con segno.
Esempio:
LET birth_year = p.birthday / 10000
RETURN birth_year
Accesso alle proprietà
Accedere alle proprietà usando la notazione del punto:
p.firstName
edge.creationDate
Elencare l'accesso
Accedere a elementi elenco usando l'indicizzazione in base zero:
interests[0] -- first element
interests[1] -- second element
Funzioni predefinite
GQL supporta varie funzioni predefinite per l'elaborazione e l'analisi dei dati.
Funzioni di aggregazione
Le funzioni di aggregazione vengono usate per valutare un'espressione su un set di righe e ottenere un valore finale del risultato combinando i valori calcolati per ogni riga. Le funzioni di aggregazione seguenti sono supportate per il grafico in Microsoft Fabric:
-
count(*)- conta le righe -
sum(expression)- somma valori numerici -
avg(expression)- medie valori numerici -
min(expression)- trova il valore minimo -
max(expression)- trova il valore massimo -
collect_list(expression)- raccoglie i valori in un elenco
In generale, le funzioni di aggregazione ignorano i valori Null e restituiscono sempre un valore Null quando non vengono forniti valori di input materiali. È possibile usare coalesce per ottenere un valore predefinito diverso: coalesce(sum(expr), 0). L'unica eccezione è la count funzione di aggregazione, che conta sempre i valori non Null forniti, restituendo 0 se non sono presenti. Usare count(*) anche per includere valori Null nel conteggio.
Le funzioni di aggregazione vengono usate in tre modi diversi:
- Per le aggregazioni di calcolo (verticale) su intere tabelle
- Per le aggregazioni di calcolo (verticale) su tabelle secondarie determinate da una chiave di raggruppamento
- Per l'elaborazione (orizzontale) aggregazioni sugli elementi di un elenco di gruppi
Aggregazioni verticali:
-- 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
Aggregazioni orizzontali:
L'aggregazione orizzontale calcola le aggregazioni sugli elementi delle variabili dell'elenco di gruppi dai modelli a lunghezza variabile:
-- 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'aggregazione orizzontale ha sempre la precedenza sull'aggregazione verticale.
Per convertire un elenco di gruppi in un elenco regolare, usare collect_list(edges).
Annotazioni
Per una copertura completa delle tecniche di aggregazione, tra cui l'associazione dei bordi a lunghezza variabile e la combinazione di aggregazioni orizzontali/verticali, vedere Tecniche avanzate di aggregazione.
Funzioni stringa
-
char_length(string)- restituisce la lunghezza della stringa -
upper(string)- restituisce una variante maiuscola della stringa specificata (solo US ASCII) -
lower(string)- restituisce una variante minuscola della stringa specificata (solo US ASCII) -
trim(string)- rimuove gli spazi vuoti iniziali e finali -
string_join(list, separator)- unisce elementi elenco con separatore
Esempio:
MATCH (p:Person)
WHERE char_length(p.firstName) > 5
RETURN upper(p.firstName) AS name_upper
Funzioni del grafo
-
nodes(path): restituisce nodi da un valore di percorso -
edges(path)- restituisce i bordi da un valore di percorso -
labels(node_or_edge): restituisce le etichette di un nodo o di un bordo come elenco di stringhe
Esempio:
MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues
Funzioni di elenco
-
size(list)- restituisce le dimensioni di un valore di elenco -
trim(list,n)- tagliare un elenco in modo che sia al massimo di dimensionin
Esempio:
MATCH (p:Person)-[:hasInterest]->(t:Tag)
WHERE size(collect_list(t)) > 3
RETURN p.firstName, collect_list(t.name) AS interests
Funzioni temporali
-
zoned_datetime()- restituisce datetime con zona corrente -
zoned_datetime("2025-09-12T10:10:52Z"): restituisce un valore datetime con zone specificato dall'argomento in formato ISO 8601
Esempio:
RETURN zoned_datetime() AS now
Funzioni generica
-
coalesce(value1, value2, ...)- restituisce il primo valore non Null
Esempio:
MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name