Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
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
1.00m
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
Jos molemmat operandit ovat lukuja, GQL vertaa niitä niiden numeeristen arvojen mukaan.
Important
Graafi ei vielä tue kaikkia GQL:n määrittelemiä numeerisia vertailuja. Nykyinen käyttäytyminen perustuu seuraaviin sääntöihin:
- Kokonaisluvun ja likimääräisen luvun vertailu muuntaa kokonaisluvun likimääräiseksi numeeriseksi tyypiksi.
- Allekirjoitettujen ja allekirjoittamattomien kokonaislukujen vertailu muuntaa molemmat arvot yleensä allekirjoitetuksi kokonaislukutyypiksi. Allekirjoittamaton arvo allekirjoitetun kokonaislukualueen ulkopuolella aiheuttaa virheen.
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.
Olemassaolon alikyselyt
Käytä proseduurimuotoista EXISTS alikyselyä testataksesi, palauttaako sisäkkäinen kysely vähintään yhden rivin:
EXISTS {
<query statements>
RETURN <columns>
}
Tuloksena on ei-nolla Boolen arvo:
-
TRUEjos alikysely palauttaa yhden tai useamman rivin. -
FALSEjos alikysely ei palauta rivejä.
Muuttujat, jotka ovat jo laajuudessa, ovat implisiittisesti saatavilla alikyselyssä. Muuttujat, jotka esitellään vain alikyselyn sisällä, eivät ole käytettävissä sen ulkopuolella.
Käyttö EXISTS suodattimessa:
MATCH (p:Person)
WHERE EXISTS {
MATCH (p)-[:knows]->(friend:Person)
RETURN friend
}
RETURN p.firstName, p.lastName
Käytetään NOT EXISTS rivien säilyttämiseen, joille alikysely ei palauta rivejä. Voit myös käyttää EXISTS , LETRETURN, ORDER BY, ja aggregoituja suodatin- tai lähdelausekkeita.
EXISTS ei ole tuettu listan predikaattisuodattimessa.
Important
Pelkästään graafikuviomuotoja kuten EXISTS { (p)-[:knows]->(friend) } ja EXISTS ((p)-[:knows]->(friend)) ei tueta. Käytä edellä mainituissa esimerkeissä esitettyä menettelymuotoa. Skalaarikyselyt VALUE { ... } eivät ole tuettuja.
Varoitus
EXISTS Testaa, palauttaako alikysely rivin, ei onko kokonaisarvo nollasta poikkeava. Ryhmittelemätön aggregaatti, kuten , RETURN count(*) palauttaa yhden rivin, vaikka MATCH ei löytäisi rivejä, joten kyseinen muoto EXISTS arvioi .TRUE Palauta sovitettu muuttuja, kun haluat testata, onko osumia olemassa.
Lisätietoja korreloiduista alikyselyistä löytyy GQL-kielioppaan CALL lauseesta .
Jäsenyyksien luettelopredikaatit
Testaa, ovatko arvot luetteloissa:
p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']
Lista predikaattifunktiot
Käytä listapredikaattifunktiota arvioidaksesi Boolen lausekkeen listan alkioille:
ALL(element IN list WHERE predicate)
ANY(element IN list WHERE predicate)
NONE(element IN list WHERE predicate)
SINGLE(element IN list WHERE predicate)
Lähde voi olla listaliteraali, listaarvoinen ominaisuus, muuttuja tai ryhmälista muuttuvan pituisen kuvion perusteella.
Funktioilla on seuraavat merkitykset:
| Function | Merkitys |
|---|---|
ALL |
Jokainen alkio täyttää predikaatin. |
ANY |
Vähintään yksi alkio täyttää predikaatin. |
NONE |
Mikään alkio ei tyydytä predikaattia. |
SINGLE |
Täsmälleen yksi alkio täyttää predikaatin. |
Seuraava esimerkki arvioi kaikki neljä funktiota dynaamisesti rakennetulla listalla:
LET items = [1, 2, 3]
RETURN ALL(x IN items WHERE x > 0) AS all_match,
ANY(x IN items WHERE x = 2) AS any_match,
NONE(x IN items WHERE x < 0) AS none_match,
SINGLE(x IN items WHERE x = 2) AS single_match
Kaikki neljä palautettua arvoa ovat TRUE.
Voit myös arvioida listan alkioiden ominaisuuksia. Tässä esimerkissä connections ryhmälista, joka on luotu muuttuvan pituisen reunakuvion avulla:
MATCH (person:Person)-[connections:knows]->{1,4}(friend:Person)
WHERE ALL(connection IN connections WHERE connection.creationDate IS NOT NULL)
RETURN person.firstName, friend.firstName
Listapredikaatit käyttävät kolmiarvoista logiikkaa. Taulukko kuvaa tuloksen listan elementtien suodatinlausekkeen tuottamien arvojen avulla:
| Function | TRUE |
FALSE |
UNKNOWN |
Tyhjä lista |
|---|---|---|---|---|
ALL |
Jokainen suodattimen tulos on TRUE. |
Vähintään yksi tulos on FALSE. |
Mikään tulos ei ole FALSE, ja ainakin yksi on UNKNOWN. |
TRUE |
ANY |
Vähintään yksi suodatintulos on TRUE. |
Mikään tulos ei ole TRUE tai UNKNOWN. |
Mikään tulos ei ole TRUE, ja ainakin yksi on UNKNOWN. |
FALSE |
NONE |
Mikään tulos ei ole TRUE tai UNKNOWN. |
Vähintään yksi tulos on TRUE. |
Mikään tulos ei ole TRUE, ja ainakin yksi on UNKNOWN. |
TRUE |
SINGLE |
Täsmälleen yksi tulos on TRUE, eikä mikään ole UNKNOWN. |
Useampi kuin yksi tulos on TRUE, tai ei mikään tulos ole TRUE tai UNKNOWN. |
Korkeintaan yksi tulos on TRUE, ja ainakin yksi on UNKNOWN. |
FALSE |
Jos lähdelista on nolla, jokainen funktio palauttaa UNKNOWN. Null-listan alkio tuottaa tuloksen, kun suodatin arvioidaan siten, että kyseinen alkio on sidottu nollaan; se ei automaattisesti tee funktion tulosta tuntemattomaksi.
Alkiomuuttuja on saatavilla vain listapredikaatin suodatinlausekkeessa. Suodatin voi myös viitata muuttujiin ympäröivästä kyselystä. Jos alkiomuuttujalla on sama nimi kuin ulkoisella muuttujalla, paikallinen alkiomuuttuja saa etusijan. Sisäkkäiset listan predikaatit voivat samalla tavalla varjostaa ulomman alkion muuttujaa.
Aggregaattifunktiot voivat viitata ympäröivään ryhmälistaan, mutta ne eivät voi aggregoida paikallisesti sidottu alkiomuuttuja.
EXISTS Alikyselyt eivät myöskään ole tuettuja listapredikaattisuodattimessa.
ANY(...) on listapredikaattifunktio. Älä sekoita ANY SHORTEST sitä polkuhaun etuliitteeseen tai ANY dynaamiseen arvotyyppiin.
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'
RE2-säännöllisten lausekeiden sovituksessa käytä MSFT.REGEXP_LIKE.
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ä:
- Aritmeettiset lausekkeet, jotka sisältävät likimääräisen numeerisen tyypin, palauttavat likimääräisen numeerisen tyypin.
- Aritmeettiset lausekkeet, jotka sisältävät sekä allekirjoitettuja että allekirjoittamattomia kokonaislukutyyppejä, palauttavat allekirjoitetun kokonaislukutyypin.
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.
Numeeriset funktiot
Käytä numeerisia funktioita muuntamaan numeerisia arvoja, laskemaan trigonometrisiä arvoja ja luomaan kokonaislukualueita.
Absoluuttinen arvo ja teho
| Function | Description |
|---|---|
ABS(value) |
Palauttaa itseisarvon. Tuloksella on sama numeerinen tyyppi kuin value. |
POWER(base, exponent) |
Nostaa base ja exponent palauttaa .DOUBLE |
Molemmat funktiot hyväksyvät numeeriset arvot. Null-argumentti tuottaa nullin. Virheellinen numeerinen operaatio, kuten ylivuotava POWER tulos, aiheuttaa virheen.
RETURN ABS(-1) AS absoluteValue, POWER(2, -2) AS reciprocalSquare
Tulos on:
| absoluteValue | reciprocalSquare |
|---|---|
1 |
0.25 |
Trigonometriset funktiot
Trigonometriset funktiot hyväksyvät yhden numeerisen arvon ja palauttavat .DOUBLE
Null-argumentti tuottaa nullin.
| Function | Description |
|---|---|
SIN(value), COS(value), TAN(value), COT(value) |
Laske trigonometrinen funktio.
value on kulma radiaaneissa. |
ASIN(value), ACOS(value), ATAN(value) |
Laske käänteistrigonometrinen funktio. Tuloksena on radiaaneja.
ASIN ja ACOS vaativat arvon joukosta -1 läpi 1. |
SINH(value), COSH(value), TANH(value) |
Laske hyperbolinen funktio. |
DEGREES(value) |
Muuntaa kulman radiaaneista asteiksi. |
RADIANS(value) |
Muuntaa kulman asteista radiaaneiksi. |
Argumentti, joka on funktion matemaattisen määrittelyjoukon ulkopuolella, aiheuttaa virheen.
RETURN COS(0) AS cosine, RADIANS(180) AS angle
Tulos on:
| kosini | Kulma |
|---|---|
1.0 |
3.141592653589793238462643383279502884 |
Kokonaislukualueet
RANGE(start, end)palauttaa kokonaislukulistan kohti startend, käyttäen askelta .1
RANGE(start, end, step) käyttää määriteltyä nollasta poikkeavaa vaihetta.
start, end, ja step on oltava ei-nollakokonaislukuja. Nolla on pätevä tai startend; vain step , että sen täytyy olla ei-nolla.
Valikoima sisältää start. Se koskee end vain, kun tauluja end lisätään step toistuvasti tarkasti. Positiivinen askel, jolla start on suurempi kuin end, tai negatiivinen askel, jolla start on pienempi kuin end, palauttaa tyhjän listan. Nollavaihe aiheuttaa virheen.
RETURN RANGE(0, 10, 3) AS ascending, RANGE(5, 0, -2) AS descending
Tulos on:
| nouseva | laskeva |
|---|---|
[0, 3, 6, 9] |
[5, 3, 1] |
Jos kaikki argumentit ovat allekirjoittamattomia kokonaislukuja, RANGE palautetaan .LIST<UINT64>
Muussa tapauksessa se palauttaa a LIST<INT64> :n ja hylkää arvot, joita ei voi turvallisesti esittää allekirjoitettuina kokonaislukuina.
Koostefunktiot
Aggregaattifunktiot yhdistävät arvoja joko syöterivien yli tai ryhmälistan sisällä, jota rajoittaa muuttuvanpituinen kuvio.
| Function | Description |
|---|---|
COUNT(*) |
Laskee syöterivit, mukaan lukien rivit, joissa on nollaarvoja. |
COUNT(expression) |
Laskee ei-nollatulokset .expression |
SUM(expression) |
Palauttaa summan ei-nollalukujen numeerisista arvoista. |
AVG(expression) |
Palauttaa ei-nollaarvojen numeeristen arvojen keskiarvon. |
MIN(expression) |
Palauttaa minimiarvon, joka ei ole nolla. |
MAX(expression) |
Palauttaa maksimiarvon, joka ei ole nolla. |
COLLECT_LIST(expression) |
Palauttaa listan, jossa on yksi alkio jokaiselle syötteelle, mukaan lukien nollaalkiot. |
COLLECT_ONE(expression) |
Palauttaa yhden ei-nollasyötteen arvon. Valittu arvo ei ole deterministinen. |
COLLECT_ELEMENTS(expression) |
Yhdistää listaarvoisten syötteiden alkiot yhdeksi listaksi. Null-syötelistat eivät lisää alkioita, mutta listan nollaalkiot jäävät tulokseen. |
Kun aggregaattikyselyllä ei ole ryhmittelysarakkeita eikä syöterivejä, COUNT palautetaan 0, COLLECT_LIST ja COLLECT_ELEMENTS tyhjä lista, ja muut aggregaattifunktiot palauttavat nullin. Älä luota kokoelman aggregaatin palauttamien arvojen järjestykseen. Ryhmittelisissä sarakkeissa mikään syöterivi ei tuota ryhmää eikä siten tulosriviä.
Joukonkvanttorit
Käytä ALL päällekkäisarvojen lisäämiseen tai DISTINCT niiden poistamiseen.
ALL on oletusarvo lausekkeiden aggregaattien käytössä.
COUNT(*) ei hyväksy tiettyä kvantifioijaa.
MATCH (person:Person)
RETURN COUNT(person) AS personCount,
COUNT(DISTINCT person.browserUsed) AS browserCount
Jos COLLECT_LIST, DISTINCT poistaa päällekkäiset arvot ja säilyttää korkeintaan yhden nollan. Jos COLLECT_ELEMENTS, DISTINCT koskee alkioita syötelistojen yhdistämisen jälkeen.
DISTINCT ei tee COLLECT_ONE determinististä.
Aggregaattikohtaiset suodattimet ja rajat
Lisää FILTER (WHERE predicate) yhteenvedon jälkeen vain arvot, jotka predicate ovat tosi. Väärät ja tuntemattomat predikaattitulokset jätetään pois.
Tämä suodatin vaikuttaa vain kyseiseen aggregaattiin, ei syöteriveihin, jotka ovat käytettävissä muille lausekkeille samassa RETURN.
Lisää LIMIT n se aggregaattisuodattimen sisälle, jotta voidaan ottaa huomioon enintään n kelvolliset syöterivit. Suodatus tapahtuu ennen aggregaattikohtaista rajaa ja DISTINCT sitä sovelletaan rajan jälkeen.
MATCH (person:Person)
RETURN COUNT(*) AS allPeople,
COUNT(*) FILTER (WHERE person.birthday < 19900101 LIMIT 5) AS sampleBornBefore1990
Rivien aggregointi
Aggregaatti yhdistää yleensä arvot pystysuunnassa syöterivien yli. Lasketaan GROUP BY yksi tulos jokaiselle ryhmälle.
MATCH (p:Person)
RETURN count(*) AS total_people, avg(p.birthday) AS average_birth_year
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.id AS cityId, c.name, count(*) AS population, avg(p.birthday) AS average_birth_year
GROUP BY cityId, c.name
Älä sijoita yhtä pystysuoraa aggregaattia suoraan toisen sisälle samaan kyselylohkoon. Esimerkiksi on SUM(COUNT(*)) virheellinen. Käytä NEXT aggregointivaiheiden erottamiseen, kun sinun täytyy aggregata kokonaistulos.
Aggregaatio sovitetun polun sisällä
Reunamuuttuja, jota rajoittaa muuttujapituuskuvio, muuttuu ryhmälistaksi. Aggregaatti tämän muuttujan yli on vaakasuora: se laskee yhden tuloksen listasta jokaiselle vastatulle polulle, sen sijaan että yhdistäisi eri syöterivejä.
MATCH (person:Person)-[knows:knows]->{1,5}(friend:Person)
RETURN COUNT(knows) AS pathLength
Tässä palautetaan COUNT(knows) kunkin sovitetun polun kaarien lukumäärä. Vaakasuorat muodot , COUNTSUM, AVG, MAXCOLLECT_ONEMINCOLLECT_LISTja COLLECT_ELEMENTS ovat tuettuja.
COUNT(*) ja aggregaattikohtaisia FILTER tai LIMIT ei ole vaakasuoria muotoja.
Vaaka-aggregaatti voi olla syöte yhdelle ulommalle pystysuoralle aggregaatille:
MATCH (person:Person)-[knows:knows]->{1,5}(friend:Person)
RETURN MIN(COUNT(knows)) AS shortestMatchedPath
Tässä kyselyssä COUNT(knows) lasketaan yksi pituus per sovitettu polku ja MIN yhdistetään nämä pituudet syöttörivien yli.
Tehtäväkeskeisiä esimerkkejä varten katso Suodata ja aggregoitu graafidata.
Ehdolliset lausekkeet
Käytä yksinkertaista CASE lauseketta verrataksesi yhtä lauseketta yhdellä tai useammalla arvolla ja palauta tulos, joka liittyy ensimmäiseen yhtä arvoon:
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 p.gender
WHEN 'male' THEN 'M'
WHEN 'female' THEN 'F'
ELSE 'Other'
END AS gender_code,
NULLIF(p.browserUsed, 'Unknown') AS browser
Haetut CASE WHEN <predicate> ilmaisut eivät ole tuettuja. Reitittääksesi rivit predikaattien mukaan ja suorittaaksesi valitulle haaralle kyselylauseen tai sisäkkäisen proseduurin, käytä WHEN ehdollista lausetta.
Merkkijono-funktiot
Käytä merkkijonofunktioita merkkijonojen mittaamiseen, muuntamiseen, etsimiseen, vertailuun ja yhdistämiseen.
Merkin pituus ja sijamuoto
Käytä näitä funktioita merkkijonojen mittaamiseen tai muuttamiseen:
| Function | Description |
|---|---|
CHAR_LENGTH(string) |
Palauttaa merkkien määrän. |
UPPER(string) |
Soveltaa Unicode-isojen kirjainten kartoitusta. |
LOWER(string) |
Soveltaa Unicode-pienaakkosäätystä. |
CASEFOLD(string) |
Soveltaa paikallisesta riippumatonta Unicode-kotelon taittamista sijaittomaan vastaavuuteen. |
Unicode-kuvaukset voivat muuttaa merkkijonon pituutta tai esitystapaa:
RETURN UPPER('straße') AS uppercase,
LOWER('İ') AS lowercase,
CASEFOLD('Straße') AS folded
Tulokset ovat STRASSE, i̇, ja strasse, vastaavasti.
CASEFOLD ei ole yhtä kuin LOWER. Esimerkiksi tapaustaitto ß vastaa ja ss kuvaa kreikkalaiset sigma-muodot Σ, σ, ja ς .σ
Normalisoi merkkijonot
GQL määrittelee neljä Unicode-normalisointimuotoa:
- Normalisointimuoto C (
NFC), kanoninen kompositio. - Normalisointimuoto D (
NFD), kanoninen hajotelma. - Normalisointilomake KC (
NFKC), yhteensopivuuskoostumus. - Normalisointilomake KD (
NFKD), yhteensopivuushajotelma.
NORMALIZE(string) oletuksena NFC. Määritetään normalisointimuoto toiseksi argumentiksi:
RETURN NORMALIZE('cafe\u0301') AS composed,
NORMALIZE('café', NFD) AS decomposed
Argumentin täytyy olla jono.
Important
Graph tukee tällä hetkellä NFC:tä ja NFD:tä. NFKC:n tai NFKD:n määrittäminen aiheuttaa virheen.
Leikkauskielet
Käytä TRIM välilyöntimerkin tai yhden tietyn merkin poistamiseen molemmista päistä, merkkijonon alusta tai lopusta:
RETURN TRIM(' text ') AS both_ends,
TRIM(BOTH FROM ' text ') AS explicit_both,
TRIM(LEADING FROM ' text ') AS beginning,
TRIM(TRAILING FROM ' text ') AS ending,
TRIM(LEADING 'f' FROM 'foobar') AS custom_character
Räätälöidyn leikkausarvon tulee olla täsmälleen yksi tavu. Monitavuiset Unicode-merkit ja merkkijonot, joissa on useita merkkejä, eivät ole tuettuja mukautettuina trimmausarvoina. Null-lähdekoodi tai mukautettu trimmausarvo palauttaa nullin.
Join stringit
STRING_JOIN(list [, delimiter]) liittyy jousien listaan. Oletuserotin on pilkku, jota seuraa välilyönti:
RETURN STRING_JOIN(['foo', 'bar', 'baz']) AS default_delimiter,
STRING_JOIN(['foo', 'bar', 'baz'], '-') AS custom_delimiter
Tulokset ovat foo, bar, baz ja foo-bar-baz. Tyhjä lista palauttaa tyhjän merkkijonon. Null-lista, nolla-erottaja tai null-lista-elementti palauttaa nullin. Jokainen ei-nollalista-alkio on oltava merkkijono.
Säännöllisen lausekkeen funktiot
Graph tarjoaa nämä säännöllisen lausekkeen funktiot GQL:n laajennuksina:
| Function | Käyttäminen |
|---|---|
MSFT.REGEXP_LIKE |
Testaa, sisältääkö teksti osuman. |
MSFT.REGEXP_COUNT |
Laske tulitikkuja. |
MSFT.REGEXP_INSTR |
Etsi ottelu- tai vangiryhmän sijainti. |
MSFT.REGEXP_SUBSTR |
Palauta ottelun tai kaatamisryhmän teksti. |
MSFT.REGEXP_REPLACE |
Korvaa vastaava teksti. |
MSFT.REGEXP_LIKE
Palautuu TRUE , kun kuvio vastaa lähdemerkkijonon jotakin osaa. Jos osumia ei löydy, se palautuu FALSE.
| Argumentit | Syntaksi |
|---|---|
| 2 | MSFT.REGEXP_LIKE(source, pattern) |
| 3 | MSFT.REGEXP_LIKE(source, pattern, flags) |
source on haettava merkkijono.
pattern yhdistetään mihin tahansa alijonoon, source ellei lauseke itsessään käytä ankkureita kuten ^ tai $.
flags muuttaa yhteensopivuuskäyttäytymistä, kuten on kuvattu kohdassa Matching rules and options.
RETURN MSFT.REGEXP_LIKE('HELLO', 'hello', 'i') AS matches
Tulos on TRUE.
MSFT.REGEXP_COUNT
Palauttaa otteluiden määrän. Jos osumia ei löydy, se palautuu 0.
| Argumentit | Syntaksi |
|---|---|
| 2 | MSFT.REGEXP_COUNT(source, pattern) |
| 3 | MSFT.REGEXP_COUNT(source, pattern, start) |
| 4 | MSFT.REGEXP_COUNT(source, pattern, start, flags) |
source on haettava merkkijono, ja pattern tunnistaa laskettavat osumat.
start on nollapohjainen Unicode-koodipisteen sijainti, josta sovitus voi alkaa. Ottelun on aloitettava tästä asemasta tai sen jälkeen. Asema ei muutu kielen uudeksi aluksi ankkuroiduille kuvioille.
flags muuttaa yhteensopivuuskäyttäytymistä, kuten on kuvattu kohdassa Matching rules and options.
RETURN MSFT.REGEXP_COUNT('1a2a3a4', '[0-9]', 3) AS match_count
Haku alkaa sijainnista 3, toisena a, joten lasketaan vain numerot 3 ja 4 . Tulos on 2.
MSFT.REGEXP_INSTR
Palauttaa valitun match- tai capture-ryhmän nollaan perustuvan sijainnin.
| Argumentit | Syntaksi |
|---|---|
| 2 | MSFT.REGEXP_INSTR(source, pattern) |
| 3 | MSFT.REGEXP_INSTR(source, pattern, start) |
| 4 | MSFT.REGEXP_INSTR(source, pattern, start, occurrence) |
| 5 | MSFT.REGEXP_INSTR(source, pattern, start, occurrence, return_option) |
| 6 | MSFT.REGEXP_INSTR(source, pattern, start, occurrence, return_option, flags) |
| 7 | MSFT.REGEXP_INSTR(source, pattern, start, occurrence, return_option, flags, group) |
source on merkkijono, jota haetaan, ja pattern tunnistaa osumat.
start on nollapohjainen Unicode-koodipisteen sijainti, josta sovitus voi alkaa. Ottelun täytyy alkaa tästä asennosta tai sen jälkeen, mikä ei muutu ankkuroitujen kuvioiden kielen uudeksi alkuksi.
occurrence valitsee ensimmäisen, toisen tai seuraavan ei-päällekkäisen osuman, joka löytyy joukosta start.
group Valitsee, mitä sijoittaa kyseisessä osumasta: 0 valitsee täydellisen osuman ja positiivinen arvo valitsee kyseisen numeroidun vangitsijaryhmän.
return_option Määrittää, mikä raja valitusta ottelusta tai ryhmästä palautetaan: 0 palauttaa sen aloituspaikka ja 1 heti sen päättymisen jälkeisen paikan.
flags muuttaa yhteensopivuuskäyttäytymistä, kuten on kuvattu kohdassa Matching rules and options.
Jos vastaavaa esiintymää ei löydetä tai valittu kaappausryhmä ei osallistu kyseiseen tapahtumaan, funktio palauttaa -1.
RETURN MSFT.REGEXP_INSTR('banana', 'a', 0, 2) AS match_position
Toinen ottelu alkaa sijainnista 3, joten tulos on 3.
MSFT.REGEXP_SUBSTR
Palauttaa tekstin valitusta ottelusta tai kaappausryhmästä.
| Argumentit | Syntaksi |
|---|---|
| 2 | MSFT.REGEXP_SUBSTR(source, pattern) |
| 3 | MSFT.REGEXP_SUBSTR(source, pattern, start) |
| 4 | MSFT.REGEXP_SUBSTR(source, pattern, start, occurrence) |
| 5 | MSFT.REGEXP_SUBSTR(source, pattern, start, occurrence, flags) |
| 6 | MSFT.REGEXP_SUBSTR(source, pattern, start, occurrence, flags, group) |
source on merkkijono, jota haetaan, ja pattern tunnistaa osumat.
start on nollapohjainen Unicode-koodipisteen sijainti, josta sovitus voi alkaa. Ottelun täytyy alkaa tästä asennosta tai sen jälkeen, mikä ei muutu ankkuroitujen kuvioiden kielen uudeksi alkuksi.
occurrence valitsee ensimmäisen, toisen tai seuraavan ei-päällekkäisen osuman, joka löytyy joukosta start.
group valitsee tekstin palautettavaksi kyseisestä osumasta: 0 valitsee täydellisen osuman ja positiivinen arvo valitsee kyseisen numeroidun kaappausryhmän.
flags muuttaa yhteensopivuuskäyttäytymistä, kuten on kuvattu kohdassa Matching rules and options.
Jos vastaavaa esiintymää ei löydy tai valittu kaappausryhmä ei osallistu kyseiseen tapahtumaan, funktio palauttaa nollan.
RETURN MSFT.REGEXP_SUBSTR(
'12-345',
'([0-9]+)-([0-9]+)',
0,
1,
'',
2
) AS matched_text
Ensimmäinen esiintymä on täydellinen merkkijono, ja kaappausryhmä 2 on 345, joten tulos on 345.
MSFT.REGEXP_REPLACE
Korvaa vastaavan tekstin. Oletuksena se korvaa jokaisen osuman ja lisää korvaavan tekstin kirjaimellisesti.
| Argumentit | Syntaksi |
|---|---|
| 3 | MSFT.REGEXP_REPLACE(source, pattern, [EXACT \| TEMPLATE] replacement) |
| 4 | MSFT.REGEXP_REPLACE(source, pattern, [EXACT \| TEMPLATE] replacement, start) |
| 5 | MSFT.REGEXP_REPLACE(source, pattern, [EXACT \| TEMPLATE] replacement, start, occurrence) |
| 6 | MSFT.REGEXP_REPLACE(source, pattern, [EXACT \| TEMPLATE] replacement, start, occurrence, flags) |
source on merkkijono, jota muokataan, ja pattern tunnistaa osumat.
replacement on valittua osumaa varten lisätty teksti.
EXACT lisää sen kirjaimellisesti; TEMPLATE tulkitsee kaappausviittauksia.
start on nollapohjainen Unicode-koodipisteen sijainti, josta korvaaminen voi alkaa. Ottelun on aloitettava tästä asemasta tai sen jälkeen. Teksti ennen start säilyy muuttumattomana, eikä paikka muutu ankkuroitujen kuvioiden uuden alun kielelle. Aseta occurrence tilalle 0 korvaamaan kaikki osumat , starttai positiiviseksi arvoksi korvaamaan vain se numeroitu ei-päällekkäinen osuma. Aiemmat ottelut sen start jälkeen pysyvät muuttumattomina, kun tietty tapahtuma valitaan.
flags muuttaa yhteensopivuuskäyttäytymistä, kuten on kuvattu kohdassa Matching rules and options.
RETURN MSFT.REGEXP_REPLACE('a1b2c3', '[0-9]', '#', 0, 2) AS replaced
Vain toisen numeron osuma korvataan, joten tulos on a1b#c3.
Jos osumusta ei löydy, lähdemerkkijono palautetaan muuttumattomana.
Käyttääksesi sovitettua tekstiä korvaavassa muodossa, määritä TEMPLATE. Tässä tilassa \0\9 viitataan täydellisiin match- ja capture-ryhmiin, \\ ja siihen lisätään kirjaimellinen takaviivo. Käytä raakamerkkijonoa, jonka etuliite on , @välittääksesi nämä viittaukset ilman lisäpakenemista:
RETURN MSFT.REGEXP_REPLACE(
'John Smith',
@'([A-Za-z]+) ([A-Za-z]+)',
TEMPLATE @'\2 \1'
) AS reordered_name
Tulos on Smith John.
Yhteensopivuussäännöt ja vaihtoehdot
Kuviot käyttävät RE2-säännöllistä lauseketta ja vastaavat Unicode-merkkijonoja. Lähde voi olla mikä tahansa merkkijonolauseke. Kuvion, liput ja korvaaminen on oltava merkkijonoliteraaleja, ja numeeriset vaihtoehdot on oltava allekirjoittamattomia kokonaislukuliteraaleja.
Osumat löytyvät vasemmalta oikealle ilman päällekkäisyyttä. Nollapituisen vastaavuuden jälkeen sovitus etenee yhdellä Unicode-koodipisteellä.
Lähtöpaikat ja palautetut paikat ovat nollapohjaisia Unicode-koodipisteen offsetteja. Esiintymisluvut ovat yksipohjaisia, paitsi että esiintymä 0 tarkoittaa kaikkien esiintymien korvaamista .MSFT.REGEXP_REPLACE
Seuraavassa taulukossa on lueteltu oletusarvot pois jätetyille valinnaisille argumenteille:
| Function | Defaults |
|---|---|
MSFT.REGEXP_LIKE |
Liput ovat tyhjiä. |
MSFT.REGEXP_COUNT |
Aloitus on 0; liput ovat tyhjiä. |
MSFT.REGEXP_INSTR |
Start on 0; esiintyminen on 1; return-vaihtoehto on 0; liput ovat tyhjiä; ryhmä on 0. |
MSFT.REGEXP_SUBSTR |
Aloitus on 0; esiintyminen on 1; liput ovat tyhjiä; ryhmä on 0. |
MSFT.REGEXP_REPLACE |
Tila on EXACT; start on 0; esiintyminen on 0; liput ovat tyhjiä. |
Valinnaiset liput ovat:
| Merkitse | Toimintatapa |
|---|---|
i |
Sovita ilman tapausta. |
m |
Tee ^ ja $ sovita jokaisen rivin alku ja loppu. |
s |
Sovita . uudet hahmot. |
Yhdistä liput yhdeksi jonoksi, kuten 'ims'. Nollalähde palauttaa nollan. Tueton lippu, virheellinen säännöllinen lauseke, virheellinen palautusvaihtoehto tai virheellinen esiintymä tai ryhmänumero palauttaa virheen.
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. -
element_id(node_or_edge)- palauttaa solmu- tai reunatunnisteen läpinäkymättömänä merkkijonona.
ELEMENT_ID hyväksyy solmu- tai reunaviitteen ja palauttaa nullin nollasyötteelle.
Käsittele palautettua lankaa läpinäkymättömä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)- Trimmaa listan korkeintaannalkuaineisiin.
Esimerkki:
MATCH (p:Person)-[:hasInterest]->(t:Tag)
LET personId = p.id, personName = p.firstName
RETURN personId, personName, collect_list(t.name) AS interests
GROUP BY personId, personName
FILTER size(interests) > 3
Ajalliset funktiot
-
CURRENT_TIMESTAMP- palauttaa nykyisen vyöhykkeellä olevan päivämäärän ja ajan. -
ZONED_DATETIME(string)- palauttaa vyöhykkeellä varustetun päivämääräajan, joka on esitetty ISO 8601 -merkkijonolla. -
DURATION(string)- palauttaa ISO 8601 -kestojonon esittämän päiväaika-ajan.
Esimerkki:
RETURN CURRENT_TIMESTAMP AS now,
DURATION('PT2H') AS twoHours
Käytä vähennysoperaattoria laskeaksesi keston kahden vyöhykkeisen päivämäärän välillä:
RETURN ZONED_DATETIME('2026-09-17T12:00:00Z')
- ZONED_DATETIME('2026-09-17T10:00:00Z') AS elapsed
Important
Kaavio tukee päiväkestoja, mutta ei vuosi-kuukausikestoja.
DURATION_BETWEEN(start, end) ei ole tällä hetkellä tuettu; vähennä kaksi vyöhykkeistä datetime-arvoa sen sijaan.
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