Jaa


GQL-lausekkeet, predikaatit ja funktiot

Note

Tämä ominaisuus on tällä hetkellä julkisessa esikatselussa. Tämä esikatselu tarjotaan ilman palvelutasosopimusta, eikä sitä suositella tuotantokuormituksiin. Tiettyjä ominaisuuksia ei ehkä tueta tai niiden ominaisuudet voivat olla rajoitettuja. Lisätietoja on artikkelissa Microsoft Azure -esiversioiden lisäkäyttöehdot.

GQL-lausekkeiden avulla voit suorittaa kyselyiden sisältämien tietojen laskutoimituksia, vertailuja ja muunnoksia. Valmiiden funktioiden lisäksi lausekkeet tarjoavat tehokkaita työkaluja tietojen käsittelyyn, suodattamiseen ja analysointiin kaaviokyselyissä.

Literaalit

Literaalit ovat yksinkertaisia lausekkeita, jotka arvioivat suoraan ilmoitetun arvon. Kunkin arvotyypin literaalit selitetään yksityiskohtaisesti GQL-arvoissa ja arvotyypeissä.

Esimerkki:

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

Jokaisen tietotyypin yksityiskohtainen literaalisyntaksi on kohdassa GQL-arvot ja arvotyypit.

Predikaatit

Predikaatit ovat totuusarvolausekkeita, joita käytetään yleisesti suodattamaan tuloksia GQL-kyselyissä. Ne saavat arvon TRUE, FALSEtai UNKNOWN (tyhjäarvo).

Varoitus

Suodattimena käytettynä predikaatit säilyttävät vain ne kohteet, joiden predikaatti arvioi arvoksi TRUE.

Vertailupredikaatit

Vertaa arvoja käyttämällä näitä operaattoreita:

  • = (yhtä suuri)
  • <> (eri suuri kuin)
  • < (pienempi kuin)
  • > (suurempi kuin)
  • <= (pienempi tai yhtä suuri kuin)
  • >= (suurempi tai yhtä suuri kuin)

GQL käyttää kolmiarvoista logiikkaa, jossa vertailu tyhjäarvon kanssa palauttaa UNKNOWN:

Lauseke Tulos
5 = 5 TRUE
5 = 3 FALSE
5 = NULL UNKNOWN
NULL = NULL UNKNOWN

Jos haluat tarkan vertailukäyttäytymisen, tutustu kunkin arvotyypin dokumentaatioon GQL-arvoissa ja arvotyypeissä.

Esimerkki:

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

Lukujen pakottamisen säännöt:

Käsittelyjärjestys:

  1. Vertailulausekkeet, joihin liittyy likimääräisten numeeristen tyyppien argumentteja, pakottavat kaikki argumentit olemaan likimääräisiä numeerisia.
  2. Vertailulausekkeet, jotka sisältävät sekä allekirjoitettujen että allekirjoittamattomien kokonaislukutyyppien argumentteja, pakottavat kaikki argumentit olemaan allekirjoitettuja kokonaislukutyyppejä.

Loogiset lausekkeet

Yhdistä ehdot loogisiin operaattoreihin:

  • AND (molemmat ehdot toteutuvat)
  • OR (jompikumpi ehdoista on tosi)
  • NOT (negatiivisen ehdon)

Esimerkki:

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

Ominaisuuden olemassaolon predikaatit

Ominaisuudet, jotka eivät ole mitään, ovat NULLaina . Näin ollen voit tarkistaa, onko ominaisuuksia olemassa, käyttämällä:

p.locationIP IS NOT NULL
p.browserUsed IS NULL

Jäsenyyksien luettelopredikaatit

Testaa, ovatko arvot luetteloissa:

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

Merkkijonon mallipredikaatit

Täsmää merkkijonot käyttäen mallien vastaavuutta:

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

Aritmeettiset lausekkeet

Käytä aritmeettisia vakio-operaattoreita numeeristen arvojen kanssa:

  • + (yhteenlasku)
  • - (vähennyslasku)
  • * (kertolasku)
  • / (jakolasku)

Aritmeettiset operaattorit noudattavat yleisiä matemaattisia käytäntöjä.

Etusija:

Yleensä operaattorit noudattavat vakiintuneita operaattoreiden käsittelyjärjestyssääntöjä, kuten * ennen +. Käytä sulkeita, jotta voit hallita arviointijärjestystä tarpeen mukaan.

Esimerkki:

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

Pakottamissäännöt:

Käsittelyjärjestys:

  1. Aritmeettiset lausekkeet, joihin liittyy likimääräisten lukutyyppien argumentteja, palauttavat likimääräisen numeerisen tyypin tuloksen.
  2. Sekä allekirjoitettujen että allekirjoittamattomien kokonaislukutyyppien argumentteja sisältävät aritmeettiset lausekkeet palauttavat allekirjoitetun kokonaislukutyypin tuloksen.

Esimerkki:

LET birth_year = p.birthday / 10000
RETURN birth_year

Ominaisuuden käyttö

Käytä ominaisuuksia pistemerkinnän avulla:

p.firstName
edge.creationDate

Luettelon käyttöoikeudet

Käytä luettelon elementtejä käyttämällä nollapohjaista indeksointia:

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

Sisäiset funktiot

GQL tukee erilaisia sisäisiä funktioita tietojenkäsittelyyn ja analysointiin.

Koostefunktiot

Koostefunktioita käytetään arvioimaan lauseke rivijoukolle ja hankkimaan lopullinen tulosarvo yhdistämällä kullekin riville lasketut arvot. Microsoft Fabric -kaavio tukee seuraavia koostefunktioita:

  • count(*) - laskee rivejä
  • sum(expression) - numeeristen arvojen summa
  • avg(expression) - numeeristen arvojen keskiarvo
  • min(expression) - etsii vähimmäisarvon
  • max(expression) - etsii suurimman arvon
  • collect_list(expression) - kerää arvot luetteloon

Yleensä koostefunktiot ohittavat tyhjäarvot ja palauttavat aina tyhjäarvon, kun mitään materiaalisyötearvoja ei anneta. Voit hankkia muun oletusarvon -arvon -parametrin avulla coalesce : coalesce(sum(expr), 0). Ainoa poikkeus on koostefunktio count , joka laskee aina annetut muut kuin tyhjäarvot ja palauttaa arvon 0, jos sellaisia ei ole. Käytä tätä count(*) , jos haluat sisällyttää myös tyhjäarvot määrään.

Koostefunktioita käytetään kolmella eri tavalla:

  • Tietojenkäsittelyn (pystysuora) koosteet kokonaisille taulukoille
  • Tietojenkäsittely (vertikaali) koostaa ryhmittelyavaimen määrittämien alitaulukoiden osalta
  • Laskennan (vaakasuuntainen) koostaminen ryhmäluettelon elementeille

Pystysuuntaiset koosteet:

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

Vaakasuuntaiset koosteet:

Vaakasuuntainen koostaminen koostaa ryhmittelyluettelon muuttujien elementit vaihtelevan pituisista malleista:

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

Vaakasuuntainen koostaminen on aina etusijalla pystysuuntaisen koosteen sijaan. Jos haluat muuntaa ryhmäluettelon tavalliseksi luetteloksi, käytä .collect_list(edges)

Note

Kattava kattavuus koostamistekniikoista, mukaan lukien vaihtelevan pituinen reunan sidonta ja vaaka-/pystysuuntaisen koosteen yhdistäminen, on artikkelissa Lisäkoosteiden tekniikat.

Merkkijono-funktiot

  • char_length(string) - palauttaa merkkijonon pituuden
  • upper(string)- palauttaa annetun merkkijonon isot kirjaimet (vain US ASCII)
  • lower(string)- palauttaa annetun merkkijonon pienet kirjaimet (vain US ASCII)
  • trim(string) - poistaa alussa ja lopussa olevat välilyönnit
  • string_join(list, separator) - liittää luetteloelementit erottimella

Esimerkki:

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

Kaavion funktiot

  • nodes(path) – palauttaa solmut polkuarvosta
  • edges(path) – palauttaa reunat polkuarvosta
  • labels(node_or_edge) – palauttaa solmun tai reunan selitteet merkkijonoluettelona

Esimerkki:

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

Luettelotoiminnot

  • size(list) - palauttaa luetteloarvon koon
  • trim(list,n) - rajataan luettelo, joka on suurin osa koosta n

Esimerkki:

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

Ajalliset funktiot

  • zoned_datetime() - palauttaa nykyisen vyöhykkeen päivämäärän ja ajan
  • zoned_datetime("2025-09-12T10:10:52Z") - palauttaa vyöhykkeen päivämäärän ja ajan, jonka argumentti antaa ISO 8601 -muodossa

Esimerkki:

RETURN zoned_datetime() AS now

Yleiset funktiot

  • coalesce(value1, value2, ...) – palauttaa ensimmäisen muun kuin tyhjäarvon

Esimerkki:

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