แชร์ผ่าน


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

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

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

ภาพหน้าจอของกล่องโต้ตอบแก้ไขความสัมพันธ์เพื่อเลือก ตั้งสมมุติฐานว่ามี Referential Integrity

ข้อกําหนดสําหรับการใช้ประมาณ 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 จึง ไม่ควร ถูกตั้งค่า

    ภาพหน้าจอของตารางคําสั่งซื้อและตารางคลังข้อมูล

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

    ภาพหน้าจอของตารางคําสั่งซื้อและตารางลูกค้า

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

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

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

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

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

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

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

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