Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Note
Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview wordt geleverd zonder een service level agreement en wordt niet aanbevolen voor productieworkloads. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews voor meer informatie.
Dit artikel bevat praktische GQL-querypatronen voor algemene grafiektaken in Microsoft Fabric: buren zoeken, multihop-verbindingen doorlopen, gedeelde verbindingen identificeren, relaties tellen en entiteiten zonder verbindingen zoeken.
Voorbeelden maken gebruik van de voorbeeldgegevensset voor sociale netwerken. Raadpleeg de GQL-taalhandleiding voor volledige taalreferenties.
Prerequisites
- Een grafiekitem met gegevens geladen. Als u nog niet eerder met grafieken werkt, voltooit u eerst de zelfstudie .
- Bekendheid met basis
MATCHenRETURNquery's. Zie de GQL-taalhandleiding.
Directe buren zoeken
Retourneer alle knooppunten die zijn verbonden met een beginknooppunt met één hop.
Zoek iedereen die een specifieke persoon kent:
MATCH (p:Person WHERE p.firstName = 'Alice')-[:knows]->(friend:Person)
RETURN friend.firstName, friend.lastName
Zoek alle bedrijven op bij wie een persoon heeft gewerkt:
MATCH (p:Person WHERE p.firstName = 'Alice')-[:workAt]->(c:Company)
RETURN c.name, c.url
Vrienden van vrienden zoeken (multihop)
Gebruik patronen met variabele lengte met {min,max} om meer dan één hop te doorlopen.
Vind mensen op twee stappen afstand - vrienden van Alices vrienden die zij niet direct kent.
MATCH (alice:Person WHERE alice.firstName = 'Alice')-[:knows]->{2,2}(fof:Person)
RETURN DISTINCT fof.firstName, fof.lastName
LIMIT 100
Iedereen vinden die bereikbaar is binnen drie graden:
MATCH (src:Person WHERE src.firstName = 'Alice')-[:knows]->{1,3}(dst:Person)
RETURN DISTINCT dst.firstName, dst.lastName
LIMIT 100
Tip
Stel altijd een bovengrens in voor doorkruising met variabele lengte. Onbegrensde patronen in grote of dichte grafieken kunnen de time-outlimieten voor query's bereiken. Zie Huidige beperkingen.
Relaties per entiteit tellen
Gebruik GROUP BY met count(*) om te tellen hoeveel relaties elke entiteit heeft.
Tel hoeveel vrienden elke persoon heeft, van de meeste naar de minste:
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
Tel hoeveel werknemers bij elk bedrijf werken:
MATCH (p:Person)-[:workAt]->(c:Company)
LET companyName = c.name
RETURN companyName, count(*) AS employeeCount
GROUP BY companyName
ORDER BY employeeCount DESC
Gedeelde verbindingen zoeken
Als u een variabele in twee delen van een patroon opnieuw gebruikt, wordt een impliciete beperking voor hetzelfde knooppunt gemaakt. Gebruik deze beperking om entiteiten te vinden die zijn verbonden via een gedeelde derde entiteit.
Zoek paren van personen die beide dezelfde persoon kennen:
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
Zoek paren van personen die bij hetzelfde bedrijf werken:
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
Tip
De WHERE a.id < b.id voorwaarde voorkomt dat dubbele paren (Alice–Bob en Bob–Alice) worden weergegeven in de resultaten.
Entiteiten zonder relaties zoeken
Gebruik OPTIONAL MATCH gevolgd door een null-controle om knooppunten te vinden die geen overeenkomende relatie hebben.
Personen zoeken die niet werken bij een enkel bedrijf:
MATCH (p:Person)
OPTIONAL MATCH (p)-[:workAt]->(c:Company)
FILTER c IS NULL
RETURN p.firstName, p.lastName
LIMIT 100
Berichten zoeken zonder opmerkingen:
MATCH (post:Post)
OPTIONAL MATCH (comment:Comment)-[:replyOf]->(post)
FILTER comment IS NULL
RETURN post.id, post.content
LIMIT 100
Entiteiten zoeken met veel verbindingen
Combineer GROUP BY en FILTER identificeer sterk verbonden knooppunten. Deze methode is nuttig voor het vinden van hubs of uitschieters.
Personen zoeken met meer dan 10 vrienden:
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 na GROUP BY werkt als HAVING in SQL. Het filtert op het geaggregeerde resultaat, niet op de afzonderlijke rijen.