หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
บทความนี้มีการอ้างอิงที่ครอบคลุมสําหรับนิพจน์ GQL เพรดิเคต และฟังก์ชันภายในที่พร้อมใช้งานในกราฟในคิวรี่ Microsoft Fabric ใช้การอ้างอิงนี้เพื่อทําความเข้าใจวิธีการคํานวณ กรองผลลัพธ์ และแปลงข้อมูลในคิวรีกราฟของคุณ
สําหรับภาพรวมของภาษาคิวรี GQL และตัวอย่างคิวรีแบบต้นจนจบ โปรดดูคู่มือภาษา GQL สําหรับข้อมูลเกี่ยวกับชนิดข้อมูลที่ได้รับการสนับสนุนและไวยากรณ์สัญพจน์ ให้ดู ค่า 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
กฎการเข้ารหัสตัวเลข:
ใช้กฎต่อไปนี้ตามลําดับลําดับความสําคัญ:
- นิพจน์การเปรียบเทียบที่เกี่ยวข้องกับอาร์กิวเมนต์ของชนิดตัวเลขโดยประมาณ coerce อาร์กิวเมนต์ทั้งหมดให้เป็นชนิดตัวเลขโดยประมาณ
- นิพจน์การเปรียบเทียบที่เกี่ยวข้องกับอาร์กิวเมนต์ของชนิดจํานวนเต็มที่มีเครื่องหมายและไม่มีเครื่องหมายแสดงถึงอาร์กิวเมนต์ทั้งหมดให้เป็นชนิดจํานวนเต็มที่มีเครื่องหมาย
นิพจน์เชิงตรรกะ
รวมเงื่อนไขด้วยตัวดําเนินการตรรกะ:
-
AND(เงื่อนไขทั้งสองเป็นจริง) -
OR(เงื่อนไขอย่างใดอย่างหนึ่งเป็นจริง) -
NOT(เงื่อนไขค่าลบล้าง) -
XOR(การแยกเฉพาะ — จริง เมื่อตัวถูกดําเนินการตัวหนึ่งเป็นจริง)
ตัวอย่าง:
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'
กฎการเข้ารหัส:
ใช้กฎต่อไปนี้ตามลําดับลําดับความสําคัญ:
- นิพจน์ทางคณิตศาสตร์ที่เกี่ยวข้องกับอาร์กิวเมนต์ของชนิดตัวเลขโดยประมาณจะส่งกลับผลลัพธ์ของชนิดตัวเลขโดยประมาณ
- นิพจน์ทางคณิตศาสตร์ที่เกี่ยวข้องกับอาร์กิวเมนต์ของชนิดจํานวนเต็มที่มีเครื่องหมายและไม่มีเครื่องหมายส่งกลับผลลัพธ์ของชนิดจํานวนเต็มที่มีเครื่องหมาย
ตัวอย่าง:
LET birth_year = p.birthday / 10000
RETURN birth_year
การเข้าถึงคุณสมบัติ
เข้าถึงคุณสมบัติโดยใช้สวรรคจุด:
p.firstName
edge.creationDate
การเข้าถึงรายการ
เข้าถึงองค์ประกอบรายการโดยใช้การจัดทําดัชนีแบบฐานศูนย์:
interests[0] -- first element
interests[1] -- second element
ฟังก์ชันที่มีอยู่ภายใน
GQL สนับสนุนฟังก์ชันในตัวต่าง ๆ สําหรับการประมวลผลข้อมูลและการวิเคราะห์
ฟังก์ชันการรวม
ใช้ฟังก์ชันการรวมเพื่อประเมินนิพจน์ในชุดของแถวและรับค่าผลลัพธ์สุดท้ายโดยการรวมค่าที่คํานวณสําหรับแต่ละแถว กราฟสนับสนุนฟังก์ชันการรวมต่อไปนี้:
-
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
สําหรับความครอบคลุมของเทคนิคการรวมที่ครอบคลุม รวมถึงการผูกขอบความยาวตัวแปรและการรวมการรวมแนวนอน/แนวตั้ง โปรดดู เทคนิคการรวมขั้นสูง
นิพจน์เงื่อนไข
ใช้นิพจน์เงื่อนไขเพื่อส่งกลับค่าที่แตกต่างกันตามเงื่อนไข
กรณีที่ค้นหา:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END
กรณีอย่างง่าย:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
ELSE default_result
END
NULLIF:
NULLIF(a, b)แสดง NULL หาก a เท่ากับ bหรือระบบจะแสดงเป็นa
ตัวอย่าง:
MATCH (p:Person)
RETURN p.firstName,
CASE
WHEN p.gender = 'male' THEN 'M'
WHEN p.gender = 'female' THEN 'F'
ELSE 'Other'
END AS gender_code,
NULLIF(p.browserUsed, 'Unknown') AS browser
ฟังก์ชันสตริง
-
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)- ส่งกลับขอบจากค่าเส้นทาง -
elements(path)- ส่งกลับโหนดและขอบทั้งหมดจากเส้นทางเป็นรายการเดียวในลําดับเส้นทาง -
labels(node_or_edge)- ส่งกลับป้ายชื่อของโหนดหรือขอบเป็นรายการของสตริง -
path_length(path)- ส่งกลับจํานวนขอบในเส้นทาง
ตัวอย่าง:
MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues, path_length(p) AS hops
ฟังก์ชันรายการ
-
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 -
to_json_string(value)- แปลงค่าเป็นการแสดงสตริง JSON
ตัวอย่าง:
MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name,
to_json_string(p) AS person_json