Share via


GQL-expressies, predicaten en functies

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.

Met GQL-expressies kunt u berekeningen, vergelijkingen en transformaties uitvoeren op gegevens in uw query's. In combinatie met ingebouwde functies bieden expressies krachtige hulpprogramma's voor gegevensverwerking, filtering en analyse in grafiekquery's.

Literals

Letterlijke waarden zijn eenvoudige expressies die rechtstreeks evalueren naar de opgegeven waarde. Letterlijke waarden van elk soort waarde worden gedetailleerd beschreven in GQL-waarden en waardetypen.

Example:

1
1.0d
TRUE
"Hello, graph!"
[ 1, 2, 3 ]
NULL

Zie GQL-waarden en waardetypen voor gedetailleerde letterlijke syntaxis voor elk gegevenstype.

Predicates

Predicaten zijn booleaanse expressies, die vaak worden gebruikt voor het filteren van resultaten in GQL-query's. Ze evalueren of TRUEFALSE(UNKNOWNnull).

Waarschuwing

Bij gebruik als filter behouden predicaten alleen die items, waarvoor het predicaat wordt geƫvalueerd TRUE.

Vergelijkingspredicaten

Waarden vergelijken met behulp van deze operators:

  • = (gelijk aan)
  • <> (niet gelijk aan)
  • < (kleiner dan)
  • > (groter dan)
  • <= (kleiner dan of gelijk aan)
  • >= (groter dan of gelijk aan)

GQL maakt gebruik van drie-waardelogica waarbij vergelijkingen met null-retour UNKNOWN:

Expression Resultaat
5 = 5 TRUE
5 = 3 FALSE
5 = NULL UNKNOWN
NULL = NULL UNKNOWN

Zie de documentatie voor elk waardetype in GQL-waarden en waardetypen voor specifieke vergelijkingsgedrag.

Example:

MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915
RETURN p.firstName

Regels voor nummercodering:

In volgorde van prioriteit:

  1. Vergelijkingsexpressies met argumenten van geschatte numerieke typen dwingen alle argumenten om van een geheel numeriek type te zijn.
  2. Vergelijkingsexpressies met argumenten van zowel ondertekende als niet-ondertekende gehele getallen dwingen alle argumenten om van een ondertekend geheel getaltype te zijn.

Logische expressies

Voorwaarden combineren met logische operators:

  • AND (beide voorwaarden waar)
  • OR (beide voorwaarden waar)
  • NOT (voorwaarde wordt ontkend)

Example:

MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915 AND p.firstName = 'John'
RETURN p.firstName || ' ' || p.lastName AS fullName

Het bestaan van eigenschappen predicaten

Om te controleren of er eigenschappen bestaan, kun je gebruikmaken:

p.locationIP IS NOT NULL
p.browserUsed IS NULL

Opmerking

Het proberen te openen van een bekende niet-bestaande eigenschap resulteert in een syntaxisfout. Toegang tot een mogelijk niet-bestaand pand wordt gewaardeerd tot null. De bepaling of een eigenschap bekend is of mogelijk niet-bestaand wordt gemaakt op basis van het type van de geraadpleegde knoop of kant.

Lidmaatschapspredicaten vermelden

Testen of waarden in lijsten staan:

p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']

Tekenreekspatroonpredicaten

Tekenreeksen vergelijken met patroonkoppeling:

p.firstName CONTAINS 'John'
p.browserUsed STARTS WITH 'Chrome'
p.locationIP ENDS WITH '.1'

Rekenkundige expressies

Gebruik standaard rekenkundige operatoren met numerieke waarden:

  • + (toevoeging)
  • - (aftrekken)
  • * (vermenigvuldiging)
  • / (divisie)

Rekenkundige operatoren volgen algemene wiskundige conventies.

Voorrang:

Over het algemeen volgen operators vastgestelde operatorprioriteitsregels, zoals * voorheen +. Gebruik haakjes om de evaluatievolgorde naar behoefte te beheren.

Example:

(p.birthday < 20050915 OR p.birthday > 19651231) AND p.gender = 'male'

Regels voor dwang:

In volgorde van prioriteit:

  1. Rekenkundige expressies met argumenten van geschatte getaltypen retourneren een resultaat van een numeriek type bij benadering.
  2. Rekenkundige expressies met argumenten van zowel ondertekende als niet-ondertekende gehele getallen retourneren een resultaat van een ondertekend geheel getaltype.

Example:

LET birth_year = p.birthday / 10000
RETURN birth_year

Toegang tot eigenschappen

Toegangseigenschappen met punt notatie:

p.firstName
edge.creationDate

Toegang tot lijst

Toegangslijstelementen met behulp van indexering op basis van nul:

interests[0]    -- first element
interests[1]    -- second element

Ingebouwde functies

GQL ondersteunt verschillende ingebouwde functies voor gegevensverwerking en -analyse.

Gecompileerde functies

Statistische functies worden gebruikt om een expressie te evalueren over een set rijen en een uiteindelijke resultaatwaarde te verkrijgen door de waarden te combineren die voor elke rij zijn berekend. De volgende statistische functies worden ondersteund voor grafieken in Microsoft Fabric:

  • count(*) - telt rijen
  • sum(expression) - telt numerieke waarden op
  • avg(expression) - gemiddelden numerieke waarden
  • min(expression) - zoekt minimumwaarde
  • max(expression) - zoekt maximumwaarde
  • collect_list(expression) - verzamelt waarden in een lijst

In het algemeen negeren statistische functies null-waarden en retourneren ze altijd een null-waarde wanneer er geen materiaalinvoerwaarden worden opgegeven. U kunt een coalesce andere standaardwaarde verkrijgen: coalesce(sum(expr), 0). De enige uitzondering hierop is de count statistische functie, die altijd de opgegeven niet-null-waarden telt en 0 retourneert als er geen waarden zijn. Gebruik count(*) dit om ook null-waarden in het aantal op te nemen.

Statistische functies worden op drie verschillende manieren gebruikt:

  • Voor computing (verticale) aggregaties over hele tabellen
  • Voor computing (verticale) aggregaties ten opzichte van subtabellen die worden bepaald door een groeperingssleutel
  • Voor computing (horizontaal) aggregaties over de elementen van een groepslijst

Verticale aggregaties:

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

Horizontale aggregaties:

Horizontale aggregatieberekeningen aggregaties over de elementen van groepslijstvariabelen op basis van patronen met variabele lengte:

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

Horizontale aggregatie heeft altijd voorrang op verticale aggregatie. Als u een groepslijst wilt converteren naar een gewone lijst, gebruikt u collect_list(edges).

Opmerking

Zie Geavanceerde aggregatietechnieken voor uitgebreide dekking van aggregatietechnieken, waaronder randbinding met variabele lengte en combinatie van horizontale/verticale aggregatie.

Stringfuncties

  • char_length(string) - retourneert tekenreekslengte
  • upper(string)- retourneert een hoofdlettervariant van de opgegeven tekenreeks (alleen US ASCII)
  • lower(string)- retourneert kleine letters van opgegeven tekenreeks (alleen US ASCII)
  • trim(string) - verwijdert voorloop- en volgspaties
  • string_join(list, separator) - voegt lijstelementen toe met scheidingsteken

Example:

MATCH (p:Person)
WHERE char_length(p.firstName) > 5
RETURN upper(p.firstName) AS name_upper

Functies voor grafieken

  • nodes(path) - retourneert knooppunten van een padwaarde
  • edges(path) - retourneert randen van een padwaarde
  • labels(node_or_edge) - retourneert de labels van een knooppunt of edge als een lijst met tekenreeksen

Example:

MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues

Lijstfuncties

  • size(list) - retourneert de grootte van een lijstwaarde
  • trim(list,n) - een lijst bijsnijden tot de meeste grootten n

Example:

MATCH (p:Person)-[:hasInterest]->(t:Tag)
WHERE size(collect_list(t)) > 3
RETURN p.firstName, collect_list(t.name) AS interests

Tijdelijke functies

  • zoned_datetime() - retourneert de huidige datum/tijd in de zone
  • zoned_datetime("2025-09-12T10:10:52Z") - retourneert zonegebonden datum/tijd die is opgegeven door het argument in ISO 8601-indeling

Example:

RETURN zoned_datetime() AS now

Algemene functies

  • coalesce(value1, value2, ...) - retourneert de eerste niet-null-waarde

Example:

MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name