Freigeben über


GQL-Kurzübersicht

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 Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Dieser Artikel ist eine Kurzreferenz zur GQL-Syntax (Graph Query Language) für Graphen in Microsoft Fabric. Ausführliche Erläuterungen finden Sie im GQL-Sprachhandbuch.

Von Bedeutung

In diesem Artikel wird ausschließlich das Beispieldiagramm-Dataset für soziale Netzwerke verwendet.

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 und verwendet dann optionale Anweisungen zum Erstellen, Filtern, Sortieren, Paginieren und Ergebnisausgabe.

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

Graph in Microsoft Fabric 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

Halten Sie Zeilen, 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

Sortieren Sie 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 Aussagen (sofern vorhanden) garantieren nicht, dass eine solche Reihenfolge erhalten bleibt.

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

In Diagrammdatenbanken werden Knoten in der Regel verwendet, 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

Mit mehreren Mustern können Sie komplexe, nichtlineare Diagrammstrukturen in einer einzelnen Abfrage abgleichen.

(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')

Erfahren Sie mehr über grundlegende Typen in den GQL-Werten und -Werttypen.

Referenzwerttypen

Referenzwerttypen sind Knoten und Kanten, die als Werte in Abfragen verwendet werden.

NODE             -- Node reference values
EDGE             -- Edge reference values

Erfahren Sie mehr über Referenzwerttypen in den GQL-Werten 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

Erfahren Sie mehr über Sammlungstypen in den GQL-Werten und -Werttypen.

Material- und nullable Typen

Jeder Werttyp ist entweder null (einschließlich des Nullwerts) oder materiell (ausgeschlossen). Standardmäßig sind Typen nullierbar, sofern nicht ausdrücklich als NOT NULLangegeben.

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`

Erfahren Sie mehr über Listenfunktionen in den GQL-Ausdrücken 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

Erfahren Sie mehr über Graphfunktionen in den GQL-Ausdrücken und -Funktionen.

Zeitliche Funktionen

Mit zeitlichen Funktionen können Sie mit Datums- und Uhrzeitwerten arbeiten.

zoned_datetime()               -- Get the current timestamp

Erfahren Sie mehr über zeitliche Funktionen in den GQL-Ausdrücken 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

Erfahren Sie mehr über allgemeine Funktionen in den GQL-Ausdrücken und -Funktionen.

Allgemeine Muster

Suchen von Verbindungen

-- Friends of friends  
MATCH (me:Person {firstName: 'Annemarie'})-[:knows]->{2}(fof:Person)
WHERE fof <> me
RETURN DISTINCT fof.firstName

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