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.
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.
Tämä artikkeli on nopea viite GQL (Graph Query Language) -syntaksiin Microsoft Fabricin graafille. Tarkat selitykset ovat GQL-kielioppaassa.
Tärkeää
Tässä artikkelissa käytetään yksinomaan sosiaalisen verkoston esimerkkikaaviodatasettiä.
Kyselyn rakenne
GQL-kyselyt käyttävät lausekkeita, jotka määrittävät, mitä tietoja kaaviosta saadaan, miten niitä käsitellään ja miten tulokset näytetään. Jokaisella lausekkeella on tietty tarkoitus, ja ne yhdessä luovat lineaarisen putken, joka vastaa kaavion tietoja ja muuntaa sen vaiheittain.
Tyypillinen kyselytyönkulku:
GQL-kysely alkaa yleensä määrittämällä kaaviomalli, joka vastaa toisiaan, ja käyttää sitten valinnaisia lausekkeita muuttujien luomiseen, suodattamiseen, lajitteluun, sivutukseen ja tulostuloksiin.
Esimerkki:
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
Lausekkeen järjestys:
Tärkeää
Microsoft Fabricin kaavio ei vielä tue mielivaltaista lausekekoostelmaa. Katso artikkelista tämänhetkiset rajoitukset.
Lausekkeet voivat yleensä näkyä missä tahansa järjestyksessä kyselyssä:
-
MATCH– Määritä etsittävät kaaviomallit. -
LET– Määritä muuttujia lausekkeista. -
FILTER– Säilytä ehtoja vastaavat rivit. -
ORDER BY– Lajittele tulokset. -
OFFSET– Ohita monta riviä. -
LIMIT– Rajoita rivien määrää. -
RETURN– Tulosta lopulliset tulokset.
Jokainen lauseke perustuu edelliseen, joten voit asteittain tarkentaa ja muokata kyselyn tulosta. Katso lisätietoja kustakin lausekkeesta seuraavista osioista.
Kyselyn lausekkeet
TULITIKKU
Etsi kaaviokuvioita tiedoistasi.
Syntaksi:
MATCH <graph pattern> [ WHERE <predicate> ]
...
Esimerkki:
MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *
Lisätietoja lausekkeesta on MATCHkohdassa Kaaviomallit.
ANTAA
Luo muuttujia lausekkeiden avulla.
Syntaksi:
LET <variable> = <expression>, <variable> = <expression>, ...
...
Esimerkki:
MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName
Lisätietoja lausekkeesta on LETGQL-kielioppaassa.
FILTER
Säilytä ehtoja vastaavat rivit.
Syntaksi:
FILTER [ WHERE ] <predicate>
...
Esimerkki:
MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *
Lisätietoja lausekkeesta on FILTERGQL-kielioppaassa.
JÄRJESTÄ
Lajittele tulokset.
Syntaksi:
ORDER BY <expression> [ ASC | DESC ], ...
...
Esimerkki:
MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC, n.firstName ASC
Tärkeää
Pyydetty rivien järjestys on taattu, että se pysyy voimassa heti edellisen ORDER BY lauseen jälkeen.
Seuraavat lauseet (jos niitä on) eivät takaa tällaisen järjestyksen säilyttämistä.
Lisätietoja lausekkeesta on ORDER BYGQL-kielioppaassa.
SIIRTYMÄ/RAJA
Ohita rivit ja rajoita tulosten määrää.
Syntaksi:
OFFSET <offset> [ LIMIT <limit> ]
LIMIT <limit>
...
Esimerkki:
MATCH (n:Person)
ORDER BY n.birthday
OFFSET 10 LIMIT 20
RETURN n.firstName || ' ' || n.lastName AS name, n.birthday
Lisätietoja - ja OFFSET -LIMITlausekkeista on GQL-kielioppaassa.
PALUU
Tulosta lopulliset tulokset.
Syntaksi:
RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...
Esimerkki:
MATCH (n:Person)
RETURN n.firstName, n.lastName
Lisätietoja lausekkeesta on RETURNGQL-kielioppaassa.
Kaaviomallit
Kaaviomallit kuvaavat kaavion rakennetta, joka vastaa toisiaan.
Solmumallit
Kaaviotietokannoissa solmuja käytetään yleensä edustamaan entiteettejä, kuten henkilöitä, tuotteita tai paikkoja.
Solmumallit kuvaavat solmujen vastaavuutta kaaviossa. Voit suodattaa otsikon mukaan tai sitoa muuttujia.
(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
Saat lisätietoja solmumalleista Graph-malleista.
Reunakuvioita
Reunakuviot määrittävät solmujen väliset yhteydet, mukaan lukien suunnan ja reunan tyypin. Kaaviotietokannoissa reuna edustaa kahden solmun välistä yhteyttä tai suhdetta.
<-[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
Lisätietoja reunakuvioista on artikkelissa Kaaviomallit.
Otsikkolausekkeet
Otsikkolausekkeiden avulla voit yhdistää solmut tiettyihin otsikkoyhdistelmiin loogisten operaattoreiden avulla.
:Person&Company -- Both Person AND Company labels
:Person|Company -- Person OR Company labels
:!Company -- NOT Company label
:(Person|!Company)&Active -- Complex expressions with parentheses
Katso lisätietoja otsikkolausekkeista Graph-malleista.
Polkumallit
Polkumallit kuvaavat läpikulkuja kaaviossa, mukaan lukien humalan määrät ja muuttujan sidonnat.
(a)-[:knows|likes]->{1,3}(b) -- 1-3 hops via knows/likes
p=()-[:knows]->() -- Binding a path variable
Katso lisätietoja polkukuvioista Graph-malleista.
Useita kuvioita
Useiden mallien avulla voit yhdistää monimutkaiset nonlinear-kaaviorakenteet yhteen kyselyyn.
(a)->(b), (a)->(c) -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d) -- Nonlinear structures
Jos haluat lisätietoja useista malleista, tutustu Graph-malleihin.
Arvot ja arvotyypit
Perustyypit
Perustyypit ovat primitiivisiä tietoarvoja, kuten merkkijonoja, lukuja, totuusarvoja ja päivämäärä- ja aika-arvoja.
STRING -- 'hello', "world"
INT64 -- 42, -17
FLOAT64 -- 3.14, -2.5e10
BOOL -- TRUE, FALSE, UNKNOWN
ZONED DATETIME -- ZONED_DATETIME('2023-01-15T10:30:00Z')
Lue lisää GQL-arvojen ja -arvotyyppien perustyypeistä.
Viitearvotyypit
Viitearvotyypit ovat solmuja ja reunoja, joita käytetään arvoina kyselyissä.
NODE -- Node reference values
EDGE -- Edge reference values
Lue lisätietoja viitearvotyypeistä GQL-arvotyypeissä ja -arvotyypeissä.
Kokoelmatyypit
Kokoelmatyypit ryhmittelevät useita arvoja, kuten luetteloita ja polkuja.
LIST<INT64> -- [1, 2, 3]
LIST<STRING> -- ['a', 'b', 'c']
PATH -- Path values
Lue lisää GQL-arvojen ja arvotyyppien kokoelmatyypeistä.
Materiaali- ja nollatyypit
Jokainen arvotyyppi on joko nollattava (sisältää nollaarvon) tai materiaali (ei se ole mukana).
Oletuksena tyypit ovat nollattavissa, ellei niitä erikseen määritellä .NOT NULL
STRING NOT NULL -- Material (Non-nullable) string type
INT64 -- Nullable (default) integer type
Lausekkeet ja operaattorit
Vertailu
Vertailuoperaattorit vertaavat arvoja ja tarkistavat yhtäläisyys-, järjestys- tai tyhjäarvot.
=, <>, <, <=, >, >= -- Standard comparison
IS NULL, IS NOT NULL -- Null checks
Lisätietoja vertailupredikaateista on artikkelissa GQL-lausekkeet ja -funktiot.
Looginen
Loogiset operaattorit yhdistävät tai negatiiviset totuusarvo-ehdot kyselyissä.
AND, OR, NOT -- Boolean logic
Lisätietoja loogisista lausekkeista on artikkelissa GQL-lausekkeet ja -funktiot.
Aritmetiikka
Aritmeettiset operaattorit suorittavat laskutoimituksia luvuille.
+, -, *, / -- Basic arithmetic operations
Lisätietoja aritmeettisista lausekkeista on artikkelissa GQL-lausekkeet ja -funktiot.
Merkkijonomallit
Merkkijonokuvion predikaatit vastaavat merkkijonojen alimerkkijonoja, etuliitteitä tai jälkiliitteitä.
n.firstName CONTAINS 'John' -- Has substring
n.browserUsed STARTS WITH 'Chrome' -- Starts with prefix
n.locationIP ENDS WITH '.1' -- Ends with suffix
Lisätietoja merkkijonomallipredikaateista on artikkelissa GQL-lausekkeet ja -funktiot.
Luettelotoiminnot
Luettelotoiminnot testaavat jäsenyyttä, käyttöoikeuselementtejä ja mittariluettelon pituutta.
n.gender IN ['male', 'female'] -- Membership test
n.tags[0] -- First element
size(n.tags) -- List length
Lisätietoja jäsenyyksien predikaateista on artikkelissa GQL-lausekkeet ja -funktiot.
Ominaisuuden käyttö
Ominaisuuden käyttö hakee ominaisuuden arvon solmusta tai reunasta.
n.firstName -- Property access
Lisätietoja ominaisuuden käyttöoikeudesta on artikkelissa GQL-lausekkeet ja -funktiot.
Funktiot
Koostefunktiot
Koostefunktiot laskevat yhteenvetoarvot riviryhmille (pystysuuntainen koostaminen) tai ryhmäluettelon elementeille (vaakasuuntainen koostaminen).
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
Lue lisätietoja koostefunktioista GQL-lausekkeissa ja -funktioissa.
Merkkijono-funktiot
Merkkijonofunktioiden avulla voit käsitellä ja analysoida merkkijonoarvoja.
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
Lue lisää merkkijonofunktioista GQL-lausekkeissa ja -funktioissa.
Luettelotoiminnot
Luettelofunktioiden avulla voit käsitellä luetteloita, kuten pituuden tai rajauksen koon tarkistusta.
size(list) -- List length
trim(list, n) -- Trim a list to be at most size `n`
Lue lisää GQL-lausekkeiden ja -funktioiden luettelofunktioista.
Kaavion funktiot
Kaaviofunktioiden avulla saat tietoja solmuista, poluista ja reunuksista.
labels(node) -- Get node labels
nodes(path) -- Get path nodes
edges(path) -- Get path edges
Lue lisätietoja kaaviofunktioista GQL-lausekkeissa ja -funktioissa.
Ajalliset funktiot
Ajallisten funktioiden avulla voit käsitellä päivämäärä- ja aika-arvoja.
zoned_datetime() -- Get the current timestamp
Lue lisää aikafunktioista GQL-lausekkeissa ja -funktioissa.
Yleiset funktiot
Yleisillä funktioilla voit käsitellä tietoja yleisillä tavoilla.
coalesce(expr1, expr2, ...) -- Get the first non-null value
Lue lisätietoja yleisistä funktioista GQL-lausekkeissa ja -funktioissa.
Yleiset mallit
Yhteyksien etsiminen
-- Friends of friends
MATCH (me:Person {firstName: 'Annemarie'})-[:knows]->{2}(fof:Person)
WHERE fof <> me
RETURN DISTINCT fof.firstName
Yhdistäminen
-- Count by group
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name AS name, count(*) AS population
GROUP BY name
ORDER BY population DESC
Ylin 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
Suodatus ja ehdot
-- 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
Polun läpikulku
-- Variable length paths
MATCH p = TRAIL (src:Person {firstName: 'Annemarie'})-[:knows]->{1,3}(dst:Person)
WHERE dst.firstName = 'Alexander'
RETURN p