ความสัมพันธ์ของแบบจำลองใน Power BI Desktop

บทความนี้มุ่งเป้าหมายไปที่เรื่อง ตัวสร้างแบบจำลองข้อมูลนำเข้าที่ทำงานกับ Power BI Desktop นี่เป็นหัวข้อการออกแบบแบบจำลองที่สำคัญ ซึ่งจำเป็นสำหรับการนำเสนอแบบจำลองที่ใช้งานง่าย แม่นยำ และเหมาะสมที่สุด

สำหรับการสนทนาอย่างลึกซึ้งเกี่ยวกับการออกแบบแบบจำลองที่เหมาะสมที่สุด รวมถึงบทบาทและความสัมพันธ์ของตาราง โปรดดูบทความ เข้าใจโครงสร้างแบบสตาร์และะความสำคัญของสำหรับ Power BI

วัตถุประสงค์ของความสัมพันธ์

กล่าวง่ายๆ คือความสัมพันธ์ Power BI เผยแพร่ตัวกรองที่ใช้ในคอลัมน์ของตารางแบบจำลองไปยังตารางแบบจำลองอื่นๆ ตัวกรองจะเผยแพร่ตราบใดที่มีเส้นทางความสัมพันธ์ที่ต้องติดตามซึ่งอาจเกี่ยวข้องกับการเผยแพร่ไปยังหลายตารางได้

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

ข้อสำคัญ

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

มาดูกันว่าความสัมพันธ์เผยแพร่ตัวกรองได้อย่างไรด้วยตัวอย่างภาพเคลื่อนไหว

ตัวอย่างภาพเคลื่อนไหวของการถ่ายทอดตัวกรองความสัมพันธ์

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

คิวรี — อาจสร้างด้วยการแสดงผลด้วยภาพการ์ด Power BI — คำขอปริมาณยอดขายรวมสำหรับรายการขายที่สร้างขึ้นสำหรับหมวดหมู่เดียว Cat-A และสำหรับปีเดียว CY2018 นี่คือเหตุผลที่ทำให้คุณสามารถเห็นตัวกรองที่ใช้กับตาราง หมวดหมู่ และ ปี ได้ ตัวกรองบนตาราง หมวดหมู่ เผยแพร่ไปยังตาราง ผลิตภัณฑ์ เพื่อแยกผลิตภัณฑ์สองรายการที่กำหนดให้กับหมวดหมู่ Cat-A จากนั้นตัวกรองตาราง ผลิตภัณฑ์ จะเผยแพร่ไปยังตาราง ยอดขาย เพื่อแยกแถวยอดขายเพียงสองแถวสำหรับผลิตภัณฑ์เหล่านี้ แถวยอดขายทั้งสองนี้แสดงยอดขายของผลิตภัณฑ์ที่กำหนดให้กับหมวดหมู่ Cat-A ปริมาณรวมทั้งหมดคือ 14 หน่วย ในเวลาเดียวกัน ตัวกรองตาราง ปี จะเผยแพร่เพื่อกรองตาราง ยอดขาย เพิ่มเติม ส่งผลให้มีเพียงยอดขายแถวเดียวสำหรับผลิตภัณฑ์ที่กำหนดให้กับหมวดหมู่ Cat-A และที่สั่งซื้อในปี CY2018 ค่าปริมาณที่ส่งกลับโดยคิวรีคือ 11 หน่วย โปรดทราบว่าเมื่อตัวกรองหลายตัวถูกนำไปใช้กับตาราง (เช่นตาราง ยอดขาย ในตัวอย่างนี้) จะเป็นการดำเนินการ AND เสมอโดยกำหนดให้เงื่อนไขทั้งหมดต้องเป็นจริง

ตารางแบบไม่ต่อเนื่อง

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

พารามิเตอร์ what-if ของ Power BI Desktop เป็นคุณลักษณะที่สร้างตารางแบบไม่เชื่อมต่อ สำหรับข้อมูลเพิ่มเติม โปรดดูที่บทความสร้างและใช้พารามิเตอร์เพื่อแสดงการแสดงผลด้วยภาพตัวแปรใน Power BI Desktop

คุณสมบัติของความสัมพันธ์

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

หมายเหตุ

ซึ่งเป็นไปไม่ได้ที่จะเชื่อมโยงคอลัมน์หนึ่งกับอีกคอลัมน์ที่แตกต่างกัน ในตารางเดียวกัน ในบางครั้งอาจสับสนกับความสามารถในการกำหนดข้อจำกัดของคีย์นอก (foreign key) ในฐานข้อมูลเชิงสัมพันธ์นั่นคือการอ้างอิงตัวเองของตาราง แนวคิดของฐานข้อมูลเชิงสัมพันธ์นี้สามารถใช้เพื่อจัดเก็บความสัมพันธ์แบบ พ่อ-ลูก (ตัวอย่างเช่น แต่ละเรกคอร์ดพนักงานเชื่อมโยงกับพนักงาน "รายงานถึง") การสร้างลำดับชั้นของแบบจำลองโดยยึดตามความสัมพันธ์ประเภทนี้ไม่สามารถแก้ไขได้ด้วยการสร้างความสัมพันธ์ของแบบจำลอง เพื่อให้สามารถทำสิ่งนี้ได้ โปรดดูบทความ ฟังก์ชันหลักและรอง

คาร์ดินาลลิตี้

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

หมายเหตุ

หากการรีเฟรชข้อมูลพยายามโหลดค่าที่ซ้ำกันลงในคอลัมน์ด้าน "หนึ่ง" การรีเฟรชข้อมูลทั้งหมดจะล้มเหลว

ตัวเลือกทั้งสี่—พร้อมกับเครื่องหมายแบบย่อของแต่ละตัวเลือก—อธิบายไว้ในรายการหัวข้อย่อยต่อไปนี้:

  • หนึ่งต่อกลุ่ม (1:*)
  • กลุ่มต่อหนึ่ง (*:1)
  • หนึ่งต่อหนึ่ง (1:1)
  • กลุ่มต่อกลุ่ม (*:*)

เมื่อคุณสร้างความสัมพันธ์ใน Power BI Desktop ตัวออกแบบจะตรวจจับและตั้งค่าประเภทของคาร์ดินาลลิตี้โดยอัตโนมัติ ตัวออกแบบคิวรีแบบจำลองเพื่อทราบว่าคอลัมน์ใดบ้างที่มีค่าที่ไม่ซ้ำกัน สำหรับแบบจำลองนำเข้า จะใช้สถิติของหน่วยเก็บข้อมูลภายใน สำหรับแบบจำลอง DirectQuery จะส่งคิวรีการทำโปรไฟล์ไปยังแหล่งข้อมูล อย่างไรก็ตามบางครั้งอาจเกิดข้อผิดพลาดได้ สิ่งนี้เกิดขึ้นเนื่องจากตารางยังไม่สามารถโหลดข้อมูลได้ หรือเนื่องจากคอลัมน์ที่คุณคาดว่าจะมีค่าซ้ำกันในปัจจุบันมีค่าที่ไม่ซ้ำกัน ในกรณีใดกรณีหนึ่ง คุณสามารถอัปเดตประเภทของคาร์ดินาลลิตี้โดยระบุคอลัมน์ด้าน "หนึ่ง" ที่มีค่าที่ไม่ซ้ำกัน (หรือตารางยังไม่ได้โหลดแถวของข้อมูล)

ตัวเลือกคาร์ดินาลลิตี้แบบ หนึ่งต่อกลุ่ม และ กลุ่มต่อหนึ่ง นั้นเหมือนกันอย่างแท้จริง และก็เป็นประเภทของคาร์ดินาลลิตี้ที่พบบ่อยที่สุด

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

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

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

หมายเหตุ

ในขณะนี้ ประเภทของคาร์ดินาลลิตี้แบบกลุ่มต่อกลุ่มยังไม่ได้รับการสนับสนุนสำหรับแบบจำลองที่พัฒนาขึ้นสำหรับ Power BI Report Server

เคล็ดลับ

ในมุมมองแบบจำลอง Power BI Desktop คุณสามารถตีความประเภทของคาร์ดินาลลิตี้ของความสัมพันธ์ได้โดยดูที่ตัวบ่งชี้ (1 หรือ *) ที่ด้านแต่ละด้านของเส้นความสัมพันธ์ หากต้องการระบุว่าคอลัมน์ใดมีความสัมพันธ์แล้ว คุณจะต้องเลือก - หรือวางเคอร์เซอร์ไว้เหนือ - เส้นความสัมพันธ์เพื่อเน้นคอลัมน์

ทิศทางตัวกรองข้าม

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

ประเภทของคาร์ดินาลลิตี้ ตัวเลือกของตัวกรองข้าม
แบบหนึ่งต่อกลุ่ม (หรือกลุ่มต่อหนึ่ง) เดียว
ทั้งสอง
หนึ่งต่อหนึ่ง ทั้งสอง
กลุ่มต่อกลุ่ม เดียว (Table1 ไปยัง Table2)
เดียว (Table2 ไปยัง Table1)
ทั้งสอง

ทิศทางตัวกรองข้าม เดียว หมายถึง "ทิศทางเดียว" และ ทั้งสอง หมายถึง "ทั้งสองทิศทาง" ความสัมพันธ์ที่กรองในทั้งสองทิศทางโดยทั่วไปจะอธิบายว่าเป็น แบบสองทิศทาง

สำหรับความสัมพันธ์แบบหนึ่งต่อกลุ่ม ทิศทางตัวกรองข้ามจะมาจากด้าน "หนึ่ง" เสมอ และอาจเลือกมาจากด้าน "กลุ่ม" (แบบสองทิศทาง) สำหรับความสัมพันธ์แบบหนึ่งต่อหนึ่ง ทิศทางตัวกรองข้ามจะมาจากทั้งสองตารางเสมอ สุดท้ายสำหรับความสัมพันธ์แบบกลุ่มต่อกลุ่ม ทิศทางตัวกรองข้ามสามารถมาจากหนึ่งตารางหรือจากทั้งสองตารางได้ โปรดสังเกตว่าเมื่อประเภทของคาร์ดินาลลิตี้ประกอบด้วยด้าน "หนึ่ง" ตัวกรองนั้นจะเผยแพร่จากด้านนั้นเสมอ

เมื่อทิศทางตัวกรองข้ามได้รับการตั้งค่าเป็น ทั้งคู่ คุณสมบัติเพิ่มเติมจะพร้อมใช้งาน ซึ่งสามารถใช้การกรองแบบสองทิศทางได้เมื่อมีกฎการรักษาความปลอดภัยระดับแถว (RLS) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ RLS โปรดดูที่บทความการรักษาความปลอดภัยระดับแถว (RLS) ด้วย Power BI Desktop

การปรับเปลี่ยนทิศทางตัวกรองข้ามของความสัมพันธ์—ซึ่งรวมถึงการปิดใช้งานการเผยแพร่ตัวกรอง—ยังสามารถทำได้โดยการคำนวณแบบจำลอง ซึ่งทำได้โดยใช้ฟังก์ชัน CROSSFILTER DAX

ความสัมพันธ์แบบสองทิศทางสามารถส่งผลเสียต่อประสิทธิภาพการทำงานได้ นอกจากนี้ การพยายามกำหนดค่าความสัมพันธ์แบบสองทิศทางอาจส่งผลให้เกิดเส้นทางการเผยแพร่ตัวกรองที่ไม่ชัดเจน ในกรณีนี้ Power BI Desktop อาจล้มเหลวในการยอมรับการเปลี่ยนแปลงความสัมพันธ์ และจะแจ้งเตือนคุณด้วยข้อความแสดงข้อผิดพลาด อย่างไรก็ตามในบางครั้ง Power BI Desktop อาจอนุญาตให้คุณกำหนดเส้นทางความสัมพันธ์ที่ไม่ชัดเจนระหว่างตารางได้ มีการอธิบายกฎที่กำหนดความสำคัญซึ่งส่งผลต่อการตรวจหาความคลุมเครือและการแก้ปัญหาเส้นทางในภายหลังของบทความนี้ในหัวข้อ กฎที่กำหนดความสำคัญ

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

เคล็ดลับ

ในมุมมองแบบจำลอง Power BI Desktop คุณสามารถตีความทิศทางตัวกรองข้ามของความสัมพันธ์โดยสังเกตหัวลูกศรตามเส้นความสัมพันธ์ หัวลูกศรเดียวหมายถึง ตัวกรองทิศทางเดียวในทิศทางของหัวลูกศร หัวลูกศรคู่หมายถึง ความสัมพันธ์แบบสองทิศทาง

เปิดใช้งานความสัมพันธ์นี้

ซึ่งสามารถมีเส้นทางการเผยแพร่ตัวกรองที่ใช้งานอยู่ระหว่างตารางแบบจำลองสองตารางได้เพียงหนึ่งเส้นทางเท่านั้น อย่างไรก็ตามอาจเป็นไปได้ที่จะนำเส้นทางความสัมพันธ์เพิ่มเติมเข้ามา แม้ว่าจะต้องมีการกำหนดค่าสัมพันธ์เหล่านี้เป็น ไม่มีการใช้งาน ความสัมพันธ์ที่ไม่ใช้งานสามารถทำให้ใช้งานได้เฉพาะในระหว่างการประเมินผลการคำนวณแบบจำลองเท่านั้น ซึ่งทำได้โดยใช้ฟังก์ชัน USERELATIONSHIP DAX

สำหรับข้อมูลเพิ่มเติม โปรดดูคำแนะนำความแตกต่างระหว่างความสัมพันธ์ที่ใช้และไม่ได้ใช้งาน

เคล็ดลับ

ในมุมมองแบบจำลอง Power BI Desktop คุณสามารถตีความสถานะการใช้งานกับสถานะไม่ได้ใช้งานของความสัมพันธ์ได้ ความสัมพันธ์ที่ใช้งานอยู่จะแสดงด้วยเส้นทึบ ความสัมพันธ์ที่ไม่ใช้งานจะแสดงด้วยเส้นประ

ตั้งสมมุติฐานว่ามีกฎการอ้างอิง

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

คุณควรเปิดใช้งานคุณสมบัตินี้ทุกครั้งเมื่อมีข้อจำกัดของคีย์นอกในฐานข้อมูลอยู่ระหว่างสองตาราง เมื่อไม่มีข้อจำกัดของคีย์นอก คุณยังคงสามารถเปิดใช้งานคุณสมบัติที่ให้คุณมีความสมบูรณ์ของข้อมูลบางอย่างอยู่ได้

ข้อสำคัญ

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

สำหรับข้อมูลเพิ่มเติม โปรดดูบทความการตั้งค่าสมมติว่ามีความสมบูรณ์ของการอ้างอิง ใน Power BI Desktop

ฟังก์ชัน DAX ที่เกี่ยวข้อง

มีฟังก์ชัน DAX มากมายที่เกี่ยวข้องกับความสัมพันธ์ของแบบจำลอง มีการอธิบายแต่ละฟังก์ชันโดยย่อในรายการหัวข้อย่อยต่อไปนี้:

  • RELATED: ดึงค่าจากด้าน "หนึ่ง"
  • RELATEDTABLE: ดึงข้อมูลตารางของแถวจากด้าน "กลุ่ม"
  • USERELATIONSHIP: บังคับให้ใช้ความสัมพันธ์ของแบบจำลองที่ไม่ใช้งานแบบเฉพาะเจาะจง
  • CROSSFILTER: ปรับเปลี่ยนทิศทางตัวกรองข้ามของความสัมพันธ์ (เป็นหนึ่งหรือทั้งสอง) หรือปิดใช้งานการเผยแพร่ตัวกรอง (ไม่มี)
  • COMBINEVALUES: รวมสตริงข้อความสองรายการขึ้นไปเป็นสตริงข้อความเดียว วัตถุประสงค์ของฟังก์ชันนี้คือการสนับสนุนความสัมพันธ์ที่มีหลายคอลัมน์ในแบบจำลอง DirectQuery
  • TREATAS: ใช้ผลลัพธ์ของนิพจน์ตารางเป็นตัวกรองคอลัมน์จากตารางที่ไม่เชื่อมโยง
  • ฟังก์ชันหลักและรอง: ตระกูลของฟังก์ชันที่เกี่ยวข้องที่สามารถใช้ในการสร้างคอลัมน์จากการคำนวณเพื่อทำให้ลำดับชั้นแบบพ่อ-ลูก เป็นธรรมชาติ จากนั้นคุณสามารถใช้คอลัมน์เหล่านี้เพื่อสร้างลำดับชั้นแบบคงที่ได้

การประเมินผลความสัมพันธ์

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

ก่อนอื่นคุณจำเป็นต้องมีทฤษฎีการสร้างแบบจำลองบางอย่างเพื่อทำความเข้าใจการประเมินผลความสัมพันธ์อย่างสมบูรณ์

สำหรับแหล่งที่มาของแบบจำลองนำเข้าหรือ DirectQuery ข้อมูลทั้งหมดมาจากแคช Vertipaq หรือฐานข้อมูลต้นทาง ในทั้งสองอินสแตนซ์ Power BI สามารถระบุได้ว่ามีด้าน "หนึ่ง" ของความสัมพันธ์อยู่

แบบจำลองผสมสามารถประกอบด้วยตารางที่มาจากการใช้โหมดที่เก็บข้อมูลที่แตกต่างกัน (นำเข้า DirectQuery หรือคู่) หรือแหล่ง DirectQuery หลายแหล่ง แหล่งที่มาแต่ละแห่ง รวมถึงแคช Vertipaq ของข้อมูลนำเข้านั้นถือว่าเป็น กลุ่มแหล่งข้อมูล คุณสามารถจัดประเภทความสัมพันธ์ของแบบจำลองเป็น แบบภายในกลุ่มแหล่งข้อมูล หรือ แบบระหว่าง/ข้ามแหล่งข้อมูล ได้ ความสัมพันธ์แบบภายในกลุ่มแหล่งข้อมูลคือความสัมพันธ์ที่เกี่ยวข้องกับตารางสองตารางภายในกลุ่มแหล่งข้อมูล ในขณะที่ความสัมพันธ์แบบระหว่าง/ข้ามแหล่งข้อมูลเกี่ยวข้องกับตารางจากกลุ่มแหล่งข้อมูลที่แตกต่างกัน โปรดทราบว่าความสัมพันธ์ในแบบจำลอง Import หรือ DirectQuery นั้นเป็นแบบภายในกลุ่มแหล่งข้อมูลเสมอ

มาดูตัวอย่างของแบบจำลองผสมกัน

ตัวอย่างแบบจำลองผสมที่ประกอบด้วยกลุ่มแหล่งข้อมูลสองกลุ่ม

ในตัวอย่างนี้ แบบจำลองผสมประกอบด้วยกลุ่มแหล่งข้อมูลสองกลุ่ม: กลุ่มแหล่งข้อมูล Vertipaq และกลุ่มแหล่งข้อมูล DirectQuery กลุ่มแหล่งข้อมูล Vertipaq มีสามตาราง และกลุ่มแหล่งข้อมูล DirectQuery มีสองตาราง มีความสัมพันธ์แบบข้ามกลุ่มแหล่งข้อมูลหนึ่งความสัมพันธ์เพื่อเชื่อมโยงตารางในกลุ่มแหล่งข้อมูล Vertipaq ไปยังตารางในกลุ่มแหล่งข้อมูล DirectQuery

ความสัมพันธ์แบบธรรมดา

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

ในตัวอย่างต่อไปนี้ มีความสัมพันธ์แบบปกติสองความสัมพันธ์ ซึ่งทั้งสองมีเครื่องหมายเป็น R ความสัมพันธ์ดังกล่าวประกอบรวมด้วย ความสัมพันธ์แบบหนึ่งต่อกลุ่มที่อยู่ภายในกลุ่มแหล่งข้อมูล Vertipaq และความสัมพันธ์แบบหนึ่งต่อกลุ่มที่อยู่ภายในแหล่งข้อมูล DirectQuery

ตัวอย่างของแบบจำลองผสมที่ประกอบด้วยข้อมูลจากสองกลุ่มแหล่งข้อมูล ซึ่งมีเครื่องหมายความสัมพันธ์แบบธรรมดาที่ถูกทำเครื่องหมาย

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

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

หมายเหตุ

ความสัมพันธ์ที่ไม่ได้ใช้งานจะขยายด้วย แม้ว่าการคำนวณจะไม่ใช้ความสัมพันธ์นี้ก็ตาม ความสัมพันธ์แบบสองทิศทางไม่มีผลกระทบต่อการขยายตาราง

การขยายตารางจะเกิดขึ้นจากด้าน "กลุ่ม" ไปยังด้าน "หนึ่ง" โดยใช้ตรรกะ LEFT OUTER JOIN เมื่อไม่มีค่าที่จับคู่กันจากด้าน "กลุ่ม" ไปยังด้าน "หนึ่ง" แถวเสมือนที่ว่างเปล่าจะถูกเพิ่มลงในตารางด้าน "หนึ่ง"

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

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

มาดูกันว่าการขยายตารางทำงานอย่างไรด้วยตัวอย่างแบบเคลื่อนไหว

ตัวอย่างแบบเคลื่อนไหวของการขยายตาราง

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

ความสัมพันธ์แบบจำกัด

ความสัมพันธ์ของแบบจำลองเป็น แบบจำกัด เมื่อไม่มีการรับประกันว่ามีด้าน "หนึ่ง" ซึ่งอาจเป็นไปได้ด้วยเหตุผลสองประการ:

  • ความสัมพันธ์ใช้ประเภทของคาร์ดินาลลิตี้แบบกลุ่มต่อกลุ่ม (แม้ว่าหนึ่งคอลัมน์หรือทั้งสองคอลัมน์ประกอบด้วยค่าที่ไม่ซ้ำกัน)
  • ความสัมพันธ์เป็นแบบข้ามกลุ่มแหล่งข้อมูล (ซึ่งจะเป็นได้เฉพาะสำหรับแบบจำลองผสมเท่านั้น)

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

ตัวอย่างของแบบจำลองผสมที่ประกอบด้วยข้อมูลจากสองกลุ่มแหล่งข้อมูล ซึ่งมีเครื่องหมายความสัมพันธ์แบบจำกัดที่ถูกทำเครื่องหมาย

สำหรับแบบจำลองที่นำเข้า โครงสร้างข้อมูลจะไม่ถูกสร้างขึ้นสำหรับความสัมพันธ์แบบจำกัด ซึ่งหมายความว่าการรวมตารางจะต้องได้รับการแก้ไขในเวลาที่มีการคิวรี

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

มีข้อจำกัดเพิ่มเติมที่เกี่ยวข้องกับความสัมพันธ์แบบจำกัด:

  • ไม่สามารถใช้ฟังก์ชัน RELATED DAX เพื่อดึงค่าคอลัมน์ด้าน "หนึ่ง" ได้
  • การบังคับใช้ RLS มีข้อจำกัดของโทโพโลยี

หมายเหตุ

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

กฎที่กำหนดความสำคัญ

ความสัมพันธ์แบบสองทิศทางสามารถนำ—และเนื่องจากเส้นทางที่ไม่ชัดเจน—เส้นทางการเผยแพร่ตัวกรองระหว่างตารางแบบจำลองเข้ามาได้หลายเส้นทาง รายการต่อไปนี้แสดงกฎที่กำหนดความสำคัญซึ่ง Power BI ใช้สำหรับการตรวจหาความคลุมเครือและการแก้ปัญหาเส้นทาง:

  1. ความสัมพันธ์แบบกลุ่มต่อหนึ่งและแบบหนึ่งต่อหนึ่ง รวมถึงความสัมพันธ์แบบจำกัด
  2. ความสัมพันธ์แบบกลุ่มต่อกลุ่ม
  3. ความสัมพันธ์แบบสองทิศทาง ในทิศทางย้อนกลับ (เช่น จากด้าน "กลุ่ม")

การกำหนดลักษณะประสิทธิภาพ

รายการต่อไปนี้เรียงลำดับประสิทธิภาพการเผยแพร่ตัวกรอง จากงประสิทธิภาพเร็วที่สุดไปยังช้าที่สุด:

  1. ความสัมพันธ์แบบภายในกลุ่มแหล่งข้อมูลชนิดหนึ่งต่อกลุ่ม
  2. ความสัมพันธ์ของแบบจำลองแบบกลุ่มต่อกลุ่มทำได้ด้วยตารางตัวกลางและเกี่ยวโยงกับความสัมพันธ์แบบสองทิศทางอย่างน้อยหนึ่งความสัมพันธ์
  3. ความสัมพันธ์ของคาร์ดินาลลิตี้แบบกลุ่มต่อกลุ่ม
  4. ความสัมพันธ์แบบข้ามกลุ่มแหล่งข้อมูล

ขั้นตอนถัดไป

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับบทความนี้ โปรดดูทรัพยากรต่อไปนี้: