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 tarjoaa käytännöllisiä GQL-kyselykuvioita yleisiin graafitehtäviin Microsoft Fabric:ssa: naapureiden löytäminen, monihyppyyhteyksien läpikäyminen, jaettujen yhteyksien tunnistaminen, suhteiden laskeminen ja yhteyksien puuttuvien entiteettien löytäminen.
Esimerkkeinä käytetään sosiaalisen verkoston otosaineistoa. Täydellisen kieliviitteen löydät GQL:n kielioppaasta.
Edellytykset
- Graafinen alkio, jossa data on ladattu. Jos olet uusi graafien parissa, suorita ensin opastus .
- Perusasioiden ja
MATCHkysymysten tuntemusRETURN. Katso GQL:n kieliopas.
Etsi suorat naapurit
Palauta kaikki solmut, jotka on yhdistetty aloitussolmuun yhdellä hypyllä.
Etsi kaikki, jotka tietty henkilö tuntee:
MATCH (p:Person WHERE p.firstName = 'Alice')-[:knows]->(friend:Person)
RETURN friend.firstName, friend.lastName
Löydä kaikki yritykset, joissa henkilö on työskennellyt:
MATCH (p:Person WHERE p.firstName = 'Alice')-[:workAt]->(c:Company)
RETURN c.name, c.url
Löydä ystävien ystäviä (monihyppäys)
Käytä muuttuvan pituisia kuvioita {min,max} useamman kuin yhden hypyn ylittämiseen.
Etsi ihmisiä, jotka ovat kahden hypyn päässä – Alicen ystävien ystäviä, joita Alice ei suoraan tunne:
MATCH (alice:Person WHERE alice.firstName = 'Alice')-[:knows]->{2,2}(fof:Person)
RETURN DISTINCT fof.firstName, fof.lastName
LIMIT 100
Löydä kaikki tavoitettavissa kolmen asteen sisällä:
MATCH (src:Person WHERE src.firstName = 'Alice')-[:knows]->{1,3}(dst:Person)
RETURN DISTINCT dst.firstName, dst.lastName
LIMIT 100
Vinkki
Aseta aina yläraja muuttuvan pituuden kulkumatkalle. Rajoittamattomat kuviot suurissa tai tiheissä graajoissa voivat saavuttaa kyselyaikakatkaisun rajoja. Katso Nykyiset rajoitukset.
Laske suhteita yksiköittäin
Käytä GROUP BY With count(*) laskemaan, kuinka monta suhdetta kukin entiteetti on.
Laske, kuinka monta ystävää kullakin henkilöllä on, järjestettynä useimmasta vähimpään:
MATCH (p:Person)-[:knows]->(friend:Person)
LET name = p.firstName || ' ' || p.lastName
RETURN name, count(*) AS friendCount
GROUP BY name
ORDER BY friendCount DESC
LIMIT 20
Laske, kuinka monta työntekijää kussakin yrityksessä työskentelee:
MATCH (p:Person)-[:workAt]->(c:Company)
LET companyName = c.name
RETURN companyName, count(*) AS employeeCount
GROUP BY companyName
ORDER BY employeeCount DESC
Löydä yhteisiä yhteyksiä
Muuttujan uudelleenkäyttö kahdessa kuvion osassa luo implisiittisen "sama solmu" -rajoitteen. Käytä tätä rajoitetta löytääksesi entiteettejä, jotka ovat yhteydessä yhteisen kolmannen entiteettiin.
Etsi pareja, jotka molemmat tuntevat saman henkilön:
MATCH (a:Person)-[:knows]->(mutual:Person)<-[:knows]-(b:Person)
WHERE a.id < b.id
RETURN a.firstName, b.firstName, mutual.firstName AS sharedContact
LIMIT 100
Etsi parit, jotka työskentelevät samassa yrityksessä:
MATCH (c:Company)<-[:workAt]-(a:Person), (c)<-[:workAt]-(b:Person)
WHERE a.id < b.id
RETURN a.firstName, b.firstName, c.name AS company
LIMIT 100
Vinkki
Ehto WHERE a.id < b.id estää dpluusioparien (Alice–Bob ja Bob–Alice) esiintymisen tuloksissa.
Etsi olentoja ilman suhteita
Käytä OPTIONAL MATCH ja seuraa null-tarkistusta löytääksesi solmut, joilla ei ole yhteensopivuussuhdetta.
Etsi ihmisiä, jotka eivät työskentele missään yrityksessä:
MATCH (p:Person)
OPTIONAL MATCH (p)-[:workAt]->(c:Company)
FILTER c IS NULL
RETURN p.firstName, p.lastName
LIMIT 100
Löydä postauksia ilman kommentteja:
MATCH (post:Post)
OPTIONAL MATCH (comment:Comment)-[:replyOf]->(post)
FILTER comment IS NULL
RETURN post.id, post.content
LIMIT 100
Etsi entiteettejä, joilla on paljon yhteyksiä
Yhdistä GROUP BY ja FILTER tunnistaa vahvasti yhteydessä olevat solmut. Tämä menetelmä on hyödyllinen hubien tai poikkeamien löytämisessä.
Etsi ihmisiä, joilla on yli 10 ystävää:
MATCH (p:Person)-[:knows]->(friend:Person)
LET name = p.firstName || ' ' || p.lastName
RETURN name, count(*) AS friendCount
GROUP BY name
FILTER friendCount > 10
ORDER BY friendCount DESC
Note
FILTER After GROUP BY toimii kuten HAVING SQL:ssä. Se suodattaa koottujen tulosten perusteella, ei yksittäisten rivien perusteella.