แชร์ผ่าน


นิพจน์ GQL เพรดิเคต และฟังก์ชัน

Note

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

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

สัญพจน์

สัญพจน์เป็นนิพจน์แบบง่ายที่ประเมินโดยตรงไปยังค่าที่ระบุ สัญพจน์ของค่าแต่ละชนิดจะอธิบายโดยละเอียดในค่า GQL และชนิดค่า

ตัวอย่าง:

1
1.0d
TRUE
"Hello, graph!"
[ 1, 2, 3 ]
NULL

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

เพรดิเคต

เพรดิเคตคือนิพจน์บูลีนซึ่งมักใช้ในการกรองผลลัพธ์ในคิวรี GQL ซึ่งจะประเมินเป็น TRUE, FALSEหรือ UNKNOWN (null)

ข้อควรระวัง

เมื่อใช้เป็นตัวกรอง เพรดิเคตจะเก็บเฉพาะรายการเหล่านั้นที่เพรดิเคตประเมินเป็นTRUE

เพรดิเคตการเปรียบเทียบ

เปรียบเทียบค่าโดยใช้ตัวดําเนินการเหล่านี้:

  • = (เท่ากับ)
  • <> (ไม่เท่ากับ)
  • < (น้อยกว่า)
  • > (มากกว่า)
  • <= (น้อยกว่าหรือเท่ากับ)
  • >= (มากกว่าหรือเท่ากับ)

GQL ใช้ตรรกะแบบสามค่าที่การเปรียบเทียบกับค่าส่งกลับ UNKNOWNnull :

นิพจน์ ผลลัพธ์
5 = 5 TRUE
5 = 3 FALSE
5 = NULL UNKNOWN
NULL = NULL UNKNOWN

สําหรับพฤติกรรมการเปรียบเทียบเฉพาะ โปรดดูเอกสารสําหรับค่าแต่ละชนิดในค่า GQL และชนิดของค่า

ตัวอย่าง:

MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915
RETURN p.firstName

กฎการเข้ารหัสตัวเลข:

ตามลําดับลําดับความสําคัญ:

  1. นิพจน์การเปรียบเทียบที่เกี่ยวข้องกับอาร์กิวเมนต์ของชนิดตัวเลขโดยประมาณ coerce อาร์กิวเมนต์ทั้งหมดให้เป็นชนิดตัวเลขโดยประมาณ
  2. นิพจน์การเปรียบเทียบที่เกี่ยวข้องกับอาร์กิวเมนต์ของชนิดจํานวนเต็มที่มีเครื่องหมายและไม่มีเครื่องหมายแสดงถึงอาร์กิวเมนต์ทั้งหมดให้เป็นชนิดจํานวนเต็มที่มีเครื่องหมาย

นิพจน์เชิงตรรกะ

รวมเงื่อนไขด้วยตัวดําเนินการตรรกะ:

  • AND (เงื่อนไขทั้งสองเป็นจริง)
  • OR (เงื่อนไขอย่างใดอย่างหนึ่งเป็นจริง)
  • NOT (เงื่อนไขค่าลบล้าง)

ตัวอย่าง:

MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915 AND p.firstName = 'John'
RETURN p.firstName || ' ' || p.lastName AS fullName

เพรดิเคตการมีอยู่ของคุณสมบัติ

หากต้องการตรวจสอบว่ามีคุณสมบัติอยู่หรือไม่ ให้ใช้:

p.locationIP IS NOT NULL
p.browserUsed IS NULL

Note

การพยายามเข้าถึงคุณสมบัติที่ไม่มีอยู่จริงที่รู้จักจะส่งผลให้เกิดข้อผิดพลาดทางไวยากรณ์ การเข้าถึงทรัพย์สินที่อาจไม่มีอยู่จริงจะประเมินเป็นnull การพิจารณาว่าคุณสมบัติเป็นที่รู้จักหรืออาจไม่มีอยู่จริงจะทําตามประเภทของโหนดหรือเอดจ์ที่เข้าถึง

เพรดิเคตสมาชิกรายการ

ทดสอบถ้าค่าอยู่ในรายการ:

p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']

เพรดิเคตรูปแบบสตริง

จับคู่สตริงโดยใช้การจับคู่รูปแบบ:

p.firstName CONTAINS 'John'
p.browserUsed STARTS WITH 'Chrome'
p.locationIP ENDS WITH '.1'

นิพจน์ทางคณิตศาสตร์

ใช้ตัวดําเนินการทางคณิตศาสตร์มาตรฐานที่มีค่าตัวเลข:

  • + (การเพิ่ม)
  • - (การลบ)
  • * (การคูณ)
  • / (การหาร)

ตัวดําเนินการทางคณิตศาสตร์เป็นไปตามหลักทั่วไปทางคณิตศาสตร์

ก่อนหน้า:

โดยทั่วไปแล้ว ตัวดําเนินการจะเป็นไปตามกฎที่กําหนดลําดับความสําคัญของตัวดําเนินการ เช่น * ก่อน+ ใช้วงเล็บเพื่อควบคุมลําดับการประเมินตามความจําเป็น

ตัวอย่าง:

(p.birthday < 20050915 OR p.birthday > 19651231) AND p.gender = 'male'

กฎการเข้ารหัส:

ตามลําดับลําดับความสําคัญ:

  1. นิพจน์ทางคณิตศาสตร์ที่เกี่ยวข้องกับอาร์กิวเมนต์ของชนิดตัวเลขโดยประมาณจะส่งกลับผลลัพธ์ของชนิดตัวเลขโดยประมาณ
  2. นิพจน์ทางคณิตศาสตร์ที่เกี่ยวข้องกับอาร์กิวเมนต์ของชนิดจํานวนเต็มที่มีเครื่องหมายและไม่มีเครื่องหมายส่งกลับผลลัพธ์ของชนิดจํานวนเต็มที่มีเครื่องหมาย

ตัวอย่าง:

LET birth_year = p.birthday / 10000
RETURN birth_year

การเข้าถึงคุณสมบัติ

เข้าถึงคุณสมบัติโดยใช้สวดมนต์:

p.firstName
edge.creationDate

การเข้าถึงรายการ

เข้าถึงองค์ประกอบรายการโดยใช้การจัดทําดัชนีตามศูนย์:

interests[0]    -- first element
interests[1]    -- second element

ฟังก์ชันที่มีอยู่ภายใน

GQL สนับสนุนฟังก์ชันในตัวต่าง ๆ สําหรับการประมวลผลข้อมูลและการวิเคราะห์

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

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

  • count(*) - นับจํานวนแถว
  • sum(expression) - รวมค่าตัวเลข
  • avg(expression) - ค่าตัวเลขเฉลี่ย
  • min(expression) - ค้นหาค่าต่ําสุด
  • max(expression) - ค้นหาค่าสูงสุด
  • collect_list(expression) - รวบรวมค่าลงในรายการ

โดยทั่วไป ฟังก์ชันการรวมจะละเว้นค่า null และส่งกลับค่า null เสมอเมื่อไม่มีค่าป้อนเข้าของวัสดุ คุณสามารถใช้ coalesce เพื่อรับค่าเริ่มต้นอื่นได้: coalesce(sum(expr), 0) ข้อยกเว้นเดียวคือ count ฟังก์ชันการรวม ซึ่งนับค่าที่ไม่ใช่ null ที่ให้ไว้เสมอ โดยแสดงค่า 0 ถ้าไม่มีค่าใด ๆ ใช้ count(*) เพื่อรวมค่า null ในการนับจํานวนด้วย

ฟังก์ชันการรวมจะใช้ในสามวิธีที่แตกต่างกัน:

  • สําหรับการคํานวณ (แนวตั้ง) รวมทั่วทั้งตาราง
  • สําหรับการคํานวณ (แนวตั้ง) รวมผ่านตารางย่อยที่กําหนดโดยคีย์การจัดกลุ่ม
  • สําหรับการคํานวณ (แนวนอน) รวมผ่านองค์ประกอบของรายการกลุ่ม

การรวมแนวตั้ง:

-- Vertical aggregate over whole table
MATCH (p:Person)
RETURN count(*) AS total_people, avg(p.birthday) AS average_birth_year
-- Vertical aggregate with grouping
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name, count(*) AS population, avg(p.birthday) AS average_birth_year
GROUP BY c.name

ค่ารวมแนวนอน:

การรวมแนวนอนจะคํานวณผลรวมผ่านองค์ประกอบของตัวแปรรายการกลุ่มจากรูปแบบความยาวตัวแปร:

-- Horizontal aggregate over a group list variable
MATCH (p:Person)-[edges:knows]->{1,3}(:Person)
RETURN p.firstName, avg(edges.creationDate) AS avg_connection_date

การรวมแนวนอนจะมีความสําคัญมากกว่าการรวมแนวตั้งเสมอ เมื่อต้องการแปลงรายการกลุ่มเป็นรายการปกติ ให้ใช้collect_list(edges)

Note

สําหรับความครอบคลุมของเทคนิคการรวมที่ครอบคลุม รวมถึงการผูกขอบความยาวตัวแปรและการรวมการรวมแนวนอน/แนวตั้ง โปรดดู เทคนิคการรวมขั้นสูง

ฟังก์ชันสตริง

  • char_length(string) - ส่งกลับความยาวสตริง
  • upper(string)- ส่งกลับตัวแปรตัวพิมพ์ใหญ่ของสตริงที่ระบุ (US ASCII เท่านั้น)
  • lower(string)- ส่งกลับตัวแปรตัวพิมพ์เล็กของสตริงที่ระบุ (US ASCII เท่านั้น)
  • trim(string) - ลบช่องว่างนําหน้าและต่อท้ายออก
  • string_join(list, separator) - รวมองค์ประกอบรายการด้วยตัวคั่น

ตัวอย่าง:

MATCH (p:Person)
WHERE char_length(p.firstName) > 5
RETURN upper(p.firstName) AS name_upper

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

  • nodes(path) - ส่งกลับโหนดจากค่าเส้นทาง
  • edges(path) - ส่งกลับขอบจากค่าเส้นทาง
  • labels(node_or_edge) - ส่งกลับป้ายชื่อของโหนดหรือขอบเป็นรายการของสตริง

ตัวอย่าง:

MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues

ฟังก์ชันรายการ

  • size(list) - แสดงขนาดของค่ารายการ
  • trim(list,n) - ตัดแต่งรายการให้มีขนาดใหญ่ที่สุด n

ตัวอย่าง:

MATCH (p:Person)-[:hasInterest]->(t:Tag)
WHERE size(collect_list(t)) > 3
RETURN p.firstName, collect_list(t.name) AS interests

ฟังก์ชันชั่วคราว

  • zoned_datetime() - ส่งกลับวันที่เวลาโซนปัจจุบัน
  • zoned_datetime("2025-09-12T10:10:52Z") - ส่งกลับวันที่เวลาที่อยู่ในโซนที่กําหนดโดยอาร์กิวเมนต์ในรูปแบบ ISO 8601

ตัวอย่าง:

RETURN zoned_datetime() AS now

ฟังก์ชันทั่วไป

  • coalesce(value1, value2, ...) - ส่งกลับค่าแรกที่ไม่ใช่ค่า null

ตัวอย่าง:

MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name