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.
Note
Denne funksjonen er for øyeblikket i offentlig forhåndsversjon. Denne forhåndsvisningen leveres uten en tjenesteavtale, og anbefales ikke for produksjonsarbeidsbelastninger. Enkelte funksjoner støttes kanskje ikke eller kan ha begrensede funksjoner. Hvis du vil ha mer informasjon, kan du se Supplemental Terms of Use for Microsoft Azure Previews.
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