ทำงานกับความสัมพันธ์และคาร์ดินาลลิตี้

เสร็จสมบูรณ์เมื่อ

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

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

ภาพหน้าจอของแบบจําลองความหมายตัวอย่าง

ความสัมพันธ์

ต่อไปนี้เป็นความสัมพันธ์ชนิดต่างๆ ที่คุณจะพบได้ใน Power BI

ความสัมพันธ์แบบกลุ่มต่อหนึ่ง(*:1)หรือหนึ่งต่อกลุ่ม(1: *)

  • อธิบายความสัมพันธ์ที่คุณมีอินสแตนซ์ของค่าหลายรายการในหนึ่งคอลัมน์ที่สัมพันธ์กับอินสแตนซ์ที่เกี่ยวข้องที่ไม่ซ้ำกันเพียงหนึ่งเดียวในคอลัมน์อื่น

  • อธิบายทิศทางระหว่างตารางข้อเท็จจริงและตารางมิติ

  • เป็นทิศทางชนิดที่พบบ่อยที่สุดและเป็นค่าเริ่มต้นของ Power BI เมื่อคุณสร้างความสัมพันธ์โดยอัตโนมัติ

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

สกรีนช็อตของความสัมพันธ์แบบกลุ่มต่อหนึ่ง

ความสัมพันธ์แบบหนึ่งต่อหนึ่ง (1:1):

  • อธิบายความสัมพันธ์ซึ่งมีเพียงอินสแตนซ์ของค่าหนึ่งรายการเท่านั้นที่ใช้ร่วมกันระหว่างสองตาราง

  • จำเป็นต้องมีค่าที่ไม่ซ้ำกันในทั้งสองตาราง

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

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

สกรีนช็อตของความสัมพันธ์แบบหนึ่งต่อหนึ่ง

ความสัมพันธ์แบบกลุ่มต่อกลุ่ม (.):

  • อธิบายความสัมพันธ์ที่มีค่าหลายค่าที่ใช้ร่วมกันระหว่างสองตาราง

  • ไม่จำเป็นต้องมีค่าที่ไม่ซ้ำกันในตารางใดตารางหนึ่งของความสัมพันธ์

  • ไม่แนะนำ เนื่องจากการไม่มีค่าที่ไม่ซ้ำกันทำให้เกิความคลุมเครือ และผู้ใช้ของคุณอาจไม่ทราบว่าคอลัมน์ของค่าคอลัมน์ใดกำลังอ้างอิงถึงอะไร

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

สกรีนช็อตของความสัมพันธ์แบบกลุ่มต่อกลุ่ม

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

คุณสามารถกรองข้อมูลบนหนึ่งหรือทั้งสองด้านของความสัมพันธ์ได้

ด้วยทิศทางตัวกรองข้ามเดียว:

  • คุณสามารถใช้ตารางในความสัมพันธ์เพียงตารางเดียวเท่านั้นเพื่อกรองข้อมูล ตัวอย่างเช่น ตารางที่ 1 สามารถกรองโดยตารางที่ 2 แต่ไม่สามารถกรองตารางที่ 2 โดยตารางที่ 1 ได้

    เคล็ดลับ

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

  • สําหรับความสัมพันธ์แบบหนึ่งต่อกลุ่มหรือกลุ่มต่อหนึ่ง ทิศทางตัวกรองข้ามจะมาจากด้าน "หนึ่ง" ซึ่งหมายความว่าการกรองจะเกิดขึ้นในตารางที่มีหลายค่า

ด้วย ทิศทางตัวกรองข้ามทั้งสอง หรือ ตัวกรองข้ามแบบสองทิศทาง:

  • คุณสามารถใช้ตารางในความสัมพันธ์หนึ่งตารางเพื่อกรองตารางอื่นได้ ตัวอย่างเช่น คุณสามารถกรองตารางมิติผ่านตารางข้อเท็จจริง และกรองตารางข้อเท็จจริงผ่านตารางมิติได้

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

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

คาร์ดินาลลิตี้และทิศทางตัวกรองข้าม

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

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

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

สร้างความสัมพันธ์แบบกลุ่มต่อกลุ่ม

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

ภาพหน้าจอของความสัมพันธ์แบบกลุ่มต่อกลุ่ม

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

เลือก ตกลง ขณะนี้คุณได้สร้างความสัมพันธ์แบบกลุ่มต่อกลุ่มสำเร็จแล้ว

ภาพหน้าจอของความสัมพันธ์แบบกลุ่มต่อกลุ่มใน จัดการความสัมพันธ์

สำหรับข้อมูลเพิ่มเติม ให้ดู ความสัมพันธ์แบบกลุ่มต่อกลุ่มใน Power BI