ออกแบบ Schema กราฟใน Microsoft Fabric

Note

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

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

ใช้หลักเกณฑ์เหล่านี้ก่อนที่คุณจะเริ่มสร้างแบบจําลองในตัวแก้ไขแบบจําลองกราฟ สําหรับคําแนะนําทีละขั้นตอนเกี่ยวกับการสร้างโหนดและขอบ โปรดดูบทช่วยสอนกราฟ ตัวอย่างในบทความนี้ใช้ชุดข้อมูลตัวอย่าง Adventure Works

สำคัญ

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

ข้อกำหนดเบื้องต้น

ทําความเข้าใจประเภทโหนดและประเภท Edge

ก่อนที่คุณจะออกแบบ Schema ให้ทําความเข้าใจแนวคิดหลักเหล่านี้:

ชนิดโหนดกําหนดชนิดของเอนทิตีในกราฟของคุณ เช่น ลูกค้า ผลิตภัณฑ์ หรือใบสั่ง ประกอบด้วย:

  • ป้ายชื่อ ซึ่งเป็นชื่อที่ระบุประเภทของโหนดนี้ ตัวอย่างเช่น: Customer คุณใช้ป้ายชื่อในแบบสอบถามเพื่ออ้างถึงโหนดของชนิดนี้
  • ตารางการแม็ป ซึ่งเป็นตารางเลคเฮาส์ที่ให้ข้อมูลต้นทางสําหรับชนิดโหนด ตัวอย่างเช่น ตาราง adventureworks_customers
  • คอลัมน์หลักที่ระบุแต่ละโหนดที่ไม่ซ้ํากัน (รหัสที่มีป้ายกํากับในตัวแก้ไขแบบจําลองกราฟ) ตัวอย่างเช่น: CustomerID_K
  • คุณสมบัติ ซึ่งเป็นคอลัมน์จากตารางที่กลายเป็นแอตทริบิวต์ในแต่ละโหนด ตัวอย่างเช่น FirstName, , LastNameและ EmailAddress.

โหนดเป็นอินสแตนซ์แต่ละรายการของชนิดโหนด - หนึ่งแถวในตารางการแมป ตัวอย่างเช่น แต่ละแถวใน adventureworks_customers จะกลายเป็น Customer โหนด

ประเภท Edge กําหนดประเภทของความสัมพันธ์ระหว่างโหนดสองประเภท ประกอบด้วย:

  • ป้ายชื่อ ซึ่งเป็นชื่อที่ระบุประเภทของความสัมพันธ์นี้ ตัวอย่างเช่น: purchases
  • ตารางการแม็ปที่มีข้อมูลความสัมพันธ์ระหว่างโหนดต้นทางและโหนดเป้าหมาย ตัวอย่างเช่น ตาราง adventureworks_orders
  • ประเภทโหนดต้นทางและประเภทโหนดเป้าหมายที่เอดจ์เชื่อมต่อ ตัวอย่างเช่น Customer เป็นแหล่งที่มาและเป็น Order เป้าหมาย

เอดจ์คืออินสแตนซ์แต่ละรายการของประเภทเอดจ์ - หนึ่งแถวในตารางการแมปที่เชื่อมต่อโหนดเฉพาะสองโหนด

Note

ในตัวแก้ไขโมเดลกราฟ ปุ่ม เพิ่มโหนด และ เพิ่มขอบ จะสร้างประเภทโหนดและประเภทขอบ ไม่ใช่โหนดหรือขอบแต่ละโหนด

ระบุเอนทิตีและความสัมพันธ์

เริ่มต้นด้วยการระบุ เอนทิตี (สิ่งของ) และ ความสัมพันธ์ (การเชื่อมต่อ) ในข้อมูลของคุณ เอนทิตีกลายเป็นชนิดโหนด การเชื่อมต่อระหว่างเอนทิตีกลายเป็นชนิดเอดจ์

ถามคําถามเหล่านี้เกี่ยวกับตารางต้นทางของคุณ:

  • เอนทิตีหลักคืออะไร? แถวที่แสดงถึงสิ่งต่าง ๆ ในโลกแห่งความเป็นจริงคือตัวเลือกสําหรับชนิดโหนด ตัวอย่างเช่น ลูกค้า สินค้า คําสั่งซื้อ และพนักงาน
  • เอนทิตีเหล่านี้เกี่ยวข้องกันอย่างไร? คอลัมน์ที่อ้างอิงแถวในตารางอื่น (คีย์นอก) จะแนะนําชนิดขอบ ตัวอย่างเช่น CustomerID_FK ใน orders ตารางชี้ไปที่ customers ตาราง ซึ่งแนะนําการสร้างแบบจําลอง purchases ขอบ
  • มีเอนทิตีแบบฝังตัวหรือไม่? คอลัมน์ภายในตารางอาจแสดงถึงเอนทิตีที่แตกต่างกันที่ควรค่าแก่การแยกออกเป็นชนิดโหนดของตัวเอง สําหรับตัวอย่าง โปรดดู เลือกประเภทโหนด สําหรับคําแนะนําทีละขั้นตอน โปรดดู เพิ่มโหนดและ Edge หลายชนิดจากตารางการแม็ปเดียว

เลือกประเภทโหนด

สร้างชนิดโหนดสําหรับแต่ละเอนทิตีที่คุณต้องคิวรีหรือสํารวจอย่างอิสระ ใช้หลักเกณฑ์เหล่านี้:

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

ตัวอย่าง: ในชุด Country ข้อมูล Adventure Works เริ่มต้นเป็นคอลัมน์บน employees ตาราง หากคุณต้องการค้นหา "พนักงานคนใดอาศัยอยู่ในประเทศเดียวกัน" หรือ "ประเทศใดมีพนักงานมากที่สุด" ให้แยกข้อมูล Country เป็นชนิดโหนดของตัวเอง หากคุณต้องการแสดงประเทศของพนักงานเป็นป้ายกํากับเท่านั้น ให้ปล่อยให้เป็นทรัพย์สิน

เลือกคอลัมน์หลัก

โหนดทุกประเภทต้องใช้คอลัมน์คีย์ (หรือคีย์ผสม) ที่ระบุแต่ละโหนดโดยไม่ซ้ํากัน เลือกคีย์อย่างระมัดระวัง:

  • ใช้ตัวระบุที่ไม่ซ้ํากันที่มีอยู่ จากตารางต้นทางของคุณ ตัวอย่างเช่น CustomerID_K หรือ ProductID_K
  • หลีกเลี่ยงคีย์ตัวแทนที่ขาดความหมายทางธุรกิจ เว้นแต่จะไม่มีคีย์ธรรมชาติ ตัวอย่างเช่น ต้องการ CustomerID หมายเลขแถวที่เพิ่มขึ้นโดยอัตโนมัติ
  • ใช้คีย์ผสม เมื่อคอลัมน์เดียวไม่รับประกันความไม่ซ้ํากัน ตัวอย่างเช่น โห ProductVersion นดอาจต้องการทั้ง และ ProductIDVersionNumber เป็นคีย์
  • จับคู่ชนิดข้อมูล ระหว่างคอลัมน์คีย์และคอลัมน์คีย์นอกที่ใช้ในการแม็ปขอบ ประเภทที่ไม่ตรงกันทําให้เกิดความล้มเหลวในการสร้างขอบ

เคล็ดลับ

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

เลือกประเภทขอบ

ประเภท Edge กําหนดความสัมพันธ์ระหว่างชนิดโหนด เอดจ์แต่ละประเภทจะเชื่อมต่อประเภทโหนดต้นทางกับประเภทโหนดเป้าหมายผ่านตารางการแมป

ปฏิบัติตามหลักเกณฑ์เหล่านี้:

  • ใช้ป้ายกํากับสื่อความหมาย ที่อ่านเป็นคํากริยาหรือวลีคํากริยา ตัวอย่างเช่น purchases, , sells, livesInและbelongsTo ขอบที่มีชื่อดีทําให้การสืบค้นอ่านง่ายขึ้น
  • พิจารณาทิศทางอย่างรอบคอบ ขอบในกราฟถูกกําหนดทิศทาง เลือกทิศทางที่แสดงถึงความสัมพันธ์ในโลกแห่งความเป็นจริงได้ดีที่สุด ตัวอย่างเช่น Customer --การซื้อ ->Order อ่านได้อย่างเป็นธรรมชาติมากกว่า Order --purchasedBy->Customer
  • ตั้งชื่อที่แตกต่างกันให้กับประเภท Edge ที่เชื่อมต่อคู่ประเภทโหนดต่างๆ ถ้าทั้ง "พนักงานขายคําสั่งซื้อ" และ "ใบสั่งซื้อของลูกค้า" เชื่อมต่อกับ Orderให้ตั้งชื่อและsellspurchasesแทนที่จะให้ป้ายกํากับเดียวกัน สําหรับข้อมูลเพิ่มเติม โปรดดู ข้อจํากัดในการสร้าง Edge

เพิ่มคุณสมบัติให้กับประเภทขอบ

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

เมื่อต้องการเพิ่มคุณสมบัติ ให้ดับเบิลคลิกที่ชนิดขอบในตัวแก้ไขแบบจําลองกราฟเพื่อเปิดกล่องโต้ตอบ แก้ไข Schema ขอบ เลือก เพิ่มคุณสมบัติ แล้วเลือกคอลัมน์จากตารางการแม็ป

เมื่อใดที่ควรเพิ่มคุณสมบัติขอบ: หากคอลัมน์ตอบว่า "เท่าไหร่?", "เมื่อไหร่" หรือ "ในทางใด" เกี่ยวกับการเชื่อมต่อระหว่างสองโหนด คอลัมน์นั้นจะอยู่บนขอบ ไม่ใช่บนโหนดใดโหนดหนึ่ง

ตัวอย่าง: ในชุดข้อมูล Adventure Works เอcontainsดจ์จะเชื่อมต่อOrderProductผ่านตาราง adventureworks_orders คอลัมน์เช่น OrderQty, UnitPriceและ LineTotal อธิบายความสัมพันธ์ - จํานวนผลิตภัณฑ์ที่อยู่ในลําดับที่เฉพาะเจาะจง ในราคาเท่าใด คอลัมน์ชอบ OrderDate หรือ ShipDate อธิบายลําดับเองและอยู่ใน Order ชนิดโหนด ไม่ใช่บนขอบ

สำคัญ

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

ลบคุณสมบัติที่ไม่จําเป็น

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

Note

ประเภทขอบทํางานแตกต่างกัน - เริ่มต้นโดยไม่มีคุณสมบัติ คุณเพิ่มเฉพาะคุณสมบัติที่คุณต้องการด้วยตนเองโดยใช้ปุ่ม เพิ่มคุณสมบัติ ในกล่องโต้ตอบ แก้ไข Schema ขอบ

สําหรับโหนดแต่ละประเภท ให้เก็บเฉพาะคุณสมบัติที่:

  • จําเป็นสําหรับความเป็นเอกลักษณ์ของโหนด (คอลัมน์หลัก)
  • ใช้ใน WHERE ตัวกรองหรือการ RETURN ฉายภาพในคิวรีของคุณ
  • จําเป็นสําหรับการวิเคราะห์ดาวน์สตรีมหรือการแสดงภาพ

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

เลือกประเภทข้อมูล

เลือกประเภทข้อมูลที่เฉพาะเจาะจงที่สุดสําหรับแต่ละพร็อพเพอร์ตี้ ชนิดที่เหมาะสมจะปรับปรุงทั้งประสิทธิภาพการจัดเก็บข้อมูลและประสิทธิภาพการสืบค้น:

  • ใช้ INT หรือ UINT64 สําหรับตัวระบุตัวเลขและการนับ การเปรียบเทียบตัวเลขเร็วกว่าการเปรียบเทียบสตริง
  • ใช้ ZONED DATETIME สําหรับการประทับเวลาแทนวันที่ที่จัดรูปแบบสตริง
  • ใช้สําหรับBOOLEANแฟล็กจริง/เท็จแทนค่าสตริง เช่น "yes" หรือ"no"

สําหรับรายการชนิดที่ได้รับการสนับสนุนทั้งหมด โปรดดู ข้อจํากัดปัจจุบัน — ชนิดข้อมูล

รูปแบบตารางเป็นกราฟทั่วไป

ตารางต่อไปนี้สรุปวิธีที่โครงสร้างข้อมูลแบบตารางทั่วไปแปลเป็นองค์ประกอบกราฟ:

โครงสร้างแบบตาราง ผลลัพธ์กราฟ ตัวอย่าง
หนึ่งต่อกลุ่ม: ตารางผู้ปกครอง + ตารางลูกพร้อมคีย์ต่างประเทศ โหนดสองประเภทเชื่อมต่อกันด้วยประเภทขอบ Customer -- การซื้อ-->Order
กลุ่มต่อกลุ่ม: ตารางรวมที่เชื่อมโยงสองตาราง ประเภทขอบระหว่างโหนดสองประเภท Vendor -- ผลิต-->Product
เอนทิตีแบบฝังตัว: คอลัมน์ที่แสดงถึงเอนทิตีที่ใช้ร่วมกัน ประเภทโหนดที่แยกออกมาพร้อมขอบ Employee -- livesIn-->Country
ลําดับชั้น: ห่วงโซ่ของตารางหลัก-ลูก ประเภทโหนดที่เชื่อมโยงด้วยขอบในแต่ละระดับ Product -- isOfType-->Subcategory --เป็นของ-->Category

สําหรับคําแนะนําทีละขั้นตอนของรูปแบบเอนทิตีแบบฝังตัว โปรดดู เพิ่มโหนดและเอดจ์หลายชนิดจากตารางการแม็ปเดียว

เปลี่ยน Schema กราฟของคุณ

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

วิธีเปลี่ยนสคีมากราฟ

  1. ในพื้นที่ทํางานของคุณ ให้สร้างรายการกราฟใหม่ที่เชื่อมต่อกับเลคเฮาส์เดียวกัน
  2. ในตัวแก้ไขโมเดลกราฟ ให้เพิ่มชนิดโหนดและประเภทขอบที่คุณต้องการ รวมถึงคุณสมบัติใหม่หรือที่แก้ไข
  3. กําหนดค่าคอลัมน์หลักและการแม็ปขอบ ตรวจสอบให้แน่ใจว่าชนิดข้อมูลตรงกันระหว่างคอลัมน์หลักและคอลัมน์คีย์นอก
  4. เลือก บันทึก เพื่อนําเข้าข้อมูล และสร้างกราฟใหม่
  5. อัปเดตชุดคิวรีใดๆ ให้ชี้ไปยังกราฟใหม่
  6. หลังจากที่คุณตรวจสอบแล้วว่ากราฟใหม่ทํางานตามที่คาดไว้แล้ว ให้ลบรายการกราฟต้นฉบับถ้าคุณไม่ต้องการ