Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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