Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Supplementale Nutzungsbedingungen für Microsoft Azure Previews.
Dieser Artikel ist eine Kurzübersicht über die GQL-Syntax (Graph Query Language) für Fabric Graph. Ausführliche Erläuterungen finden Sie im GQL-Sprachhandbuch.
Hinweis
In diesem Artikel wird in erster Linie das Beispieldiagramm-Dataset für soziale Netzwerke verwendet. Es enthält auch einige Beispiele, die das Adventure Works-Dataset aus dem Graph-Lernprogramm verwenden.
Abfragestruktur
GQL-Abfragen verwenden eine Abfolge von Anweisungen, die definieren, welche Daten aus dem Diagramm abgerufen werden sollen, wie sie verarbeitet werden und wie die Ergebnisse angezeigt werden. Jede Anweisung hat einen bestimmten Zweck, und zusammen erstellen sie eine lineare Pipeline, die Daten aus dem Diagramm abgleicht und sie schritt für Schritt transformiert.
Typischer Abfragefluss:
Eine GQL-Abfrage beginnt in der Regel mit der Angabe des abzugleichenden Diagrammmusters. Anschließend werden optionale Anweisungen für die Variablenerstellung, Filterung, Sortierung, Paginierung und Ergebnisausgabe verwendet.
Example:
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
Anweisungsreihenfolge:
Von Bedeutung
Fabric Graph unterstützt noch keine beliebige Anweisungskomposition. Weitere Informationen finden Sie im Artikel zu den aktuellen Einschränkungen.
Anweisungen können in der Regel in beliebiger Reihenfolge innerhalb einer Abfrage angezeigt werden:
-
MATCH– Geben Sie diagrammmuster an, die gesucht werden sollen. -
LET– Definieren sie Variablen aus Ausdrücken. -
FILTER– Zeilenabgleichsbedingungen beibehalten. -
ORDER BY– Sortierergebnisse. -
OFFSET– Überspringen Sie viele Zeilen. -
LIMIT– Die Anzahl der Zeilen einschränken. -
RETURN– Gibt die Endergebnisse aus.
Jede Anweisung baut auf dem vorherigen auf, sodass Sie die Abfrageausgabe inkrementell verfeinern und gestalten. Weitere Informationen zu den einzelnen Anweisungen finden Sie in den folgenden Abschnitten.
Abfrageanweisungen
MATCH
Suchen Sie Diagrammmuster in Ihren Daten.
Syntax:
MATCH <graph pattern> [ WHERE <predicate> ]
...
Example:
MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *
Weitere Informationen zur MATCH Anweisung finden Sie in den Graph-Mustern.
LASSEN
Erstellen Sie Variablen mithilfe von Ausdrücken.
Syntax:
LET <variable> = <expression>, <variable> = <expression>, ...
...
Example:
MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName
Weitere Informationen zur LET Anweisung finden Sie im GQL-Sprachhandbuch.
Filter
Behält Zeilen bei, die Bedingungen erfüllen.
Syntax:
FILTER [ WHERE ] <predicate>
...
Example:
MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *
Weitere Informationen zur FILTER Anweisung finden Sie im GQL-Sprachhandbuch.
SORTIEREN NACH
Sortiert die Ergebnisse.
Syntax:
ORDER BY <expression> [ ASC | DESC ], ...
...
Example:
MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC, n.firstName ASC
Von Bedeutung
Die angeforderte Reihenfolge der Zeilen gilt nur garantiert unmittelbar nach einer vorangegangenen ORDER BY Aussage.
Alle folgenden Anweisungen (sofern vorhanden) werden nicht garantiert, um eine solche Reihenfolge beizubehalten.
Weitere Informationen zur ORDER BY Anweisung finden Sie im GQL-Sprachhandbuch.
OFFSET/LIMIT
Überspringen Sie Zeilen, und beschränken Sie die Anzahl der Ergebnisse.
Syntax:
OFFSET <offset> [ LIMIT <limit> ]
LIMIT <limit>
...
Example:
MATCH (n:Person)
ORDER BY n.birthday
OFFSET 10 LIMIT 20
RETURN n.firstName || ' ' || n.lastName AS name, n.birthday
Weitere Informationen zu den OFFSET Und-Anweisungen LIMIT finden Sie im GQL-Sprachhandbuch.
RETURN
Geben Sie die endgültigen Ergebnisse aus.
Syntax:
RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...
Example:
MATCH (n:Person)
RETURN n.firstName, n.lastName
Weitere Informationen zur RETURN Anweisung finden Sie im GQL-Sprachhandbuch.
Diagrammmuster
Diagrammmuster beschreiben die Struktur des Zugleichenden Diagramms.
Knotenmuster
Verwenden Sie in Graphdatenbanken Knoten, um Entitäten wie Personen, Produkte oder Orte darzustellen.
Knotenmuster beschreiben, wie Knoten im Diagramm übereinstimmen. Sie können nach Bezeichnungs- oder Bindungsvariablen filtern.
(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
Weitere Informationen zu Knotenmustern finden Sie in den Graph-Mustern.
Edgemuster
Edgemuster geben Beziehungen zwischen Knoten an, einschließlich Richtung und Edgetyp. In Graphdatenbanken stellt ein Rand eine Verbindung oder Beziehung zwischen zwei Knoten dar.
<-[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
Weitere Informationen zu Edgemustern finden Sie in den Graph-Mustern.
Bezeichnungsausdrücke
Mit Bezeichnungsausdrücken können Sie Knoten mit bestimmten Bezeichnungskombinationen mithilfe logischer Operatoren abgleichen.
:Person&Company -- Both Person AND Company labels
:Person|Company -- Person OR Company labels
:!Company -- NOT Company label
:(Person|!Company)&Active -- Complex expressions with parentheses
Weitere Informationen zu Bezeichnungsausdrücken finden Sie in den Graph-Mustern.
Pfadmuster
Pfadmuster beschreiben Traversale durch das Diagramm, einschließlich Hopanzahlen und Variablenbindungen.
(a)-[:knows|likes]->{1,3}(b) -- 1-3 hops via knows/likes
p=()-[:knows]->() -- Binding a path variable
Weitere Informationen zu Pfadmustern finden Sie in den Graph-Mustern.
Mehrere Muster
Verwenden Sie mehrere Muster, um komplexe, nichtlineare Diagrammstrukturen in einer einzelnen Abfrage abzugleichen.
(a)->(b), (a)->(c) -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d) -- Nonlinear structures
Weitere Informationen zu mehreren Mustern finden Sie in den Graph-Mustern.
Werte und Werttypen
Grundlegende Typen
Grundlegende Typen sind primitive Datenwerte wie Zeichenfolgen, Zahlen, Booleane und Datetimes.
STRING -- 'hello', "world"
INT64 -- 42, -17
FLOAT64 -- 3.14, -2.5e10
BOOL -- TRUE, FALSE, UNKNOWN
ZONED DATETIME -- ZONED_DATETIME('2023-01-15T10:30:00Z')
Weitere Informationen zu grundlegenden Typen finden Sie unter GQL-Werte und Werttypen.
Referenzwerttypen
Referenzwerttypen sind Knoten und Kanten, die Sie als Werte in Abfragen verwenden.
NODE -- Node reference values
EDGE -- Edge reference values
Weitere Informationen zu Referenzwerttypen finden Sie unter GQL-Werte und Werttypen.
Auflistungstypen
Sammlungstypen gruppieren mehrere Werte, z. B. Listen und Pfade.
LIST<INT64> -- [1, 2, 3]
LIST<STRING> -- ['a', 'b', 'c']
PATH -- Path values
Weitere Informationen zu Sammlungstypen finden Sie unter GQL-Werte und -Werttypen.
Material- und nullable Typen
Jeder Werttyp ist entweder nullable (enthält den Nullwert) oder Material (schließt ihn aus).
Standardmäßig können Typen nullwertet werden, es sei denn, Sie geben explizit an NOT NULL.
STRING NOT NULL -- Material (Non-nullable) string type
INT64 -- Nullable (default) integer type
Ausdrücke und Operatoren
Vergleich
Vergleichsoperatoren vergleichen Werte und überprüfen auf Gleichheit, Sortierung oder Null.
=, <>, <, <=, >, >= -- Standard comparison
IS NULL, IS NOT NULL -- Null checks
Weitere Informationen zu Vergleichs-Prädikaten finden Sie in den GQL-Ausdrücken und -Funktionen.
Logisch
Logische Operatoren kombinieren oder negieren boolesche Bedingungen in Abfragen.
AND, OR, NOT -- Boolean logic
Weitere Informationen zu logischen Ausdrücken finden Sie in den GQL-Ausdrücken und -Funktionen.
Arithmetik
Arithmetische Operatoren führen Berechnungen für Zahlen durch.
+, -, *, / -- Basic arithmetic operations
Weitere Informationen zu arithmetischen Ausdrücken finden Sie in den GQL-Ausdrücken und -Funktionen.
Zeichenfolgenmuster
Zeichenfolgenmusterprädikate entsprechen Teilzeichenfolgen, Präfixen oder Suffixe in Zeichenfolgen.
n.firstName CONTAINS 'John' -- Has substring
n.browserUsed STARTS WITH 'Chrome' -- Starts with prefix
n.locationIP ENDS WITH '.1' -- Ends with suffix
Weitere Informationen zu Zeichenfolgenmuster-Prädikaten finden Sie in den GQL-Ausdrücken und -Funktionen.
Vorgänge auflisten
Listenvorgänge testen Mitgliedschaft, Zugriffselemente und Messen der Listenlänge.
n.gender IN ['male', 'female'] -- Membership test
n.tags[0] -- First element
size(n.tags) -- List length
Weitere Informationen zu Listenmitgliedschafts-Prädikaten finden Sie in den GQL-Ausdrücken und -Funktionen.
Eigenschaftenzugriff
Der Eigenschaftszugriff ruft den Wert einer Eigenschaft von einem Knoten oder Rand ab.
n.firstName -- Property access
Weitere Informationen zum Eigenschaftenzugriff finden Sie in den GQL-Ausdrücken und -Funktionen.
Funktionen
Aggregatfunktionen
Aggregatfunktionen berechnen Zusammenfassungswerte für Zeilengruppen (vertikale Aggregation) oder über die Elemente einer Gruppenliste (horizontale Aggregation).
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
Erfahren Sie mehr über Aggregatfunktionen in den GQL-Ausdrücken und -Funktionen.
Zeichenfolgenfunktionen
Mit Zeichenfolgenfunktionen können Sie mit Zeichenfolgenwerten arbeiten und diese analysieren.
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
Erfahren Sie mehr über Zeichenfolgenfunktionen in den GQL-Ausdrücken und -Funktionen.
Listenfunktionen
Mithilfe von Listenfunktionen können Sie mit Listen arbeiten, z. B. die Länge überprüfen oder die Größe kürzen.
size(list) -- List length
trim(list, n) -- Trim a list to be at most size `n`
Weitere Informationen zu Listenfunktionen finden Sie unter GQL-Ausdrücke und -Funktionen.
Graph-Funktionen
Mithilfe von Graph-Funktionen können Sie Informationen von Knoten, Pfaden und Kanten abrufen.
labels(node) -- Get node labels
nodes(path) -- Get path nodes
edges(path) -- Get path edges
Weitere Informationen zu Diagrammfunktionen finden Sie unter GQL-Ausdrücke und -Funktionen.
Zeitliche Funktionen
Mit zeitlichen Funktionen können Sie mit Datums- und Uhrzeitwerten arbeiten.
zoned_datetime() -- Get the current timestamp
Weitere Informationen zu zeitlichen Funktionen finden Sie unter GQL-Ausdrücke und -Funktionen.
Allgemeine Funktionen
Mit generischen Funktionen können Sie auf gemeinsame Weise mit Daten arbeiten.
coalesce(expr1, expr2, ...) -- Get the first non-null value
Weitere Informationen zu generischen Funktionen finden Sie unter GQL-Ausdrücke und -Funktionen.
Allgemeine Muster
Dieser Abschnitt enthält einige gängige GQL-Abfragemuster, die Sie verwenden können.
Beispiele für soziale Netzwerke
In diesen Beispielen wird das Beispieldiagramm-Dataset für soziale Netzwerke verwendet.
Suchen aller Knoten eines Typs
-- Get all nodes with a specific label
MATCH (p:Person) RETURN p
Suchen von Knoten mit bestimmten Eigenschaften
-- Filter nodes by property value
MATCH (p:Person) FILTER p.firstName = 'Annemarie' RETURN p
Suchen von Verbindungen
-- Friends of friends
MATCH (me:Person {firstName: 'Annemarie'})-[:knows]->{2}(fof:Person)
WHERE fof <> me
RETURN DISTINCT fof.firstName
Durchlaufen von Beziehungen
-- Multi-hop traversal through different edge types
MATCH (p:Person)-[:knows]->(f:Person)-[:isLocatedIn]->(c:City)
RETURN p.firstName, f.firstName, c.name
Aggregation
-- Count by group
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name AS name, count(*) AS population
GROUP BY name
ORDER BY population DESC
Oben 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
Filtern und Bedingungen
-- 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
Pfad-Traversal
-- Variable length paths
MATCH p = TRAIL (src:Person {firstName: 'Annemarie'})-[:knows]->{1,3}(dst:Person)
WHERE dst.firstName = 'Alexander'
RETURN p
Adventure Works-Beispiele
In diesen Beispielen wird das Adventure Works-Dataset aus dem Graph-Lernprogramm verwendet.
Alle Kunden suchen
-- Get all customer nodes
MATCH (c:Customer) RETURN c
Suchen nach Produkten nach Name
-- Filter products by name
MATCH (p:Product) FILTER p.productName = 'Mountain Bike' RETURN p
Durchlaufen von Kundenaufträgen
-- Multi-hop traversal: customers to orders to products
MATCH (c:Customer)-[:purchases]->(o:Order)-[:contains]->(p:Product)
RETURN c, o, p
Zählen von Bestellungen nach Mitarbeiter
-- Count orders by employee
MATCH (e:Employee)-[:sells]->(o:Order)
RETURN e.employeeName, count(o) AS total_orders
GROUP BY e.employeeName
ORDER BY total_orders DESC