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 löytyy Supplemental Terms of Use for Microsoft Azure Previews.
Suodatus rajaa tulokset tärkeisiin riveihin. Aggregaatio tiivistää nämä rivit lukumääriin, kokonaislukuihin ja keskiarvoihin. Tässä artikkelissa näytetään, miten molempia tekniikoita sovelletaan GQL-kyselyissä Microsoft Fabric -graafia vastaan.
Esimerkkeinä käytetään sosiaalisen verkoston otosaineistoa. Täydellisen viitteen GQL-lauseista ja lauseista löytyy GQL-kielioppaasta.
Edellytykset
- Graafinen alkio, jossa data on ladattu. Jos olet uusi graafien parissa, suorita ensin opastus .
- Perusasioiden ja
RETURNkysymysten tuntemusMATCH. Katso GQL:n kieliopas.
Suodatinrivit SUODATTIMELLA
Käytä FILTER vain niitä rivejä, jotka täyttävät tietyn ehdon. Aseta FILTER peräkkäin MATCH , jotta voit rajata sovitettuja tuloksia.
Seuraava kysely palauttaa kaikki naiset nimellä ja syntymäpäivällä:
MATCH (p:Person)
FILTER p.gender = 'female'
RETURN p.firstName, p.lastName, p.birthday
Yhdistä useita ehtoja ja ANDOR. Esimerkiksi seuraava kysely palauttaa kaikkien ennen vuotta 1990 syntyneiden naisten nimet:
MATCH (p:Person)
FILTER p.gender = 'female' AND p.birthday < 19900101
RETURN p.firstName, p.lastName
Vinkki
Paremman suorituskyvyn saavuttamiseksi suodata kuvion sovituksen aikana inline-lauseella WHERE sen sijaan, että käyttäisit erillistä FILTER lausetta. Katso Suodatin kuvioiden sovittamisen aikana.
Suodatin kuvion sovittamisen aikana
Kuvion sisällä olevat MATCH rivilausekkeet WHERE rajoittavat, mitkä solmut ja kaaret sovitetaan ennen kuin tuloksia saadaan. Tämä lähestymistapa on tehokkaampi kuin ottelun jälkeinen FILTER lauseke, koska kyselymoottori karsii rivit aikaisemmin.
Esimerkiksi, kun etsitään ennen vuotta 1994 syntyneet henkilöt yhdessä heidän työpaikkansa yrityksen kanssa, ja tulokset rajoitetaan yrityksiin, joiden nimi alkaa 'A':lla:
MATCH (p:Person WHERE p.birthday < 19940101)-[:workAt]->(c:Company WHERE c.name STARTS WITH 'A')
RETURN p.firstName, p.lastName, c.name
Suodattimen reunan ominaisuudet ovat samalla tavalla. Esimerkiksi, palautetaan vain henkilöt, jotka aloittivat työskentelyn yrityksessä vuonna 2000 tai myöhemmin:
MATCH (p:Person)-[w:workAt WHERE w.workFrom >= 2000]->(c:Company)
RETURN p.firstName, p.lastName, c.name, w.workFrom
Lisätietoja suorituskyvyn erosta inline- ja post-match-suodatuksen välillä löytyy kohdasta Optimize GQL query performance.
Käsittele nollaarvoja suodattimissa
GQL käyttää kolmiarvoista logiikkaa: predikaatit arvioivat , TRUEFALSE, tai UNKNOWN. Kun ominaisuuden arvo on nolla, vertailut palauttavat UNKNOWN.
FILTER käsitellään UNKNOWN ei täsmäävänä, joten rivi jätetään pois.
Käytä IS NULL ja IS NOT NULL nollaarvojen testaamiseen eksplisiittisesti:
-- Only include people who have a nickname
MATCH (p:Person)
FILTER p.nickname IS NOT NULL
RETURN p.firstName, p.nickname
Käytä coalesce() oletusarvon korvaamiseen, kun ominaisuus voi olla nolla:
MATCH (p:Person)
RETURN p.firstName, coalesce(p.nickname, p.firstName) AS displayName
Varoitus
NULL = NULL arvioi UNKNOWN, ei TRUE. Käytä IS NULL aina nollaarvojen testaamiseen, ei yhtällisyyttä.
Yhteenlasketut tulokset RETURNin kanssa
Käytä aggregaatiofunktioita RETURN yhteenvetoon tulosten tiivistämiseen. GQL tukee count(), sum(), avg(), min(), ja max().
Esimerkiksi, kun lasketaan kaikki kuvaajan henkilöt:
MATCH (p:Person)
RETURN count(*) AS totalPeople
Jotta voidaan laskea erilliset arvot, kuten kuinka moni eri yritys työllistää ihmisiä:
MATCH (p:Person)-[:workAt]->(c:Company)
RETURN count(DISTINCT c) AS companyCount
Ryhmän tulokset GROUP BY -menetelmällä
Käytä GROUP BY rivejä RETURN jaettujen arvojen mukaan ryhmittelemiseen ja kunkin ryhmän aggregaattien laskemiseen. Tämä ryhmittely on GQL:n vastine SQL GROUP BY:lle.
Esimerkiksi työntekijöiden laskeminen yrityskohtaisesti:
MATCH (p:Person)-[:workAt]->(c:Company)
LET companyName = c.name
RETURN companyName, count(*) AS employeeCount
GROUP BY companyName
ORDER BY employeeCount DESC
Ryhmittele useiksi sarakkeiksi ja lasketaan useita aggregaatteja samanaikaisesti. Esimerkiksi jaa henkilömäärä ja syntymäpäiväväli sukupuolen ja selaimen mukaan, palauttaen 10 yleisintä yhdistelmää:
MATCH (p:Person)
LET gender = p.gender
LET browser = p.browserUsed
RETURN gender,
browser,
count(*) AS personCount,
min(p.birthday) AS earliestBirthday,
max(p.birthday) AS latestBirthday
GROUP BY gender, browser
ORDER BY personCount DESC
LIMIT 10
Note
Kaikkien ei-aggregaattisten lausekkeiden joukossa RETURN on oltava .GROUP BY Lausekkeet, jotka eivät ole sisällä GROUP BY , täytyy käyttää aggregaatiofunktiota.
Lajittele ja rajoita koottuja tuloksia
Käytä ORDER BY ja LIMIT yhdessä GROUP BY löytääksesi top-N-tulokset.
Esimerkiksi, jotta löydät viisi parasta kaupunkia asukkaiden määrän perusteella:
MATCH (p:Person)-[:isLocatedIn]->(city:City)
LET cityName = city.name
RETURN cityName, count(*) AS residentCount
GROUP BY cityName
ORDER BY residentCount DESC
LIMIT 5
Tärkeää
Paikka ORDER BY ennen LIMIT.
LIMIT pätee aina jo järjestettyyn tulosjoukkoon.
Käyttö CASE ehdollisille arvoille tuloksissa
Käytä CASE/ELSETHENWHEN//ehdollisten arvojen laskemiseen tai .RETURNLET
Esimerkiksi ihmisten luokittelu aikakausiin syntymävuoden perusteella:
MATCH (p:Person)
RETURN p.firstName,
CASE WHEN p.birthday < 19800101 THEN 'Before 1980'
WHEN p.birthday < 20000101 THEN '1980–1999'
ELSE '2000 or later'
END AS era