หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
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