แชร์ผ่าน


การอ้างอิงด่วนของ GQL

Note

คุณลักษณะนี้อยู่ในการแสดงตัวอย่างสาธารณะ การแสดงตัวอย่างนี้จะมีให้โดยไม่มีข้อตกลงระดับบริการ และไม่แนะนําสําหรับปริมาณงานการผลิต คุณลักษณะบางอย่างอาจไม่ได้รับการสนับสนุนหรืออาจมีความสามารถที่จํากัด สําหรับข้อมูลเพิ่มเติม ให้ดู เงื่อนไขเพิ่มเติมของการใช้สําหรับการแสดงตัวอย่าง Microsoft Azure

บทความนี้เป็นข้อมูลอ้างอิงด่วนของไวยากรณ์ GQL (Graph Query Language) สําหรับกราฟใน Microsoft Fabric สําหรับคําอธิบายโดยละเอียด โปรดดูคู่มือภาษา GQL

โครงสร้างคิวรี

คิวรี GQL ใช้ลําดับของคําสั่งที่กําหนดว่าจะรับข้อมูลจากกราฟ วิธีการประมวลผล และวิธีการแสดงผลลัพธ์ แต่ละคําสั่งมีวัตถุประสงค์เฉพาะและร่วมกันสร้างไปป์ไลน์เชิงเส้นที่ตรงกับข้อมูลจากกราฟและแปลงทีละขั้นตอน

โฟลว์คิวรีทั่วไป:
โดยทั่วไปคิวรี GQL จะเริ่มต้นโดยการระบุรูปแบบกราฟเพื่อให้ตรงกัน จากนั้นใช้คําสั่งตัวเลือกสําหรับการสร้างตัวแปร การกรอง การเรียงลําดับ การแบ่งหน้า และผลลัพธ์ผลลัพธ์

ตัวอย่าง:

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 <graph pattern> [ WHERE <predicate> ]
...

ตัวอย่าง:

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

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคําสั่ง MATCH ให้ดู รูปแบบกราฟ

ให้

สร้างตัวแปรโดยใช้นิพจน์

วากยสัมพันธ์:

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

ตัวอย่าง:

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

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคําสั่ง LET โปรดดูคู่มือภาษา GQL

กรอง

เก็บแถวที่ตรงกับเงื่อนไข

วากยสัมพันธ์:

FILTER [ WHERE ] <predicate>
...

ตัวอย่าง:

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

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคําสั่ง FILTER โปรดดูคู่มือภาษา GQL

สั่งซื้อโดย

เรียงลําดับผลลัพธ์

วากยสัมพันธ์:

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

ตัวอย่าง:

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

สําคัญ

ลําดับแถวที่ร้องขอจะรับประกันว่าจะคงอยู่ทันทีหลังจากคําสั่งก่อนหน้า ORDER BY เท่านั้น ข้อความใด ๆ ต่อไปนี้ (ถ้ามี) ไม่รับประกันว่าจะรักษาคําสั่งดังกล่าวไว้

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคําสั่ง ORDER BY โปรดดูคู่มือภาษา GQL

ออฟเซต/ขีดจํากัด

ข้ามแถวและจํากัดจํานวนของผลลัพธ์

วากยสัมพันธ์:

OFFSET <offset> [ LIMIT <limit> ]
LIMIT <limit>
...

ตัวอย่าง:

MATCH (n:Person)
ORDER BY n.birthday
OFFSET 10 LIMIT 20
RETURN n.firstName || ' ' || n.lastName AS name, n.birthday

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับOFFSETคําสั่ง และ LIMIT โปรดดูคู่มือภาษา GQL

กลับ

ส่งออกผลลัพธ์สุดท้าย

วากยสัมพันธ์:

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

ตัวอย่าง:

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 และชนิดของค่า

วัสดุและชนิด nullable

ทุกชนิดของค่าจะ nullable (รวมค่า Null ) หรือวัสดุ (ไม่รวม) โดยค่าเริ่มต้น ชนิดจะสามารถเป็น null ได้ เว้นแต่จะระบุไว้อย่างชัดเจนเป็น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 และฟังก์ชัน

ตรรกะ

ตัวดําเนินการเชิงตรรกะรวมหรือลบเงื่อนไขบูลีนในคิวรี

AND, OR, NOT                     -- Boolean logic

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับนิพจน์ตรรกะ ให้ดูนิพจน์ GQL และฟังก์ชัน

เลขคณิต

ตัวดําเนินการทางคณิตศาสตร์ดําเนินการคํานวณตัวเลข

+, -, *, /                       -- 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 และฟังก์ชัน

ฟังก์ชัน

ฟังก์ชันการรวม

ฟังก์ชันการรวมจะคํานวณค่าสรุปสําหรับกลุ่มของแถว (การรวมแนวตั้ง) หรือผ่านองค์ประกอบของรายการกลุ่ม (การรวมแนวนอน)

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

การรวม

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