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. Katso lisätietoja artikkelista Supplemental Terms of Use for Microsoft Azure Previews.

Tämä artikkeli sisältää kattavan viitteen Microsoft Fabric -kyselyiden kaaviossa käytettäviin GQL-lausekkeisiin, predikaatteja ja sisäisiin funktioihin. Tämän viittauksen avulla voit ymmärtää, miten voit suorittaa laskutoimituksia, suodattaa tuloksia ja muuntaa tietoja kaaviokyselyissäsi.

Yleiskatsaus GQL-kyselykielestä ja päästä päähän -kyselyesimerkeistä on artikkelissa GQL-kieliopas. Lisätietoja tuetuista tietotyypeistä ja literaalisyntaksista on artikkelissa GQL-arvot ja arvotyypit.

Literaalit

Literaalit ovat yksinkertaisia lausekkeita, jotka arvioivat suoraan ilmoitetun arvon. GQL-arvot ja arvotyypit -artikkelissa selitetään kunkin arvotyypin literaalit yksityiskohtaisesti.

Esimerkki:

1
1.0d
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 GQL-kyselyiden tulosten suodattamiseen. Ne saavat arvon TRUE, FALSEtai UNKNOWN (tyhjäarvo).

Varoitus

Kun käytät predikaatteja suodattimena, ne säilyttävät vain ne kohteet, joiden predikaatti antaa tulokseksi TRUE.

Vertailupredikaatit

Vertaa arvoja seuraavien operaattoreiden avulla:

  • = (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äytä käsittelyjärjestyksessä seuraavia sääntöjä:

  1. Vertailulausekkeet, joihin liittyy likimääräisten numeeristen tyyppien argumentteja, pakottavat kaikki argumentit olemaan likimääräistä numeerista tyyppiä.
  2. Vertailulausekkeet, joihin liittyy 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)
  • XOR (eksklusiivinen erottaminen – tosi, kun täsmälleen yksi operandi on tosi)

Esimerkki:

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

Ominaisuuden olemassaolon predikaatit

Voit tarkistaa, onko ominaisuuksia olemassa, käyttämällä näitä predikaatteja:

p.locationIP IS NOT NULL
p.browserUsed IS NULL

Note

Yritys päästä käsiksi tunnettuun olemattomaan ominaisuuteen johtaa syntaksivirheeseen. Pääsy mahdollisesti olemattomaan kiinteistöön arvioidaan null. Ominaisuuden tunnettu ja mahdollisesti ei-olemassa olevan ominaisuuden määrittäminen perustuu käytettyjen solmujen tai reunan tyyppiin.

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ämällä kaavoja vastaavia tekniikoita:

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äytä käsittelyjärjestyksessä seuraavia sääntöjä:

  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ä nollapohjaisella indeksoinnilla:

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

Sisäiset funktiot

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

Koostefunktiot

Koostefunktioiden avulla voit arvioida lausekkeen rivijoukolle ja saada lopullisen tulosarvon yhdistämällä kullekin riville lasketut arvot. 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 coalesce käyttää -funktiota eri oletusarvon saamiseksi: 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ää tyhjäarvot määrään.

Käytä koostefunktioita kolmella eri tavalla:

  • Kokonaisten taulukoiden koosteiden laskeminen (pystysuuntainen)
  • Koosteiden laskeminen (pystysuora) ryhmittelyavaimen määrittämistä alitaulukoista
  • Koosteiden laskeminen (vaakasuunnassa) 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.

Ehdolliset lausekkeet

Ehdollisten lausekkeiden avulla voit palauttaa eri arvoja ehtojen perusteella.

HakuTAPAUS:

CASE
  WHEN condition1 THEN result1
  WHEN condition2 THEN result2
  ELSE default_result
END

Yksinkertainen TAPAUS:

CASE expression
  WHEN value1 THEN result1
  WHEN value2 THEN result2
  ELSE default_result
END

NULLIF:

NULLIF(a, b) palauttaa NULL arvon , jos a on byhtä suuri kuin , ja palauttaa muussa tapauksessa arvon a.

Esimerkki:

MATCH (p:Person)
RETURN p.firstName,
       CASE
         WHEN p.gender = 'male' THEN 'M'
         WHEN p.gender = 'female' THEN 'F'
         ELSE 'Other'
       END AS gender_code,
       NULLIF(p.browserUsed, 'Unknown') AS browser

Merkkijono-funktiot

  • char_length(string) - palauttaa merkkijonon pituuden.
  • upper(string)- palauttaa annetun merkkijonon isot kirjaimet (vain US ASCII).
  • lower(string)- palauttaa annetun merkkijonon pienillä kirjaimilla variantin (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.
  • elements(path) – palauttaa kaikki solmut ja reunat polusta yhtenä luettelona polkujärjestyksessä.
  • labels(node_or_edge) - palauttaa solmun tai reunan selitteet merkkijonoluettelona.
  • path_length(path) – palauttaa polun reunojen määrän.

Esimerkki:

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

Luettelotoiminnot

  • size(list) – palauttaa luetteloarvon koon.
  • trim(list,n) - poistaa luettelon, 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öhykkeellä olevan päivämäärän ja ajan.
  • zoned_datetime("2025-09-12T10:10:52Z") - palauttaa argumentin ISO 8601 -muodossa antaman vyöhykkeen päivämäärän ja ajan.

Esimerkki:

RETURN zoned_datetime() AS now

Yleiset funktiot

  • coalesce(value1, value2, ...) – palauttaa ensimmäisen muun kuin tyhjäarvon.
  • to_json_string(value) - muuntaa arvon JSON-merkkijonoesitykseksi.

Esimerkki:

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