แชร์ผ่าน


ใช้ประมาณการตั้งค่า Referential Integrity ใน Power BI Desktop

เมื่อเชื่อมต่อกับแหล่งข้อมูลโดยใช้ DirectQuery คุณสามารถใช้ การเลือก ประมาณ referential integrity เพื่อเปิดใช้งานการเรียกใช้คิวรีที่มีประสิทธิภาพมากขึ้นกับแหล่งข้อมูลของคุณได้ คุณลักษณะนี้มีข้อกําหนดบางประการของข้อมูลพื้นฐาน และพร้อมใช้งานเฉพาะเมื่อใช้ DirectQuery หรือในโหมด Direct Lake ในแบบจําลองความหมายของ Microsoft Fabric เท่านั้น

Note

สมมติว่าการตั้งค่า Referential Integrity สําหรับแบบจําลองความหมายของ Microsoft Fabric สามารถตั้งค่าได้ผ่านบริการโดยใช้เว็บเบราว์เซอร์เท่านั้น ไม่สามารถตั้งค่าโดยใช้ Power BI Desktop ได้

การตั้งค่า ประมาณ referential integrity จะเปิดใช้งานคิวรีบนแหล่งข้อมูลเพื่อใช้ คําสั่ง INNER JOIN แทน OUTER JOIN ซึ่งช่วยปรับปรุงประสิทธิภาพคิวรี

สกรีนช็อตของกล่องโต้ตอบ แก้ไขความสัมพันธ์ เพื่อเลือก สมมติว่ามีความสมบูรณ์ของการอ้างอิง

ข้อกําหนดสําหรับการใช้ประมาณ referential integrity

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

  • ข้อมูลใน คอลัมน์ From ในความสัมพันธ์ไม่ เป็น Null หรือ ว่างเปล่า
  • สําหรับแต่ละค่าในคอลัมน์ From ไม่มีค่าที่สอดคล้องกันในคอลัมน์ To

ในบริบทนี้ คอลัมน์ From คือ กลุ่มในความสัมพันธ์แบบหนึ่งต่อกลุ่ม หรือเป็นคอลัมน์ในตารางแรกในความสัมพันธ์แบบหนึ่งต่อหนึ่ง

ตัวอย่างของการใช้ประมาณ Referential Integrity

ตัวอย่างต่อไปนี้สาธิตลักษณะการทํางาน ประมาณ referential integrity เมื่อใช้ในการเชื่อมต่อข้อมูล ตัวอย่างจะเชื่อมต่อกับแหล่งข้อมูลที่มีตาราง Orders ตาราง Products และตาราง Depots

  • ในรูปต่อไปนี้ที่แสดงตาราง Orders และตาราง Products Referential Integrity จะมีอยู่ระหว่าง Orders[ProductID] กับ Products[ProductID] คอลัมน์ [ProductID]ในตาราง Orders จะไม่ เป็น Null และทุกค่ายังปรากฏใน ตาราง Products ด้วย ดังนั้น ประมาณ referential integrity จึงควรถูกตั้งค่าเพื่อรับคิวรีที่มีประสิทธิภาพมากขึ้น การใช้การตั้งค่านี้จะไม่เปลี่ยนแปลงค่าที่แสดงในวิชวล

    สกรีนช็อตที่แสดงตารางใบสั่งซื้อและตารางผลิตภัณฑ์

  • ในภาพถัดไป โปรดสังเกตว่าไม่มี referential integrity เกิดขึ้นระหว่าง Orders[DepotID] กับ Depots[DepotID] เนื่องจาก DepotID เป็น Null สําหรับบาง Orders ด้วยเหตุนี้ สมมติว่าไม่ควรตั้งค่าความสมบูรณ์ของการอ้างอิง

    สกรีนช็อตที่แสดงตารางคําสั่งซื้อและตารางดีโปต์

  • สุดท้าย ไม่มี referential integrity เกิดขึ้นระหว่าง Orders[CustomerID] กับ Customers[CustID] ในตารางต่อไปนี้ CustomerID ประกอบด้วยค่า CustX ซึ่งไม่มีอยู่ในตาราง Customers ด้วยเหตุนี้ สมมติว่าไม่ควรตั้งค่าความสมบูรณ์ของการอ้างอิง

    สกรีนช็อตที่แสดงตารางใบสั่งซื้อและตารางลูกค้า

การตั้งค่าการประมาณ referential integrity

เพื่อเปิดใช้งานคุณลักษณะนี้ เลือก ประมาณ referential integrity ดังที่แสดงในรูปต่อไปนี้

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

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

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

เกิดอะไรขึ้นถ้าคุณตั้งค่าประมาณ referential integrity อย่างไม่ถูกต้อง

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

  • วิชวลที่แสดง Order Qty รวมจะแสดงค่า 40
  • วิชวลที่แสดง Order Qty by Depot City รวมจะแสดงค่าผลรวมเพียง 30 เนื่องจากจะไม่รวม Order ID 1 ซึ่ง DepotID เป็น Null