Kirjoita graafikuviokyselyitä Microsoft Fabric -ohjelmassa

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 löytyy Supplemental Terms of Use for Microsoft Azure Previews.

Graafikuvioiden sovitus antaa sinun kuvata haluamasi datan rakennetta intuitiivisen, visuaalisen syntaksin avulla. Sen sijaan, että yhdistäisit taulukoita, kirjoitat kuvioita, jotka näyttävät itse suhteilta – solmut, jotka on yhdistetty reunoilla. Tässä artikkelissa näytetään, miten GQL-kuviokyselyt kirjoitetaan yleisille skenaarioille Microsoft Fabric -graafissa.

Esimerkit käyttävät sosiaalisen verkoston otosaineistoa. Täydellisen mallisyntaksin viitteestä löytyy GQL-graafikuvioista.

Edellytykset

  • Graafinen alkio, jossa data on ladattu. Jos olet uusi graafien parissa, suorita ensin opastus .
  • Perusasioiden ja RETURN kysymysten tuntemusMATCH. Katso GQL:n kieliopas.

Suorat suhteet

Peruskuvio vastaa solmutyyppiä, tiettyä reunatyyppiä ja toista solmutyyppiä. Syntaksi näyttää suhteen kaaviolta.

Esimerkiksi löytääksesi jopa 100 henkilöä, jotka on yhdistetty siihen yritykseen, jossa he työskentelevät:

MATCH (p:Person)-[:workAt]->(c:Company)
RETURN p.firstName, p.lastName, c.name
LIMIT 100

Käytä suuntaamatonta reunakuviota, kun et tiedä tai välitä suunnasta. Esimerkiksi löytääksesi jopa 100 yhteistä tuttavaa riippumatta siitä, kuka aloitti yhteyden:

MATCH (a:Person)-[:knows]-(b:Person)
RETURN a.firstName, b.firstName
LIMIT 100

Note

Graph ei tällä hetkellä tue suuntautumattomien reunojen luomista, mutta voit kysyä reunoja mihin tahansa suuntaan käyttämällä -[:label]- syntaksia.

Suodatinkuvioita, joissa on inline WHERE

Aseta WHERE kuvion sisälle, jotta solmut ja reunat suodatetaan, kun ne sovitetaan. Tämä lähestymistapa on tehokkaampi kuin jälkikäteen suodattaminen.

Esimerkiksi löytääksesi ennen vuotta 1990 syntyneet henkilöt, jotka työskentelevät yrityksessä, jonka nimi alkaa A:lla:

MATCH (p:Person WHERE p.birthday < 19900101)-[:workAt]->(c:Company WHERE c.name STARTS WITH 'A')
RETURN p.firstName, p.lastName, c.name

Suodata reunan ominaisuuksia rajoittamaan, mitkä suhteet täsmäävät. Esimerkiksi, palautetaan vain henkilöt, jotka aloittivat työskentelyn yrityksessä vuonna 2010 tai myöhemmin:

MATCH (p:Person)-[w:workAt WHERE w.workFrom >= 2010]->(c:Company)
RETURN p.firstName, c.name, w.workFrom

Yhdistä monihyppysuhteet

Käytä vaihtelevan pituisia kuvioita useiden hyppyjen läpikäymiseen yhdessä lausekkeessa. Määritä minimi- ja maksimihumalamäärä syntaksin {min,max} avulla.

Esimerkiksi löytääksesi jopa 100 ihmistä, jotka ovat tavoitettavissa kahden tai neljän ystävyysasteen sisällä Alicesta:

MATCH (src:Person WHERE src.firstName = 'Alice')-[:knows]->{2,4}(dst:Person)
RETURN dst.firstName, dst.lastName
LIMIT 100

Löytääksesi jopa 100 välitöntä ja toisen asteen yhteyttä (yksi tai kaksi hyppyä) Alicelta:

MATCH (src:Person WHERE src.firstName = 'Alice')-[:knows]->{1,2}(dst:Person)
RETURN DISTINCT dst.firstName, dst.lastName
LIMIT 100

Ohjauskulku polkumoodien avulla

Oletuksena GQL käyttää TRAIL tilaa, joka estää saman reunan ylittämisen useammin kuin kerran. Käytä polkutiloja erikseen, kun tarvitset erilaisia takuita.

Polkutila Toimintatapa Käytä kun...
WALK Sallii toistuvat solmut ja kaaret Haluat raakaa liikkumista ilman rajoituksia. Harvoin tarvittu; Hyödyllistä lähinnä tutkimuskyselyissä.
TRAIL Ei toistuvia reunoja (oletus) Haluat välttää saman suhteen uudelleenseuraamista, mutta sama solmu voi esiintyä eri suhteiden kautta. Toimii hyvin useimmissa läpikulkukyselyissä.
SIMPLE Ei toistuvia solmuja paitsi aloitus ja loppu Haluat, ettei mikään solmu ilmesty useammin kuin kerran polun keskelle, mutta salli polut, jotka sulkeutuvat takaisin alkuun. Hyödyllistä silmukoiden havaitsemiseen.
ACYCLIC Ei toistuvia solmuja lainkaan Sinun täytyy varmistaa, ettei mikään solmu ilmesty missään polulla useammin kuin kerran. Käyttöä tiukkoihin hierarkioihin, linjaan tai mihin tahansa kulkuun, jossa solmun uudelleenkäynti tuottaa virheellisiä tuloksia.

WALK on sallivin ja ACYCLIC rajoittavin muoto. TRAIL on oletus ja toimii hyvin useimmissa kyselyissä. Käytä rajoittavampaa tilaa vain silloin, kun käyttötarkoituksesi sitä vaatii.

Eron havainnollistamiseksi tarkastellaan Alicen → Bobin → Carolin → Bobin polkua:

  • KÄVELE — mahdollistaa tämän polun. Solmut ja reunat voivat toistua vapaasti.
  • TRAIL — mahdollistaa tämän polun. Bob esiintyy kahdesti, mutta jokainen käytetty reuna on eri suhde (Alice→Bob ja Carol→Bob ovat erillisiä reunoja), joten reunaa ei toisteta.
  • YKSINKERTAISTA — estää tämän tien. Bob esiintyy useammin kuin kerran, ja SIMPLE sallii solmun toistaa vain, jos se on sekä polun alku että loppu (suljettu sykli). Tässä Alice on aloitus ja Bob on loppu, joten poikkeus ei ole.
  • ACYCLIC — estää tämän tien. Bob ilmestyy useammin kuin kerran missä tahansa polulla.

Seuraava esimerkki näyttää, miten TRAIL laskea, kuinka monta erilaista polkua johtaa ensimmäisiin 100 Alicen verkostoon saavutettavissa olevaan henkilöön neljän hypyn aikana:

MATCH TRAIL (src:Person WHERE src.firstName = 'Alice')-[:knows]->{1,4}(dst:Person)
RETURN dst.firstName, dst.lastName, count(*) AS pathCount
LIMIT 100

Käytä ACYCLIC jopa 100 henkilöä, jotka ovat saavutettavissa Alicesta neljän hypyn sisällä, jolloin jokainen polun henkilö on ainutlaatuinen:

MATCH ACYCLIC (src:Person WHERE src.firstName = 'Alice')-[:knows]->{1,4}(dst:Person)
RETURN dst.firstName, dst.lastName
LIMIT 100

Vinkki

Suurille graafeille asetetaan aina yläraja muuttuvanpituisille kuvioille ({1,4} eikä {1,}). Rajoittamaton liikkuminen tiheissä graafeissa voi saavuttaa kyselyaikakatkaisuja. Katso Nykyiset rajoitukset.

Käytä muuttujan uudelleenkäyttöä jaettujen entiteettien ilmaisemiseen

Saman muuttujan uudelleenkäyttö kahdessa kuvion osassa luo implisiittisen yhtäläisyysrajoitteen – molempien viitteiden on vastattava samaa solmua. Tämä tekniikka antaa sinun ilmaista "löytää entiteettejä, jotka ovat yhteydessä yhteisen kolmannen olennon kautta."

Esimerkiksi löytääksesi jopa 100 paria ihmisiä, jotka tuntevat toisensa ja työskentelevät samassa yrityksessä:

MATCH (c:Company)<-[:workAt]-(a:Person)-[:knows]-(b:Person)-[:workAt]->(c)
RETURN a.firstName, b.firstName, c.name
LIMIT 100

Muuttujaa c käytetään uudelleen molemmille workAt kohteille, joten kysely palauttaa vain pareja, joissa molemmat tuntevat toisensa ja työskentelevät samassa yrityksessä.

Löytääksesi jopa 100 paria ihmisiä, jotka molemmat tykkäsivät samasta postauksesta:

MATCH (a:Person)-[:likes]->(post:Post)<-[:likes]-(b:Person)
WHERE a.id < b.id
RETURN a.firstName, b.firstName, post.id
LIMIT 100

Vinkki

Ehto WHERE a.id < b.id estää kaksoisparien (Alice + Bob ja Bob + Alice) esiintymisen tuloksissa.

Yhdistä useita kuvioita

Listaa useita kuvioita yhdeksi MATCH, erotettu pilkuilla. Kaikilla kuvioilla täytyy olla vähintään yksi muuttuja, jotta ne yhdistyvät oikein.

Esimerkiksi löytääksesi jopa 100 ihmistä sekä heidän työpaikkansa että asuinkaupunkinsa kanssa:

MATCH (p:Person)-[:workAt]->(c:Company),
      (p)-[:isLocatedIn]->(city:City)
RETURN p.firstName, c.name AS company, city.name AS city
LIMIT 100

Yhteinen muuttuja p yhdistää nämä kaksi kuviota. Jokainen tulosrivi edustaa yhtä henkilöä yrityksensä ja kaupunkinsa kanssa.

Sovita valinnaisia suhteita

Käytä OPTIONAL MATCH tilannetta, jossa suhdetta ei välttämättä ole jokaiselle solmulle. Rivit ilman vastaavuutta säilytetään arvoilla NULL , kuten SQL LEFT JOIN:ssä.

Esimerkiksi palauta enintään 100 henkilöä yrityksen nimellä, mukaan lukien ne, joilla ei ole työnantajaa (eli jotka palaavat NULL yrityksen sarakkeeseen):

MATCH (p:Person)
OPTIONAL MATCH (p)-[:workAt]->(c:Company)
RETURN p.firstName, p.lastName, c.name AS company
LIMIT 100

Käytä IS NULL 'after' OPTIONAL MATCH löytääksesi jopa 100 ihmistä, 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