หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
บทความนี้เป็นการอ้างอิงด่วนสําหรับไวยากรณ์ GQL (Graph Query Language) สําหรับกราฟใน Microsoft Fabric ใช้มันเพื่อเรียกคืนไวยากรณ์และค่าเริ่มต้น สําหรับคําอธิบายแบบครบวงจร ดู คู่มือภาษา GQL;แต่ละส่วนจะลิงก์ไปยังแหล่งอ้างอิงที่เน้นรายละเอียดทั้งหมด
Note
บทความนี้ใช้ ตัวอย่างชุดข้อมูลกราฟเครือข่ายสังคมเป็นหลัก นอกจากนี้ยังมีตัวอย่างบางส่วนที่ใช้ชุดข้อมูล Adventure Works จากบทช่วยสอนกราฟ
โครงสร้างคิวรี
คิวรี 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
องค์ประกอบของคําชี้แจง:
สําคัญ
คําสั่งจะจัดเรียงเป็น pipeline ที่เรียงลําดับและไม่สามารถจัดเรียงใหม่ได้ตามต้องการ ดูบทความเกี่ยวกับข้อจํากัดในปัจจุบัน
-
MATCH– ระบุรูปแบบกราฟที่จะค้นหา -
LET– กําหนดตัวแปรจากนิพจน์ -
FOR– ขยายรายการเป็นแถว -
CALL– รันคําสั่งย่อยแบบอินไลน์และเพิ่มคอลัมน์ที่ส่งคืน -
FILTER– เก็บเงื่อนไขที่ตรงกันของแถว -
WHEN– ส่งเส้นทางแต่ละแถวอินพุตไปยังสาขาเงื่อนไขที่ตรงกันครั้งแรก -
ORDER BY– เรียงลําดับผลลัพธ์ -
OFFSET– ข้ามหลายแถว -
LIMIT– จํากัดจํานวนแถว -
RETURN– แสดงผลสุดท้าย -
NEXT– เริ่มขั้นตอนการสืบค้นใหม่โดยใช้คอลัมน์ที่ส่งคืนจากขั้นตอนก่อนหน้า
แต่ละคําสั่งจะสร้างรายการก่อนหน้านี้ เพื่อให้คุณปรับปรุงและจัดรูปร่างผลลัพธ์คิวรีแบบเพิ่มหน่วย ใช้ UNION, UNION DISTINCT, หรือ UNION ALL เพื่อรวมบล็อกคําสั่งค้นหาทั้งหมด สําหรับข้อมูลเพิ่มเติมเกี่ยวกับแต่ละคําสั่ง ให้ดูส่วนต่อไปนี้
คําสั่งแบบสอบถาม
ไม้ขีดไฟ
ค้นหารูปแบบกราฟในข้อมูลของคุณ
วากยสัมพันธ์:
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
FOR
ขยายรายการเป็นแถวและคืนค่าตําแหน่งของแต่ละองค์ประกอบได้ตามต้องการ
วากยสัมพันธ์:
FOR <variable> IN <list_expression>
[ WITH OFFSET <offset_variable> | WITH ORDINALITY <ordinality_variable> ]
...
ตัวอย่าง:
FOR value IN [10, 20] WITH OFFSET index
RETURN value, index
WITH OFFSET เริ่มต้นที่ 0.
WITH ORDINALITY เริ่มต้นที่ 1.
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคําสั่ง FOR โปรดดูคู่มือภาษา GQL
CALL
รันคําสั่งย่อยแบบอินไลน์สําหรับแต่ละแถวอินพุต ตัวแปรที่อยู่ในขอบเขตอยู่แล้วจะมีอยู่โดยนัยภายในซับคิวรี
วากยสัมพันธ์:
[ OPTIONAL ] CALL {
<query statements>
RETURN <columns>
}
...
จากตัวแปรที่สร้างภายในซับคิวรี จะมีเพียงคอลัมน์จากคําสั่งสุดท้าย RETURN เท่านั้นที่จะสามารถใช้งานได้ภายนอกซับคิวรี ปกติ CALL จะตัดแถวด้านนอกออกเมื่อซับคิวรีไม่คืนค่าแถว และคูณเมื่อซับคิวรีคืนหลายแถว
OPTIONAL CALL รักษาแถวด้านนอกที่มี NULL คอลัมน์ซับคิวรีเมื่อซับคิวรีไม่คืนค่าแถว
MATCH (p:Person)
CALL {
MATCH (p)-[:knows]->(friend:Person)
RETURN count(*) AS friendCount
}
RETURN p.firstName, friendCount
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคําค้นหาย่อยแบบอินไลน์ โปรดดูคู่มือภาษา GQL
กรอง
เก็บแถวที่ตรงกับเงื่อนไข
วากยสัมพันธ์:
FILTER [ WHERE ] <predicate>
...
ตัวอย่าง:
MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคําสั่ง FILTER โปรดดูคู่มือภาษา GQL
สั่งซื้อโดย
เรียงลําดับผลลัพธ์
วากยสัมพันธ์:
ORDER BY <expression> [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ], ...
...
ตัวอย่าง:
MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC NULLS LAST, n.firstName ASC
การวาง null ไม่ขึ้นกับทิศทางการเรียงลําดับ ค่าเริ่มต้นคือ NULLS LAST สําหรับทั้ง ASC และ DESC; ระบุ NULLS FIRST ให้วางค่า null ไว้ก่อนค่าที่ไม่เป็น null
สําคัญ
ลําดับแถวที่ร้องขอจะรับประกันว่าจะคงอยู่ทันทีหลังจากคําสั่งก่อนหน้า 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
NEXT
เริ่มขั้นตอนการสืบค้นอีกครั้ง เฉพาะคอลัมน์ที่ส่งคืนโดยขั้นตอนก่อนหน้าเท่านั้นที่จะสามารถใช้งานได้หลังจากNEXT
วากยสัมพันธ์:
<query stage>
RETURN <columns>
NEXT
<query stage>
ตัวอย่าง:
RETURN 1 AS value
NEXT
RETURN value + 1 AS nextValue
ทั้งสองขั้นตอนสามารถมีบล็อกคําสั่งค้นหารวมกันได้ สหภาพจะถูกประเมินภายในขั้นตอนนั้นก่อนที่ผลลัพธ์จะข้าม NEXT ขอบเขต
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับ NEXT, ดูคู่มือภาษา GQL
คำสั่งแบบมีเงื่อนไข
ส่งเส้นทางแต่ละแถวอินพุตไปยังสาขาแรก WHEN ที่พรีดิเคตประเมินค่าเป็น TRUE.
วากยสัมพันธ์:
WHEN <predicate> THEN <linear query statement or { query statements }>
[ WHEN <predicate> THEN <linear query statement or { query statements }> ... ]
[ ELSE <linear query statement or { query statements }> ]
พรีดิเคตต้องเป็นบูลีนและประเมินตามลําดับ
FALSE และ UNKNOWN ตกลงไปสู่กิ่งถัดไป ถ้าไม่มีสาขาตรงกันและไม่มี ELSE, แถวอินพุตจะถูกละเว้น เงื่อนไขหลังจากจับคู่ครั้งแรกและสาขาที่ไม่ได้เลือกจะไม่ถูกประเมิน
RETURN 'Alice' AS name, 19900101u AS birthday
NEXT
WHEN birthday < 20000101u THEN
RETURN name, 'Before 2000' AS era
ELSE
RETURN name, '2000 or later' AS era
ทุกสาขาต้องคืนชื่อคอลัมน์เดียวกันกับชนิดข้อมูลที่เข้ากันได้ ครอบสาขาด้วยวงเล็บเมื่อมีโปรซีเยอร์ซ้อนกัน
สําหรับข้อมูลเพิ่มเติม ดูที่ คําสั่งเงื่อนไข
UNION
รวมผลลัพธ์ของบล็อกคําสั่งค้นหาที่สมบูรณ์
วากยสัมพันธ์:
<query block>
UNION [ DISTINCT | ALL ]
<query block>
ลบUNIONUNION DISTINCTและลบแถวที่ซ้ํากันออก
UNION ALL รักษาแถวที่ซ้ํากัน แต่ละบล็อกคําสั่งค้นหาต้องคืนค่าชุดชื่อคอลัมน์เดียวกันที่มีชนิดข้อมูลที่เข้ากันได้
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับสหภาพแรงงาน โปรดดูคู่มือภาษาของ 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]->() -- Bind a path variable
MATCH REPEATABLE ELEMENTS (a)->(b) -- Explicit default match mode
MATCH DIFFERENT EDGES (a)->(b), (a)->(c)
MATCH ALL TRAIL (a)->{1,4}(b) -- Every edge-unique path
MATCH p = ANY SHORTEST (a)->{1,4}(b) -- One shortest path per endpoint pair
WALK เป็นโหมดเส้นทางเริ่มต้นและอนุญาตให้โหนดและขอบซ้ําได้
TRAIL ป้องกันการเกิดขอบซ้ํา
SIMPLE ป้องกันโหนดซ้ํา ยกเว้นรอบปิดจากต้นจนจบ และ ACYCLIC ป้องกันโหนดที่ซ้ําทั้งหมด โหมดที่ไม่ซ้ํากันของโหนดทั้งสองยังป้องกันการซ้ําซ้อนของขอบ เพราะการใช้ขอบซ้ําจะทําให้โหนดปลายทางซ้ํากัน
ALL เป็นการค้นหาเส้นทางเริ่มต้น
ANY SHORTEST คืนค่าเส้นทางที่สั้นที่สุดหนึ่งเส้นทางสําหรับแต่ละคู่ต้นทาง-ปลายทาง และไม่เลือกเส้นทางที่ผูกกันอย่างแน่นอน
ตัวบ่งชี้ที่รองรับได้แก่ ตัว{n}กําหนดคงที่ , มี{m,n}ขอบเขต และ {,n}ไม่จํากัด {m,}, *, และ+ รูปแบบที่ไม่มีขอบเขต ALL WALK ไม่รองรับ; ใช้โหมดเส้นทางสิ้นสุด Unbounded ANY SHORTEST WALK มีข้อจํากัดเพิ่มเติมเกี่ยวกับรูปร่างและค่าเส้นทาง สําหรับรายละเอียด ดูที่รูปแบบกราฟ GQL
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเส้นทาง ให้ดูรูปแบบกราฟ
รูปแบบหลายรูปแบบ
ใช้รูปแบบหลายรูปแบบเพื่อให้ตรงกับโครงสร้างกราฟที่ไม่ใช่เชิงเส้นที่ซับซ้อนในคิวรีเดียว
(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, -17d
BOOL -- TRUE, FALSE, UNKNOWN
ZONED DATETIME -- ZONED_DATETIME('2023-01-15T10:30:00Z')
dคําต่อท้าย or D สร้างลิเทFLOAT64อรัลโดยประมาณ เลขชี้กําลังที่ไม่มีคําลงท้ายก็สร้าง FLOAT64 ค่าขึ้นมาเช่นกัน
f
Fคําต่อท้ายและคําต่อท้ายตามตัวอักษรยังไม่รองรับในตอนนี้
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับชนิดพื้นฐาน ดูค่า 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
ชนิดค่าทั้งหมดจะเป็นค่าว่างได้ (รวมถึงค่า null) หรือวัสดุ (ไม่รวม)
ตามค่าเริ่มต้น ชนิดจะเป็น null ได้เว้นแต่ว่าคุณจะระบุ NOT NULLอย่างชัดเจน
STRING NOT NULL -- Material (Non-nullable) string type
INT64 -- Nullable (default) integer type
ตัวดําเนินการนิพจน์
แบบมีเงื่อนไข
นิพจน์ง่าย CASE ๆ จะเปรียบเทียบนิพจน์หนึ่งกับค่าหนึ่งค่าหรือมากกว่า
CASE expr WHEN val THEN val ELSE val END -- Simple CASE
NULLIF(a, b) -- NULL if a = b
คําค้นหา CASE WHEN <predicate> ไม่รองรับ ใช้ คําสั่งเงื่อนไข เพื่อกําหนดเส้นทางแถวตามพรีดิเคต
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับนิพจน์เงื่อนไข ให้ดูนิพจน์ GQL และฟังก์ชัน
Comparison
ตัวดําเนินการเปรียบเทียบเปรียบเทียบค่าและตรวจสอบความเท่ากัน ลําดับ หรือค่าว่าง
=, <>, <, <=, >, >= -- Standard comparison
IS NULL, IS NOT NULL -- Null checks
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับเพรดิเคตการเปรียบเทียบ โปรดดูนิพจน์ GQL และฟังก์ชัน
ตรรกะ
ตัวดําเนินการเชิงตรรกะรวมหรือลบเงื่อนไขบูลีนในคิวรี
AND, OR, NOT, XOR -- Boolean logic
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับนิพจน์ตรรกะ ให้ดูนิพจน์ GQL และฟังก์ชัน
มีอยู่
ทดสอบว่า subquery ของ procedure-form ส่งคืนอย่างน้อยหนึ่งแถวหรือไม่
EXISTS {
MATCH (p)-[:knows]->(friend:Person)
RETURN friend
}
EXISTS คืนค่าบูลีนที่ไม่เป็นค่า null ใช้เพื่อ NOT EXISTS ทดสอบว่าซับคิวรีไม่คืนค่าแถว คุณสามารถใช้ผลลัพธ์ใน WHERE หรือ FILTER, LET, , RETURN, ORDER BY, และ aggregate filter หรือนิพจน์ต้นทาง
EXISTS ไม่รองรับภายในตัวกรองพรีดิเคตรายการ
สําคัญ
รูปแบบเฉพาะรูปแบบกราฟ เช่น EXISTS { (p)-[:knows]->(friend) } และ EXISTS ((p)-[:knows]->(friend)) ไม่รองรับ ใช้แบบฟอร์มขั้นตอนที่แสดง MATCH ในตัวอย่างก่อนหน้า
ข้อควรระวัง
การรวมข้อมูลที่ไม่ได้จัดกลุ่ม เช่น จะ RETURN count(*) คืนค่าหนึ่งแถวแม้ว่ารูปแบบจะไม่ตรงกัน เนื่องจากEXISTSการทดสอบสําหรับแถว รูปแบบนั้นจึงประเมินค่าเป็นTRUE
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับ EXISTS, ดูที่ คําค้นหาย่อยการมีอยู่
เลขคณิต
ตัวดําเนินการทางคณิตศาสตร์ดําเนินการคํานวณตัวเลข
+, -, *, / -- Basic arithmetic operations
1.00m / 8.00m -- Exact result: 0.1250m
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับนิพจน์ทางคณิตศาสตร์ ให้ดู นิพจน์ GQL และฟังก์ชัน
รูปแบบสตริง
เพรดิเคตรูปแบบสตริงตรงกับสตริงย่อย คํานําหน้า หรือคําต่อท้ายในสตริง
n.firstName CONTAINS 'John' -- Has substring
n.browserUsed STARTS WITH 'Chrome' -- Starts with prefix
n.locationIP ENDS WITH '.1' -- Ends with suffix
MSFT.REGEXP_LIKE(n.firstName, '^jo', 'i') -- RE2 regular expression
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับเพรดิเคตรูปแบบสตริง ดูนิพจน์ GQL และฟังก์ชัน
การดําเนินการแสดงรายการ
สมาชิกการทดสอบการดําเนินการรายการ องค์ประกอบการเข้าถึง และความยาวรายการหน่วยวัด
n.gender IN ['male', 'female'] -- Membership test
n.tags[0] -- First element
size(n.tags) -- List length
ALL(x IN n.tags WHERE x <> '') -- Every element matches
ANY(x IN n.tags WHERE x = 'gql') -- At least one element matches
NONE(x IN n.tags WHERE x = '') -- No element matches
SINGLE(x IN n.tags WHERE x = 'gql') -- Exactly one element matches
ฟังก์ชันพรีดิเคตในรายการจะคืนค่า TRUE, FALSE, หรือ UNKNOWN ตามผลลัพธ์ของตัวกรอง สําหรับรายการ ALL ว่าง และ NONE คืนค่า TRUE, ในขณะที่ ANY และ SINGLE คืนค่า FALSE. รายการต้นทางที่เป็นศูนย์จะคืนค่าUNKNOWN
การผูกกับองค์ประกอบจะอยู่ในฟิลเตอร์และสามารถเงาตัวแปรภายนอกได้ การรวมข้อมูลที่อยู่เหนือการ EXISTS ผูกในเครื่องและซับคิวรีภายในตัวกรองไม่รองรับ
สําหรับข้อมูลเพิ่มเติม ดูที่ ฟังก์ชัน List predicate
การเข้าถึงคุณสมบัติ
การเข้าถึงคุณสมบัติรับค่าของคุณสมบัติจากโหนดหรือขอบ
n.firstName -- Property access
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการเข้าถึงคุณสมบัติ โปรดดูนิพจน์ GQL และฟังก์ชัน
ฟังก์ชัน
ใช้ฟังก์ชันที่มีอยู่ในระบบเพื่อแปลงค่า ตรวจสอบองค์ประกอบกราฟ และรวมแถว
ฟังก์ชันเชิงตัวเลข
ฟังก์ชันเชิงตัวเลขจะคํานวณค่าตัวเลขหรือสร้างช่วงจํานวนเต็ม
abs(value) -- Absolute value; preserves the numeric type
power(base, exponent) -- Exponentiation; returns DOUBLE
sin(radians), cos(radians) -- Trigonometric functions
asin(value), acos(value) -- Inverse functions; value must be in [-1, 1]
degrees(radians) -- Convert radians to degrees
radians(degrees) -- Convert degrees to radians
range(start, end) -- Integer range with step 1
range(start, end, step) -- Integer range with a nonzero step
ฟังก์ชันตรีโกณมิติที่รองรับอื่น ๆ ได้แก่ TAN, COT, , ATAN, SINH, COSHและTANH ยกเว้น และ RANGEฟังก์ชันตัวเลขเหล่านี้จะABSคืนค่าDOUBLE
เรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันตัวเลขในนิพจน์และฟังก์ชันของ 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 inputs, including nulls
collect_one(p.firstName) -- Select one non-null value
collect_elements(p.roles) -- Concatenate list-valued inputs
count(DISTINCT expr) -- Remove duplicate expression values
count(*) FILTER (WHERE predicate LIMIT 10) -- Filter and limit this aggregate
หากไม่จัดกลุ่มคอลัมน์ การสืบค้นแบบรวมที่ไม่มีแถวอินพุตจะคืนค่า 0 , COUNTรายการว่างสําหรับ COLLECT_LIST และ COLLECT_ELEMENTS, และ null สําหรับ SUM, AVG, MIN, MAX, และCOLLECT_ONE อาร์กิวเมนต์ group-list ทําให้ aggregate เป็นแนวนอน
เรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันการรวมในนิพจน์ GQL และฟังก์ชัน
ฟังก์ชันสตริง
ฟังก์ชันสตริงช่วยให้คุณสามารถทํางานและวิเคราะห์ค่าสตริงได้
char_length(s) -- String length
upper(s), lower(s) -- Unicode case mapping
casefold(s) -- Unicode caseless form
normalize(s) -- Normalize a string to NFC
normalize(s, NFD) -- Normalize a string to NFD
trim(s) -- Trim spaces
trim(leading '_' from s) -- Trim one custom byte
string_join(list) -- Join with ", "
string_join(list, delimiter) -- Join with a custom delimiter
MSFT.REGEXP_COUNT(s, pattern) -- Count RE2 matches
MSFT.REGEXP_INSTR(s, pattern) -- Find a zero-based match position
MSFT.REGEXP_SUBSTR(s, pattern) -- Return matching text
MSFT.REGEXP_REPLACE(s, pattern, replacement) -- Replace matches
รูปแบบ replacement และ option ของ regex ต้องเป็นแบบตัวอักษร สําหรับลายเซ็น ธง และพฤติกรรม null ดูที่ ฟังก์ชันสตริง
ฟังก์ชันรายการ
ฟังก์ชันรายการช่วยให้คุณทํางานกับรายการ เช่น การตรวจสอบความยาวหรือการตัดแต่งขนาด
size(list) -- List length
trim(list, n) -- Trim a list to at most n elements
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันรายการ ให้ดู นิพจน์ GQL และฟังก์ชัน
ฟังก์ชันกราฟ
ฟังก์ชันกราฟช่วยให้คุณได้รับข้อมูลจากโหนด เส้นทาง และขอบ
labels(node) -- Get node labels
element_id(node_or_edge) -- Get an opaque element identifier
nodes(path) -- Get path nodes
edges(path) -- Get path edges
elements(path) -- Get all path nodes and edges
path_length(path) -- Get number of edges in a path
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันกราฟ โปรดดูนิพจน์ GQL และฟังก์ชัน
ฟังก์ชันชั่วคราว
ฟังก์ชันชั่วคราวช่วยให้คุณทํางานกับค่าวันที่และเวลา
CURRENT_TIMESTAMP -- Get the current zoned datetime
ZONED_DATETIME(string) -- Parse an ISO 8601 zoned datetime
DURATION(string) -- Parse an ISO 8601 day-time duration
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชัน temporal ดูนิพจน์ GQL และฟังก์ชัน
ฟังก์ชันทั่วไป
ฟังก์ชันทั่วไปช่วยให้คุณทํางานกับข้อมูลด้วยวิธีทั่วไป
coalesce(expr1, expr2, ...) -- Get the first non-null value
to_json_string(value) -- Convert value to JSON string
nullif(a, b) -- NULL if a = b, else a
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันทั่วไป ให้ดู นิพจน์ GQL และ ฟังก์ชัน
ตัวอย่างที่เน้นงาน
ใช้บทความวิธีทําเมื่อคุณต้องการรูปแบบคําสั่งที่สมบูรณ์และพร้อมปรับใช้:
- เขียนคําสั่ง GQL ทั่วไป สําหรับเพื่อนบ้าน, การข้ามหลายขั้นตอน, การเชื่อมต่อร่วมกัน และการตรวจสอบการมีอยู่
- กรองและรวมข้อมูลกราฟ สําหรับการกรองแถวและรูปแบบ การจัดกลุ่ม การรวมกลุ่ม และการส่งข้อมูลแบบมีเงื่อนไข
- เขียนคําสั่งค้นหารูปแบบกราฟ สําหรับโหมดเส้นทาง การค้นหาเส้นทาง การประกอบรูปแบบ และการจับคู่ตามต้องการ