Del via


Hurtig reference til GQL

Notat

Denne funktion er i øjeblikket tilgængelig som offentlig prøveversion. Denne prøveversion leveres uden en serviceniveauaftale og anbefales ikke til produktionsarbejdsbelastninger. Visse funktioner understøttes muligvis ikke eller kan have begrænsede funktioner. Du kan finde flere oplysninger under Supplerende vilkår for anvendelse af Microsoft Azure Previews.

Denne artikel er en hurtig reference til GQL (Graph Query Language) syntaks for graf i Microsoft Fabric. Du kan finde detaljerede forklaringer i GQL-sprogvejledningen.

Vigtige oplysninger

Denne artikel bruger udelukkende datasættet for eksempelgrafer på sociale netværk.

Forespørgselsstruktur

GQL-forespørgsler bruger en sekvens af sætninger, der definerer, hvilke data der skal hentes fra grafen, hvordan de skal behandles, og hvordan resultaterne vises. Hver sætning har et bestemt formål, og sammen opretter de en lineær pipeline, der matcher data fra grafen og transformerer dem trinvist.

Typisk forespørgselsflow:
En GQL-forespørgsel starter normalt med at angive det diagrammønster, der skal matche, og bruger derefter valgfri sætninger til oprettelse af variabler, filtrering, sortering, sideinddeling og resultatoutput.

Eksempel:

MATCH (n:Person)-[:knows]->(m:Person) 
LET fullName = n.firstName || ' ' || n.lastName 
FILTER m.gender = 'female' 
ORDER BY fullName ASC 
OFFSET 10
LIMIT 5 
RETURN fullName, m.firstName

Sætningsrækkefølge:

Vigtige oplysninger

Graph i Microsoft Fabric understøtter endnu ikke sammensætning af vilkårlige udsagn. Se artiklen om aktuelle begrænsninger.

Sætninger kan generelt vises i en hvilken som helst rækkefølge i en forespørgsel:

  • MATCH – Angiv diagrammønstre, der skal søges efter.
  • LET – Definer variabler fra udtryk.
  • FILTER – Bevar rækker, der matcher betingelser.
  • ORDER BY – Sortér resultater.
  • OFFSET – Spring mange rækker over.
  • LIMIT – Begræns antallet af rækker.
  • RETURN – Skriv de endelige resultater.

Hver sætning bygger på den forrige, så du trinvist finjustere og forme forespørgselsoutputtet. Du kan få flere oplysninger om hver enkelt sætning i følgende afsnit.

Forespørgselssætninger

TÆNDSTIK

Find grafmønstre i dine data.

Syntaks:

MATCH <graph pattern> [ WHERE <predicate> ]
...

Eksempel:

MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *

Du kan få flere oplysninger om sætningen MATCH i Graph-mønstre.

TILLADE

Opret variabler ved hjælp af udtryk.

Syntaks:

LET <variable> = <expression>, <variable> = <expression>, ...
...

Eksempel:

MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName

Du kan få flere oplysninger om sætningen LET i GQL-sprogvejledningen.

FILTER

Bevar rækker, der opfylder betingelserne.

Syntaks:

FILTER [ WHERE ] <predicate>
...

Eksempel:

MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *

Du kan få flere oplysninger om sætningen FILTER i GQL-sprogvejledningen.

BESTIL EFTER

Sortér resultaterne.

Syntaks:

ORDER BY <expression> [ ASC | DESC ], ...
...

Eksempel:

MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC, n.firstName ASC

Vigtige oplysninger

Den ønskede rækkefølge af rækker er kun garanteret at gælde umiddelbart efter en forudgående ORDER BY sætning. Eventuelle følgende udsagn (hvis de er til stede) garanterer ikke at bevare en sådan orden.

Du kan få flere oplysninger om sætningen ORDER BY i GQL-sprogvejledningen.

FORSKYDNING/GRÆNSE

Spring rækker over, og begræns antallet af resultater.

Syntaks:

OFFSET <offset> [ LIMIT <limit> ]
LIMIT <limit>
...

Eksempel:

MATCH (n:Person)
ORDER BY n.birthday
OFFSET 10 LIMIT 20
RETURN n.firstName || ' ' || n.lastName AS name, n.birthday

Du kan få flere oplysninger om sætningerne OFFSET og LIMIT i GQL-sprogvejledningen.

RETURBILLET

Skriv de endelige resultater.

Syntaks:

RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...

Eksempel:

MATCH (n:Person)
RETURN n.firstName, n.lastName

Du kan få flere oplysninger om sætningen RETURN i GQL-sprogvejledningen.

Grafmønstre

Grafmønstre beskriver den diagramstruktur, der skal matche.

Nodemønstre

I grafdatabaser bruges noder normalt til at repræsentere enheder, f.eks. personer, produkter eller steder.

Nodemønstre beskriver, hvordan du matcher noder i grafen. Du kan filtrere efter mærkat eller binde variabler.

(n)              -- Any node
(n:Person)       -- Node with Person label  
(n:City&Place)   -- Node with City AND Place label
(:Person)        -- Person node, don't bind variable

Du kan få flere oplysninger om nodemønstre i Grafmønstre.

Kantmønstre

Kantmønstre angiver relationer mellem noder, herunder retning og kanttype. I grafdatabaser repræsenterer en kant en forbindelse eller en relation mellem to noder.

<-[e]-             -- Incoming edge
-[e]->             -- Outgoing edge
-[e]-              -- Any edge
-[e:knows]->       -- Edge with label ("relationship type")
-[e:knows|likes]-> -- Edges with different labels
-[:knows]->        -- :knows edge, don't bind variable

Du kan få flere oplysninger om kantmønstre i Grafmønstre.

Navneudtryk

Med navneudtryk kan du matche noder med bestemte navnekombinationer ved hjælp af logiske operatorer.

:Person&Company                  -- Both Person AND Company labels
:Person|Company                  -- Person OR Company labels
:!Company                        -- NOT Company label
:(Person|!Company)&Active        -- Complex expressions with parentheses

Du kan få flere oplysninger om mærkatudtryk i Grafmønstre.

Stimønstre

Stimønstre beskriver gennemgange gennem grafen, herunder hopantal og variabelbindinger.

(a)-[:knows|likes]->{1,3}(b)      -- 1-3 hops via knows/likes
p=()-[:knows]->()                 -- Binding a path variable

Du kan få flere oplysninger om stimønstre i Grafmønstre.

Flere mønstre

Med flere mønstre kan du matche komplekse, ikke-linede grafstrukturer i en enkelt forespørgsel.

(a)->(b), (a)->(c)               -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d)          -- Nonlinear structures

Du kan få flere oplysninger om flere mønstre i Grafmønstre.

Værdier og værdityper

Grundlæggende typer

Grundlæggende typer er primitive dataværdier, f.eks. strenge, tal, booleske værdier og datetimes.

STRING           -- 'hello', "world"
INT64            -- 42, -17
FLOAT64          -- 3.14, -2.5e10
BOOL             -- TRUE, FALSE, UNKNOWN
ZONED DATETIME   -- ZONED_DATETIME('2023-01-15T10:30:00Z')

Få mere at vide om grundlæggende typer i GQL-værdier og værdityper.

Referenceværdityper

Referenceværdityper er noder og kanter, der bruges som værdier i forespørgsler.

NODE             -- Node reference values
EDGE             -- Edge reference values

Få mere at vide om referenceværdityper i GQL-værdier og værdityper.

Samlingstyper

Samlingstyper grupperer flere værdier, f.eks. lister og stier.

LIST<INT64>      -- [1, 2, 3]
LIST<STRING>     -- ['a', 'b', 'c']
PATH             -- Path values

Få mere at vide om samlingstyper i GQL-værdier og -værdityper.

Materiale- og null-typer

Hver værditype er enten null (inkluderer nullværdien) eller materiel (ekskluderer den). Som standard kan typer annulleres, medmindre det eksplicit er angivet som NOT NULL.

STRING NOT NULL  -- Material (Non-nullable) string type
INT64            -- Nullable (default) integer type

Udtryk & operatorer

Sammenligning

Sammenligningsoperatorer sammenligner værdier og kontrollerer, om der er lighed, rækkefølge eller null-værdier.

=, <>, <, <=, >, >=              -- Standard comparison
IS NULL, IS NOT NULL             -- Null checks

Du kan få flere oplysninger om sammenlignings prædikater i GQL-udtryk og -funktioner.

Logisk

Logiske operatorer kombinerer eller ophæver booleske betingelser i forespørgsler.

AND, OR, NOT                     -- Boolean logic

Du kan få flere oplysninger om logiske udtryk i GQL-udtryk og -funktioner.

Aritmetik

Aritmetiske operatorer udfører beregninger på tal.

+, -, *, /                       -- Basic arithmetic operations

Du kan få flere oplysninger om aritmetiske udtryk i GQL-udtryk og -funktioner.

Strengmønstre

Strengmønster prædikater matcher understrenge, præfikser eller suffikser i strenge.

n.firstName CONTAINS 'John'          -- Has substring
n.browserUsed STARTS WITH 'Chrome'   -- Starts with prefix
n.locationIP ENDS WITH '.1'          -- Ends with suffix

Du kan få flere oplysninger om prædikater for strengmønster i GQL-udtryk og -funktioner.

Listehandlinger

Testmedlemskab for listehandlinger, adgangselementer og målingslistelængde.

n.gender IN ['male', 'female']    -- Membership test
n.tags[0]                        -- First element
size(n.tags)                     -- List length

Du kan få flere oplysninger om prædikater for listemedlemskab i GQL-udtryk og -funktioner.

Egenskabsadgang

Egenskabsadgang henter værdien af en egenskab fra en node eller kant.

n.firstName                      -- Property access

Du kan få flere oplysninger om egenskabsadgang i GQL-udtryk og -funktioner.

Functions

Aggregeringsfunktioner

Aggregeringsfunktioner beregner oversigtsværdier for grupper af rækker (lodret aggregering) eller over elementerne på en gruppeliste (vandret sammenlægning).

count(*)                         -- Count all rows
count(expr)                      -- Count non-null values
sum(p.birthday)                  -- Sum values
avg(p.birthday)                  -- Average
min(p.birthday), max(p.birthday) -- Minimum and maximum values
collect_list(p.firstName)        -- Collect values into a list

Få mere at vide om aggregeringsfunktioner i GQL-udtryk og -funktioner.

Streng funktioner

Med strengfunktioner kan du arbejde med og analysere strengværdier.

char_length(s)                   -- String length
upper(s), lower(s)               -- Change case (US ASCII only)
trim(s)                          -- Remove leading and trailing whitespace
string_join(list, separator)     -- Join list elements with a separator

Få mere at vide om strengfunktioner i GQL-udtryk og -funktioner.

Listefunktioner

Med listefunktioner kan du arbejde med lister, f.eks. kontrol af længde eller justeringsstørrelse.

size(list)                       -- List length
trim(list, n)                    -- Trim a list to be at most size `n`

Få mere at vide om listefunktioner i GQL-udtryk og -funktioner.

Graf funktioner

Med graffunktioner kan du få oplysninger fra noder, stier og kanter.

labels(node)                     -- Get node labels
nodes(path)                      -- Get path nodes
edges(path)                      -- Get path edges

Få mere at vide om graffunktioner i GQL-udtryk og -funktioner.

Tidsmæssige funktioner

Med tidsmæssige funktioner kan du arbejde med dato- og klokkeslætsværdier.

zoned_datetime()               -- Get the current timestamp

Få mere at vide om tidsmæssige funktioner i GQL-udtryk og -funktioner.

Generiske funktioner

Generiske funktioner gør det muligt at arbejde med data på almindelige måder.

coalesce(expr1, expr2, ...)    -- Get the first non-null value

Få mere at vide om generiske funktioner i GQL-udtryk og -funktioner.

Almindelige mønstre

Find forbindelser

-- Friends of friends  
MATCH (me:Person {firstName: 'Annemarie'})-[:knows]->{2}(fof:Person)
WHERE fof <> me
RETURN DISTINCT fof.firstName

Aggregering

-- Count by group
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name AS name, count(*) AS population
GROUP BY name
ORDER BY population DESC

Øverste k

-- Top 10
MATCH (p:Person)-[:hasCreator]-(m:Post)
RETURN p.firstName AS name, count(m) AS posts
GROUP BY name
ORDER BY posts DESC
LIMIT 10

Filtrering og betingelser

-- Complex conditions
MATCH (p:Person)-[:isLocatedIn]->(c:City)
WHERE p.birthday >= 19800101 AND p.birthday <= 20000101
  AND c.name IN ['Seattle', 'Portland']
  AND p.firstName IS NOT NULL
RETURN p.firstName, p.birthday

Gennemløb af sti

-- Variable length paths
MATCH p = TRAIL (src:Person {firstName: 'Annemarie'})-[:knows]->{1,3}(dst:Person)
WHERE dst.firstName = 'Alexander'
RETURN p