Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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 Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
Mit GQL-Ausdrücken können Sie Berechnungen, Vergleiche und Transformationen für Daten in Ihren Abfragen ausführen. In Kombination mit integrierten Funktionen bieten Ausdrücke leistungsstarke Tools für die Datenverarbeitung, Filterung und Analyse in Diagrammabfragen.
Literale
Literale sind einfache Ausdrücke, die direkt auf den angegebenen Wert ausgewertet werden. Literale jeder Art von Wert werden in GQL-Werten und Werttypen ausführlich erläutert.
Example:
1
1.0d
TRUE
"Hello, graph!"
[ 1, 2, 3 ]
NULL
Ausführliche Literalsyntax für jeden Datentyp finden Sie unter GQL-Werte und Werttypen.
Prädikate
Prädikate sind boolesche Ausdrücke, die häufig zum Filtern von Ergebnissen in GQL-Abfragen verwendet werden. Sie werden als TRUE, FALSEoder UNKNOWN (NULL) ausgewertet.
Vorsicht
Bei Verwendung als Filter behalten Prädikate nur die Elemente bei, für die das Prädikat ausgewertet wird TRUE.
Vergleichsdrädikate
Vergleichen Sie Werte mithilfe dieser Operatoren:
-
=(gleich) -
<>(nicht gleich) -
<(kleiner als) -
>(größer als) -
<=(kleiner oder gleich) -
>=(größer oder gleich)
GQL verwendet dreiwertige Logik, bei der Vergleiche mit NULL-Rückgabe UNKNOWN:
| Ausdruck | Ergebnis |
|---|---|
5 = 5 |
TRUE |
5 = 3 |
FALSE |
5 = NULL |
UNKNOWN |
NULL = NULL |
UNKNOWN |
Spezifisches Vergleichsverhalten finden Sie in der Dokumentation für jeden Werttyp in GQL-Werten und -Werttypen.
Example:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915
RETURN p.firstName
Zahlenkoersionsregeln:
Rangfolge:
- Vergleichsausdrücke, die Argumente von ungefähren numerischen Typen umfassen, wandeln alle Argumente in einen ungefähren numerischen Typ um.
- Vergleichsausdrücke, die Argumente von signierten und nicht signierten ganzzahligen Typen umfassen, wandeln alle Argumente in einen signierten ganzzahligen Typ um.
Logische Ausdrücke
Kombinieren von Bedingungen mit logischen Operatoren:
-
AND(beide Bedingungen wahr) -
OR(beide Bedingung true) -
NOT(Negates-Bedingung)
Example:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915 AND p.firstName = 'John'
RETURN p.firstName || ' ' || p.lastName AS fullName
Eigenschaftenexistenz-Prädikate
Um zu überprüfen, ob es Immobilien gibt, können Sie folgendes verwenden:
p.locationIP IS NOT NULL
p.browserUsed IS NULL
Hinweis
Der Versuch, auf eine bekannte, nicht existierende Eigenschaft zuzugreifen, führt zu einem Syntaxfehler.
Der Zugang zu einer potenziell nicht vorhandenen Immobilie bewertet auf null.
Die Feststellung, ob eine Eigenschaft bekannt oder potenziell nicht existiert, basiert auf dem Typ des zugegriffenen Knotens oder der Kante.
Mitgliedschafts-Prädikate auflisten
Testen, ob Werte in Listen enthalten sind:
p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']
Zeichenfolgenmuster-Prädikate
Zeichenfolgen mithilfe des Musterabgleichs abgleichen:
p.firstName CONTAINS 'John'
p.browserUsed STARTS WITH 'Chrome'
p.locationIP ENDS WITH '.1'
Arithmetische Ausdrücke
Verwenden Sie standardmäßige arithmetische Operatoren mit numerischen Werten:
-
+(Addition) -
-(Subtraktion) -
*(Multiplikation) -
/(Division)
Arithmetische Operatoren folgen allgemeinen mathematischen Konventionen.
Vorrang:
Im Allgemeinen folgen Operatoren etablierten Operatorrangfolgeregeln, z * . B. vor +. Verwenden Sie Klammern, um die Auswertungsreihenfolge nach Bedarf zu steuern.
Example:
(p.birthday < 20050915 OR p.birthday > 19651231) AND p.gender = 'male'
Koersionsregeln:
Rangfolge:
- Arithmetische Ausdrücke mit Argumenten ungefährer Zahlentypen geben ein Ergebnis eines ungefähren numerischen Typs zurück.
- Arithmetische Ausdrücke mit Argumenten von vorzeichenierten und nicht signierten ganzzahligen Typen geben ein Ergebnis eines signierten ganzzahligen Typs zurück.
Example:
LET birth_year = p.birthday / 10000
RETURN birth_year
Eigenschaftenzugriff
Zugreifen auf Eigenschaften mit Punktnotation:
p.firstName
edge.creationDate
Listenzugriff
Zugreifen auf Listenelemente mit nullbasierter Indizierung:
interests[0] -- first element
interests[1] -- second element
Integrierte Funktionen
GQL unterstützt verschiedene integrierte Funktionen für die Datenverarbeitung und -analyse.
Aggregatfunktionen
Aggregatfunktionen werden verwendet, um einen Ausdruck über eine Reihe von Zeilen auszuwerten und einen endgültigen Ergebniswert zu erhalten, indem die für jede Zeile berechneten Werte kombiniert werden. Die folgenden Aggregatfunktionen werden für Graph in Microsoft Fabric unterstützt:
-
count(*)- Zählt Zeilen -
sum(expression)- Summieren numerischer Werte -
avg(expression)- Mittelwerte numerischer Werte -
min(expression)- findet minimalen Wert. -
max(expression)- findet maximaler Wert -
collect_list(expression)- sammelt Werte in einer Liste.
Im Allgemeinen ignorieren Aggregatfunktionen Nullwerte und geben immer einen Nullwert zurück, wenn keine Materialeingabewerte bereitgestellt werden. Sie können zum Abrufen eines anderen Standardwerts verwenden coalesce : coalesce(sum(expr), 0). Die einzige Ausnahme ist die count Aggregatfunktion, die immer die nicht null angegebenen Werte zählt und 0 zurückgibt, wenn keines vorhanden ist. Wird verwendet count(*) , um auch Nullwerte in die Anzahl einzuschließen.
Aggregatfunktionen werden auf drei verschiedene Arten verwendet:
- Für Die Berechnung (vertikale) Aggregate über ganze Tabellen
- Für Die Berechnung (vertikal) aggregierte Untertabellen, die durch einen Gruppierungsschlüssel bestimmt werden
- Für die Berechnung (horizontal) aggregiert über die Elemente einer Gruppenliste
Vertikale Aggregate:
-- Vertical aggregate over whole table
MATCH (p:Person)
RETURN count(*) AS total_people, avg(p.birthday) AS average_birth_year
-- Vertical aggregate with grouping
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name, count(*) AS population, avg(p.birthday) AS average_birth_year
GROUP BY c.name
Horizontale Aggregate:
Die horizontale Aggregation berechnet Aggregate über die Elemente von Gruppenlistenvariablen aus Variablenlängenmustern:
-- Horizontal aggregate over a group list variable
MATCH (p:Person)-[edges:knows]->{1,3}(:Person)
RETURN p.firstName, avg(edges.creationDate) AS avg_connection_date
Horizontale Aggregation hat immer Vorrang vor vertikaler Aggregation.
Um eine Gruppenliste in eine reguläre Liste zu konvertieren, verwenden Sie collect_list(edges).
Hinweis
Eine umfassende Abdeckung der Aggregationstechniken, einschließlich der Bindung variabler Länge und der Kombination horizontaler/vertikaler Aggregation, finden Sie unter Advanced Aggregation Techniques.
Zeichenfolgenfunktionen
-
char_length(string)- gibt die Länge der Zeichenfolge zurück. -
upper(string)- gibt die großgeschriebene Variante der bereitgestellten Zeichenfolge zurück (nur US ASCII) -
lower(string)- gibt die kleingeschriebene Variante der bereitgestellten Zeichenfolge zurück (nur US ASCII) -
trim(string)- entfernt führende und nachfolgende Leerzeichen -
string_join(list, separator)- verknüpft Listenelemente mit Trennzeichen
Example:
MATCH (p:Person)
WHERE char_length(p.firstName) > 5
RETURN upper(p.firstName) AS name_upper
Graph-Funktionen
-
nodes(path)- Gibt Knoten aus einem Pfadwert zurück. -
edges(path)- gibt Ränder aus einem Pfadwert zurück. -
labels(node_or_edge)- gibt die Beschriftungen eines Knotens oder Rands als Liste von Zeichenfolgen zurück.
Example:
MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues
Listenfunktionen
-
size(list)- gibt die Größe eines Listenwerts zurück. -
trim(list,n)- Kürzen einer Liste, die höchstens die Größe hatn
Example:
MATCH (p:Person)-[:hasInterest]->(t:Tag)
WHERE size(collect_list(t)) > 3
RETURN p.firstName, collect_list(t.name) AS interests
Zeitliche Funktionen
-
zoned_datetime()- gibt aktuelle zoned datetime zurück. -
zoned_datetime("2025-09-12T10:10:52Z")- gibt zonenbezogene Datumstime zurück, die vom Argument im ISO 8601-Format angegeben wird.
Example:
RETURN zoned_datetime() AS now
Allgemeine Funktionen
-
coalesce(value1, value2, ...)- gibt den ersten Wert ungleich Null zurück.
Example:
MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name