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

บทความนี้เป็นการอ้างอิงด่วนสําหรับไวยากรณ์ 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 และ ฟังก์ชัน

ตัวอย่างที่เน้นงาน

ใช้บทความวิธีทําเมื่อคุณต้องการรูปแบบคําสั่งที่สมบูรณ์และพร้อมปรับใช้: