Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Denne artikkelen inneholder en omfattende referanse for GQL-uttrykk, predikater og innebygde funksjoner som er tilgjengelige i grafen i Microsoft Fabric-spørringer. Bruk denne referansen til å forstå hvordan du utfører beregninger, filtrerer resultater og transformerer data i grafspørringene.
Hvis du vil ha en oversikt over GQL-spørringsspråket og eksempler på ende-til-ende-spørring, kan du se GQL-språkveiledning. Hvis du vil ha informasjon om støttede datatyper og litteralsyntaks, kan du se GQL-verdier og verdityper.
Litteraler
Litteraler er enkle uttrykk som direkte evalueres til den angitte verdien. Artikkelen om GQL-verdier og verdityper forklarer litteraler av hver type verdi i detalj.
Eksempel:
1
1.0d
TRUE
"Hello, graph!"
[ 1, 2, 3 ]
NULL
Hvis du vil ha detaljert litteralsyntaks for hver datatype, kan du se GQL-verdier og verdityper.
Predikater
Predikater er boolske uttrykk som du vanligvis bruker til å filtrere resultater i GQL-spørringer. De evalueres til TRUE, FALSEeller UNKNOWN (null).
Forsiktig!
Når du bruker predikater som filter, beholder de bare de elementene som predikatet evaluerer til TRUE.
Sammenligningspredikater
Bruk disse operatorene til å sammenligne verdier:
-
=(lik) -
<>(ikke lik) -
<(mindre enn) -
>(større enn) -
<=(mindre enn eller lik) -
>=(større enn eller lik)
GQL bruker treverdilogikk der sammenligninger med nullretur UNKNOWN:
| Uttrykk | Resultat |
|---|---|
5 = 5 |
TRUE |
5 = 3 |
FALSE |
5 = NULL |
UNKNOWN |
NULL = NULL |
UNKNOWN |
Hvis du vil ha spesifikk sammenligningsvirkemåte, kan du se dokumentasjonen for hver verditype i GQL-verdier og verdityper.
Eksempel:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915
RETURN p.firstName
Antall tvangsregler:
Bruk følgende regler i rekkefølgen av prioritet:
- Sammenligningsuttrykk som involverer argumenter for omtrentlige numeriske typer, tvinger alle argumenter til å være av en omtrentlig numerisk type.
- Sammenligningsuttrykk som involverer argumenter for både signerte og usignerte heltallstyper, tvinger alle argumenter til å være av en signert heltallstype.
Logiske uttrykk
Kombinere betingelser med logiske operatorer:
-
AND(begge betingelsene er sanne) -
OR(begge betingelsene er sanne) -
NOT(opphever betingelse) -
XOR(eksklusiv disjunction – sann når nøyaktig én operand er sann)
Eksempel:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915 AND p.firstName = 'John'
RETURN p.firstName || ' ' || p.lastName AS fullName
Predikater for egenskapseksistens
Hvis du vil kontrollere om det finnes egenskaper, bruker du disse predikatene:
p.locationIP IS NOT NULL
p.browserUsed IS NULL
Note
Forsøk på å få tilgang til en kjent ikke-eksisterende egenskap resulterer i en syntaksfeil.
Tilgang til en potensielt ikke-eksisterende eiendom vurderer til null.
Fastsettelsen av om en egenskap er kjent eller potensielt ikke-eksisterende, er basert på typen node eller kant som er tilgjengelig.
Predikater for listemedlemskap
Test om verdiene er i lister:
p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']
Strengmønsterpredikater
Sammenligne strenger ved hjelp av teknikker for mønstersamsvar:
p.firstName CONTAINS 'John'
p.browserUsed STARTS WITH 'Chrome'
p.locationIP ENDS WITH '.1'
Aritmetiske uttrykk
Bruk standard aritmetiske operatorer med numeriske verdier:
-
+(tillegg) -
-(subtraksjon) -
*(multiplikasjon) -
/(divisjon)
Aritmetiske operatorer følger generelle matematiske konvensjoner.
Forrang:
Operatorer følger vanligvis etablerte regler for operatorprioritet, for eksempel * før +. Bruk parenteser til å kontrollere evalueringsrekkefølgen etter behov.
Eksempel:
(p.birthday < 20050915 OR p.birthday > 19651231) AND p.gender = 'male'
Tvangsregler:
Bruk følgende regler i rekkefølgen av prioritet:
- Aritmetiske uttrykk som involverer argumenter for omtrentlige talltyper, returnerer et resultat av en omtrentlig numerisk type.
- Aritmetiske uttrykk som involverer argumenter for både signerte og ikke-signerte heltallstyper, returnerer et resultat av en signert heltallstype.
Eksempel:
LET birth_year = p.birthday / 10000
RETURN birth_year
Egenskapstilgang
Access-egenskaper ved hjelp av punkt notasjon:
p.firstName
edge.creationDate
Listetilgang
Tilgangslisteelementer ved hjelp av nullbasert indeksering:
interests[0] -- first element
interests[1] -- second element
Innebygde funksjoner
GQL støtter ulike innebygde funksjoner for databehandling og analyse.
Mengdefunksjoner
Bruk mengdefunksjoner til å evaluere et uttrykk over et sett med rader og få en endelig resultatverdi ved å kombinere verdiene som beregnes for hver rad. Graph støtter følgende mengdefunksjoner:
-
count(*)- teller rader -
sum(expression)– summerer numeriske verdier -
avg(expression)– gjennomsnitt av numeriske verdier -
min(expression)– finner minimumsverdi -
max(expression)– finner maksimumsverdi -
collect_list(expression)– samler inn verdier i en liste
Generelt ignorerer mengdefunksjoner nullverdier og returnerer alltid en nullverdi når ingen materialinndataverdier er angitt. Du kan bruke coalesce til å få en annen standardverdi: coalesce(sum(expr), 0). Det eneste unntaket count er mengdefunksjonen, som alltid teller verdiene som ikke er null, og returnerer 0 hvis det ikke finnes noen. Brukes count(*) til å inkludere nullverdier i tellingen.
Bruk mengdefunksjoner på tre forskjellige måter:
- Beregne (loddrette) aggregater over hele tabeller
- Slik beregner du (loddrette) aggregater over deltabeller som bestemmes av en grupperingsnøkkel
- Beregne (vannrette) aggregater over elementene i en gruppeliste
Loddrette aggregater:
-- 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
Vannrette aggregater:
Vannrett aggregasjon beregner aggregater over elementene i gruppelistevariabler fra mønstre med variabel lengde:
-- 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
Vannrett aggregasjon har alltid prioritet over loddrett aggregasjon.
Hvis du vil konvertere en gruppeliste til en vanlig liste, bruker collect_list(edges)du .
Note
Hvis du vil ha omfattende dekning av aggregasjonsteknikker, inkludert binding med variabel lengde og kombinasjon av vannrett/vertikal aggregasjon, kan du se Avanserte aggregasjonsteknikker.
Betingede uttrykk
Bruk betingede uttrykk til å returnere forskjellige verdier basert på betingelser.
Søk etter SAK:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END
Enkel SAK:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
ELSE default_result
END
NULLHVIS:
NULLIF(a, b) returnerer NULL hvis a er lik b, ellers returneres a.
Eksempel:
MATCH (p:Person)
RETURN p.firstName,
CASE
WHEN p.gender = 'male' THEN 'M'
WHEN p.gender = 'female' THEN 'F'
ELSE 'Other'
END AS gender_code,
NULLIF(p.browserUsed, 'Unknown') AS browser
Streng-funksjoner
-
char_length(string)- returnerer strenglengde. -
upper(string)– returnerer stor variant av angitt streng (bare US ASCII). -
lower(string)– returnerer små bokstaver variant av angitt streng (bare US ASCII). -
trim(string)– fjerner innledende og etterfølgende mellomrom. -
string_join(list, separator)– kobler sammen listeelementer med skilletegn.
Eksempel:
MATCH (p:Person)
WHERE char_length(p.firstName) > 5
RETURN upper(p.firstName) AS name_upper
Graf-funksjoner
-
nodes(path)– returnerer noder fra en baneverdi. -
edges(path)– returnerer kanter fra en baneverdi. -
elements(path)– returnerer alle noder og kanter fra en bane som én enkelt liste, i banerekkefølge. -
labels(node_or_edge)– returnerer etikettene for en node eller kant som en liste over strenger. -
path_length(path)– returnerer antallet kanter i en bane.
Eksempel:
MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues, path_length(p) AS hops
Listefunksjoner
-
size(list)– returnerer størrelsen på en listeverdi. -
trim(list,n)- trimme en liste for å være i mest mulig størrelsen.
Eksempel:
MATCH (p:Person)-[:hasInterest]->(t:Tag)
WHERE size(collect_list(t)) > 3
RETURN p.firstName, collect_list(t.name) AS interests
Temporale funksjoner
-
zoned_datetime()– returnerer gjeldende sonedato. -
zoned_datetime("2025-09-12T10:10:52Z")– returnerer den sonede datetime gitt av argumentet i ISO 8601-format.
Eksempel:
RETURN zoned_datetime() AS now
Generiske funksjoner
-
coalesce(value1, value2, ...)– returnerer den første verdien som ikke er null. -
to_json_string(value)– konverterer en verdi til JSON-strengrepresentasjonen.
Eksempel:
MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name,
to_json_string(p) AS person_json