共用方式為


GQL 快速參考

備註

這項功能目前處於公開預覽狀態。 此預覽版是在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

本文為 Microsoft Fabric 中圖形 GQL(圖查詢語言)語法的快速參考。 如需詳細說明,請參閱 GQL 語言指南

這很重要

本文僅使用 社群網路範例圖集

查詢結構

GQL 查詢使用一系列語句來定義要從圖表中取得哪些資料、如何處理資料以及如何顯示結果。 每個語句都有特定的用途,它們共同創建了一個線性管道,該管道與圖表中的資料進行匹配並逐步轉換。

一般查詢流程:
GQL 查詢通常首先指定要比對的圖形模式,然後使用選擇性陳述式進行變數建立、篩選、排序、分頁和結果輸出。

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

報表順序:

這很重要

Microsoft Fabric 中的圖形尚不支援任意陳述式組合。 請參閱 有關當前限制的文章。

陳述式通常可以在查詢中以任何順序出現:

  • MATCH – 指定要查找的圖形模式。
  • LET – 從表達式定義變數。
  • FILTER – 保持行匹配條件。
  • ORDER BY – 對結果進行排序。
  • OFFSET – 跳過許多行。
  • LIMIT – 限制行數。
  • RETURN – 輸出最終結果。

每個陳述式都以前一個陳述式為基礎,因此您可以累加精簡和調整查詢輸出。 如需每個陳述式的詳細資訊,請參閱下列各節。

查詢陳述式

MATCH

在資料中尋找圖形模式。

Syntax:

MATCH <graph pattern> [ WHERE <predicate> ]
...

Example:

MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *

如需陳述式的詳細資訊 MATCH ,請參閱 圖形模式

使用運算式建立變數。

Syntax:

LET <variable> = <expression>, <variable> = <expression>, ...
...

Example:

MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName

如需此 LET 陳述式的詳細資訊,請參閱 GQL 語言指南

過濾器

保留符合條件的資料列。

Syntax:

FILTER [ WHERE ] <predicate>
...

Example:

MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *

如需此 FILTER 陳述式的詳細資訊,請參閱 GQL 語言指南

排序依據

對結果進行排序。

Syntax:

ORDER BY <expression> [ ASC | DESC ], ...
...

Example:

MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC, n.firstName ASC

這很重要

所請求的列序僅保證緊接前一個語句後 ORDER BY 立即成立。 後續任何陳述(如有)不保證能維持此類順序。

如需此 ORDER BY 陳述式的詳細資訊,請參閱 GQL 語言指南

偏移/限制

略過列並限制結果數量。

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

如需 and OFFSETLIMIT 陳述式的詳細資訊,請參閱 GQL 語言指南

RETURN

輸出最終結果。

Syntax:

RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...

Example:

MATCH (n:Person)
RETURN n.firstName, n.lastName

如需此 RETURN 陳述式的詳細資訊,請參閱 GQL 語言指南

圖形模式

圖形模式描述要匹配的圖形結構。

節點模式

圖資料庫中,節點通常用於表示實體,例如人、產品或地點。

節點模式描述如何比對圖形中的節點。 您可以依標籤或繫結變數進行篩選。

(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

如需節點模式的詳細資訊,請參閱 圖形模式

邊緣圖案

邊樣式指定節點之間的關係,包括方向和邊類型。 在圖形資料庫中,邊緣代表兩個節點之間的連接或關係。

<-[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

如需邊緣模式的詳細資訊,請參閱 圖表模式

標籤運算式

標籤運算式可讓您使用邏輯運算子來比對具有特定標籤組合的節點。

:Person&Company                  -- Both Person AND Company labels
:Person|Company                  -- Person OR Company labels
:!Company                        -- NOT Company label
:(Person|!Company)&Active        -- Complex expressions with parentheses

如需標籤運算式的詳細資訊,請參閱 圖表型樣

路徑模式

路徑模式描述了圖的遍歷,包括躍點計數和變數繫結。

(a)-[:knows|likes]->{1,3}(b)      -- 1-3 hops via knows/likes
p=()-[:knows]->()                 -- Binding a path variable

如需路徑模式的詳細資訊,請參閱 圖表模式

多種模式

多個模式可讓您在單一查詢中比對複雜的非線性圖形結構。

(a)->(b), (a)->(c)               -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d)          -- Nonlinear structures

如需多個模式的詳細資訊,請參閱 圖形模式

值和值類型

基本類型

基本類型是原始資料值,例如字串、數字、布林值和日期時間。

STRING           -- 'hello', "world"
INT64            -- 42, -17
FLOAT64          -- 3.14, -2.5e10
BOOL             -- TRUE, FALSE, UNKNOWN
ZONED DATETIME   -- ZONED_DATETIME('2023-01-15T10:30:00Z')

進一步瞭解 GQL 值和值類型中的基本類型。

參考值類型

參考值類型是用作查詢中值的節點和邊緣。

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

GQL 值和值類型中進一步了解參考值類型。

集合類型

集合類型會將多個值分組,例如清單和路徑。

LIST<INT64>      -- [1, 2, 3]
LIST<STRING>     -- ['a', 'b', 'c']
PATH             -- Path values

GQL 值和值類型中進一步了解集合類型。

材質型與可歸零型

每個值類型要麼是可空值(包含空值),要麼是材料(排除空值)。 預設情況下,型別是可空的,除非明確指定為 NOT NULL

STRING NOT NULL  -- Material (Non-nullable) string type
INT64            -- Nullable (default) integer type

運算式和運算子

Comparison

比較運算子會比較值,並檢查相等、排序或空值。

=, <>, <, <=, >, >=              -- Standard comparison
IS NULL, IS NOT NULL             -- Null checks

如需比較述詞的詳細資訊,請參閱 GQL 運算式和函數

Logical

邏輯運算子會結合或否定查詢中的布林條件。

AND, OR, NOT                     -- Boolean logic

如需邏輯運算式的詳細資訊,請參閱 GQL 運算式和函數

Arithmetic

算術運算符對數字進行計算。

+, -, *, /                       -- Basic arithmetic operations

如需算術運算式的詳細資訊,請參閱 GQL 運算式和函數

字串模式

字串型樣述詞會比對字串中的子字串、字首或字尾。

n.firstName CONTAINS 'John'          -- Has substring
n.browserUsed STARTS WITH 'Chrome'   -- Starts with prefix
n.locationIP ENDS WITH '.1'          -- Ends with suffix

如需字串模式述詞的詳細資訊,請參閱 GQL 運算式和函數

列出作業

清單作業會測試成員資格、存取元素,以及測量清單長度。

n.gender IN ['male', 'female']    -- Membership test
n.tags[0]                        -- First element
size(n.tags)                     -- List length

如需清單成員資格述詞的詳細資訊,請參閱 GQL 運算式和函數

屬性存取

屬性存取會從節點或邊緣取得屬性的值。

n.firstName                      -- Property access

如需屬性存取的詳細資訊,請參閱 GQL 運算式和函數

Functions

聚合函數

彙總函數會計算列群組 (垂直彙總) 或群組清單元素 (水平彙總) 的摘要值。

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

進一步瞭解 GQL 運算式和函數中的彙總函數。

字串函數

字串函數可讓您使用和分析字串值。

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

進一步瞭解 GQL 運算式和函數中的字串函數。

清單函式

清單功能可讓您使用清單,例如檢查長度或修剪大小。

size(list)                       -- List length
trim(list, n)                    -- Trim a list to be at most size `n`

進一步瞭解 GQL 運算式和函數中的清單函數。

圖形函式

圖形函數可讓您從節點、路徑和邊緣取得資訊。

labels(node)                     -- Get node labels
nodes(path)                      -- Get path nodes
edges(path)                      -- Get path edges

進一步了解 GQL 運算式和函數中的圖形函數。

時間函數

時態函數可讓您使用日期和時間值。

zoned_datetime()               -- Get the current timestamp

進一步了解 GQL 運算式和函數中的時態函數。

泛型函數

泛型函數可讓您以常見的方式處理資料。

coalesce(expr1, expr2, ...)    -- Get the first non-null value

進一步瞭解 GQL 運算式和函數中的泛型函數。

常見模式

尋找聯繫

-- 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

頂部 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

篩選和條件

-- 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

路徑遍歷

-- Variable length paths
MATCH p = TRAIL (src:Person {firstName: 'Annemarie'})-[:knows]->{1,3}(dst:Person)
WHERE dst.firstName = 'Alexander'
RETURN p