Share via


Snelzoekgids voor GQL

Opmerking

Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview wordt geleverd zonder een service level agreement en wordt niet aanbevolen voor productieworkloads. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Voor meer informatie, zie Aanvullende Gebruiksvoorwaarden voor Microsoft Azure Previews.

Dit artikel is een snelle referentie van GQL (Graph Query Language) syntaxis voor grafen in Microsoft Fabric. Zie de GQL-taalhandleiding voor gedetailleerde uitleg.

Belangrijk

Dit artikel gebruikt uitsluitend de voorbeeldgrafiekdataset van sociale netwerken.

Querystructuur

GQL-query's maken gebruik van een reeks instructies die bepalen welke gegevens uit de grafiek moeten worden opgehaald, hoe deze moeten worden verwerkt en hoe de resultaten worden weergegeven. Elke instructie heeft een specifiek doel en samen maken ze een lineaire pijplijn die overeenkomt met gegevens uit de grafiek en deze stap voor stap transformeert.

Typische querystroom:
Een GQL-query begint meestal door het grafiekpatroon op te geven dat overeenkomt, en gebruikt vervolgens optionele instructies voor het maken van variabelen, filteren, sorteren, paginering en resultaatuitvoer.

Example:

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

Volgorde van instructie:

Belangrijk

Graph in Microsoft Fabric biedt nog geen ondersteuning voor willekeurige samenstelling van instructies. Zie het artikel over huidige beperkingen.

Instructies kunnen over het algemeen in elke volgorde binnen een query worden weergegeven:

  • MATCH – Geef grafiekpatronen op die moeten worden gevonden.
  • LET – Definieer variabelen uit expressies.
  • FILTER – Overeenkomende voorwaarden voor rijen behouden.
  • ORDER BY – Resultaten sorteren.
  • OFFSET – Veel rijen overslaan.
  • LIMIT – Beperk het aantal rijen.
  • RETURN – De uiteindelijke resultaten uitvoeren.

Elke instructie is gebaseerd op de vorige instructie, dus u kunt de query-uitvoer incrementeel verfijnen en vormgeven. Zie de volgende secties voor meer informatie over elke instructie.

Query-opdrachten

MATCH

Zoek grafiekpatronen in uw gegevens.

Syntaxis:

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

Example:

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

Zie de MATCH voor meer informatie over de instructie.

LATEN

Maak variabelen met behulp van expressies.

Syntaxis:

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

Example:

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

Zie de LET voor meer informatie over de instructie.

FILTEREN

Rijen behouden die overeenkomen met voorwaarden.

Syntaxis:

FILTER [ WHERE ] <predicate>
...

Example:

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

Zie de FILTER voor meer informatie over de instructie.

SORTEER OP

Sorteer de resultaten.

Syntaxis:

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

Example:

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

Belangrijk

De gevraagde volgorde van rijen is alleen gegarandeerd direct na een voorgaande ORDER BY uitspraak. Eventuele volgende verklaringen (indien aanwezig) garanderen niet dat een dergelijke volgorde behouden blijft.

Zie de ORDER BY voor meer informatie over de instructie.

VERSCHUIVING/LIMIET

Rij overslaan en het aantal resultaten beperken.

Syntaxis:

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

Example:

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

Zie de OFFSET voor meer informatie over de LIMIT en instructies.

RETURN

Voer de uiteindelijke resultaten uit.

Syntaxis:

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

Example:

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

Zie de RETURN voor meer informatie over de instructie.

Grafiekpatronen

Grafiekpatronen beschrijven de structuur van de grafiek die overeenkomt.

Knooppuntpatronen

In grafiekdatabases worden knooppunten meestal gebruikt om entiteiten weer te geven, zoals personen, producten of plaatsen.

Knooppuntpatronen beschrijven hoe knooppunten in de grafiek overeenkomen. U kunt filteren op label- of bindvariabelen.

(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

Zie de grafiekpatronen voor meer informatie over knooppuntpatronen.

Randpatronen

Edge-patronen geven relaties tussen knooppunten op, inclusief richting en randtype. In grafiekdatabases vertegenwoordigt een rand een verbinding of relatie tussen twee knooppunten.

<-[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

Zie de grafiekpatronen voor meer informatie over randpatronen.

Labelexpressies

Met labelexpressies kunt u knooppunten vergelijken met specifieke labelcombinaties met behulp van logische operators.

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

Zie de grafiekpatronen voor meer informatie over labelexpressies.

Padpatronen

Padpatronen beschrijven doorkruisingen via de grafiek, inclusief hopaantallen en variabele bindingen.

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

Zie de grafiekpatronen voor meer informatie over padpatronen.

Meerdere patronen

Met meerdere patronen kunt u complexe, niet-lineaire grafiekstructuren in één query vergelijken.

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

Zie de grafiekpatronen voor meer informatie over meerdere patronen.

Waarden en waardetypen

Basistypen

Basistypen zijn primitieve gegevenswaarden, zoals tekenreeksen, getallen, Booleaanse waarden en datum/tijd.

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

Meer informatie over basistypen in de GQL-waarden en waardetypen.

Referentiewaardetypen

Referentiewaardetypen zijn knooppunten en randen die worden gebruikt als waarden in query's.

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

Meer informatie over referentiewaardetypen in de GQL-waarden en waardetypen.

Verzamelingstypen

Verzamelingstypen groeperen meerdere waarden, zoals lijsten en paden.

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

Meer informatie over verzamelingstypen in de GQL-waarden en waardetypen.

Materiaal- en neutrale types

Elk waardetype is ofwel ongeldig (inclusief de nulwaarde) of materieel (exclusief dit). Standaard zijn types nul te maken tenzij expliciet gespecificeerd als NOT NULL.

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

Expressies en operators

Comparison

Vergelijkingsoperatoren vergelijken waarden en controleren op gelijkheid, volgorde of null-waarden.

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

Zie de GQL-expressies en -functies voor meer informatie over vergelijkingspredicaten.

Logical

Logische operators combineren of negate booleaanse voorwaarden in query's.

AND, OR, NOT                     -- Boolean logic

Zie de GQL-expressies en -functies voor meer informatie over logische expressies.

Arithmetic

Rekenkundige operators voeren berekeningen uit op getallen.

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

Zie de GQL-expressies en -functies voor meer informatie over rekenkundige expressies.

Tekenreekspatronen

Tekenreekspatronen komen overeen met subtekenreeksen, voorvoegsels of achtervoegsels in tekenreeksen.

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

Zie de GQL-expressies en -functies voor meer informatie over tekenreekspatroonpredicaten.

Lijstbewerkingen

Testlidmaatschap van lijstbewerkingen, toegangselementen en lengte van metinglijst.

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

Zie de GQL-expressies en -functies voor meer informatie over lijstlidmaatschapspredicaten.

Toegang tot eigenschappen

Met eigenschapstoegang wordt de waarde van een eigenschap opgehaald van een knooppunt of edge.

n.firstName                      -- Property access

Zie de GQL-expressies en -functies voor meer informatie over toegang tot eigenschappen.

Functions

Gecompileerde functies

Statistische functies berekenen samenvattingswaarden voor groepen rijen (verticale aggregatie) of over de elementen van een groepslijst (horizontale aggregatie).

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

Meer informatie over statistische functies in de GQL-expressies en -functies.

Stringfuncties

Met tekenreeksfuncties kunt u tekenreekswaarden gebruiken en analyseren.

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

Meer informatie over tekenreeksfuncties in de GQL-expressies en -functies.

Lijstfuncties

Met lijstfuncties kunt u werken met lijsten, zoals het controleren van de lengte of het bijsnijden van de grootte.

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

Meer informatie over lijstfuncties in de GQL-expressies en -functies.

Functies voor grafieken

Met grafiekfuncties kunt u informatie ophalen uit knooppunten, paden en randen.

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

Meer informatie over grafiekfuncties in de GQL-expressies en -functies.

Tijdelijke functies

Met tijdelijke functies kunt u werken met datum- en tijdwaarden.

zoned_datetime()               -- Get the current timestamp

Meer informatie over tijdelijke functies in de GQL-expressies en -functies.

Algemene functies

Met algemene functies kunt u op algemene manieren met gegevens werken.

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

Meer informatie over algemene functies in de GQL-expressies en -functies.

Algemene patronen

Verbindingen zoeken

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

Aggregation

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

Bovenste 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

Filteren en voorwaarden

-- 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

Pad doorkruising

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