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-syntaks (Graph Query Language) for graph i Microsoft Fabric. Du kan finde detaljerede forklaringer i GQL-sprogvejledningen.

Notat

Denne artikel bruger primært grafdatasættet eksempel på sociale netværk. Den indeholder også et par eksempler, der bruger Adventure Works-datasættet fra Graph-selvstudiet.

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. Derefter bruges valgfrie sætninger til oprettelse, 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

Bevarer rækker, der matcher betingelser.

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

Sorterer 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. Følgende sætninger (hvis de findes) garanteres ikke at bevare en sådan rækkefølge.

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

Du kan bruge flere mønstre til at 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')

Du kan få flere oplysninger om grundlæggende typer under GQL-værdier og værdityper.

Referenceværdityper

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

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

Du kan få flere oplysninger om referenceværdityper under 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

Du kan få flere oplysninger om samlingstyper under GQL-værdier og værdityper.

Materiale- og null-typer

Hver værditype kan enten være null (indeholder null-værdien) eller materiale (udelader den). Typer kan som standard være null, medmindre du eksplicit angiver 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`

Du kan få flere oplysninger om listefunktioner under 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

Du kan få flere oplysninger om graffunktioner under 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

Du kan få flere oplysninger om tidsmæssige funktioner under 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

Du kan få flere oplysninger om generiske funktioner under GQL-udtryk og -funktioner.

Almindelige mønstre

I dette afsnit vises nogle almindelige GQL-forespørgselsmønstre, som du kan bruge.

Eksempler på sociale netværk

I disse eksempler bruges grafdatasættet med eksemplet på det sociale netværk.

Find alle noder af en type

-- Get all nodes with a specific label
MATCH (p:Person) RETURN p

Find noder med bestemte egenskaber

-- Filter nodes by property value
MATCH (p:Person) FILTER p.firstName = 'Annemarie' RETURN p

Find forbindelser

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

Gennemgå relationer

-- Multi-hop traversal through different edge types
MATCH (p:Person)-[:knows]->(f:Person)-[:isLocatedIn]->(c:City)
RETURN p.firstName, f.firstName, c.name

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

Eksempler på Adventure Works

I disse eksempler bruges Adventure Works-datasættet fra Graph-selvstudiet.

Find alle kunder

-- Get all customer nodes
MATCH (c:Customer) RETURN c

Find produkter efter navn

-- Filter products by name
MATCH (p:Product) FILTER p.productName = 'Mountain Bike' RETURN p

Gennemgå kundeordrer

-- Multi-hop traversal: customers to orders to products
MATCH (c:Customer)-[:purchases]->(o:Order)-[:contains]->(p:Product)
RETURN c, o, p

Antal ordrer efter medarbejder

-- Count orders by employee
MATCH (e:Employee)-[:sells]->(o:Order)
RETURN e.employeeName, count(o) AS total_orders
GROUP BY e.employeeName
ORDER BY total_orders DESC