Εφαρμογή της ρύθμισης "Υιοθέτηση ακεραιότητας αναφορών" στο Power BI Desktop

Κατά τη σύνδεση σε μια προέλευση δεδομένων χρησιμοποιώντας το DirectQuery, μπορείτε να χρησιμοποιήσετε την επιλογή Υιοθέτηση ακεραιότητας αναφορών για να ενεργοποιήσετε την εκτέλεση πιο αποτελεσματικών ερωτημάτων σε σχέση με την προέλευση δεδομένων σας. Αυτή η δυνατότητα έχει ορισμένες απαιτήσεις για τα υποκείμενα δεδομένα και είναι διαθέσιμη μόνο κατά τη χρήση του DirectQuery.

Η ρύθμιση Υιοθέτηση ακεραιότητας αναφορών επιτρέπει στα ερωτήματα στην προέλευση δεδομένων να χρησιμοποιούν προτάσεις INNER JOIN αντί για OUTER JOIN, το οποίο βελτιώνει την αποτελεσματικότητα του ερωτήματος.

Screenshot of an Edit Relationship dialog to select Assume Referential Integrity.

Απαιτήσεις για τη χρήση της δυνατότητας "Υιοθέτηση ακεραιότητας αναφορών"

Αυτή η ρύθμιση είναι μια ρύθμιση για προχωρημένους και ενεργοποιείται μόνο κατά τη σύνδεση σε δεδομένα χρησιμοποιώντας το DirectQuery. Οι ακόλουθες απαιτήσεις είναι απαραίτητες για να λειτουργήσει σωστά η Υιοθέτηση ακεραιότητας αναφορών :

  • Τα δεδομένα στη στήλη Από της σχέσης δεν είναι ποτέ Null ή κενά
  • Για κάθε τιμή στη στήλη Από, υπάρχει μια αντίστοιχη τιμή στη στήλη Προς

Σε αυτό το περιβάλλον, η στήλη Από είναι το στοιχείο Πολλά σε μια σχέση ένα προς πολλά ή είναι η στήλη του πρώτου πίνακα σε μια σχέση ένα προς ένα .

Παράδειγμα χρήσης της δυνατότητας "Υιοθέτηση ακεραιότητας αναφορών"

Το παρακάτω παράδειγμα δείχνει πώς συμπεριφέρεται η Υιοθέτηση ακεραιότητας αναφορών όταν χρησιμοποιείται σε συνδέσεις δεδομένων. Το παράδειγμα συνδέεται σε μια προέλευση δεδομένων που περιλαμβάνει έναν πίνακα Orders, έναν πίνακα Products και έναν πίνακα Depots.

  • Στην παρακάτω εικόνα που εμφανίζει τον πίνακα Orders και τον πίνακα Products , υπάρχει ακεραιότητα αναφορών μεταξύ των πεδίων Orders[ProductID] και Products[ProductID]. Η στήλη [ProductID] στον πίνακα Orders δεν είναι ποτέ Null και κάθε τιμή εμφανίζεται επίσης στον πίνακα Products . Ως εκ τούτου, θα πρέπει να οριστεί η Υιοθέτηση ακεραιότητας αναφορών για λήψη πιο αποτελεσματικών ερωτημάτων. Η χρήση αυτής της ρύθμισης δεν αλλάζει τις τιμές που εμφανίζονται στις απεικονίσεις.

    Screenshot of Orders table and Products table.

  • Στην επόμενη εικόνα, παρατηρήστε ότι δεν υπάρχει ακεραιότητα αναφορών μεταξύ των στοιχείων Orders[DepotID] και Depots[DepotID], επειδή το στοιχείο DepotID είναι Null για ορισμένες παραγγελίες. Ως εκ τούτου, δεν πρέπει να οριστεί η Υιοθέτηση ακεραιότητας αναφορών.

    Screenshot of Orders table and Depots table.

  • Τέλος, δεν υπάρχει ακεραιότητα αναφορών μεταξύ των στοιχείων Orders[CustomerID] και Customers[CustID] στους παρακάτω πίνακες. Το CustomerID περιέχει ορισμένες τιμές, σε αυτή την περίπτωση, custX, που δεν υπάρχουν στον πίνακα Customers . Ως εκ τούτου, δεν πρέπει να οριστεί η Υιοθέτηση ακεραιότητας αναφορών.

    Screenshot of Orders table and Customers table.

Ρύθμιση υιοθέτησης ακεραιότητας αναφορών

Για να ενεργοποιήσετε αυτήν τη δυνατότητα, επιλέξτε Υιοθέτηση ακεραιότητας αναφορών , όπως φαίνεται στην παρακάτω εικόνα.

Screenshot of an Edit Relationship dialog that allows you to select Assume Referential Integrity.

Όταν επιλεγεί, η ρύθμιση επικυρώνεται έναντι των δεδομένων για να διασφαλιστεί ότι δεν υπάρχουν γραμμές Null ή γραμμές που δεν αντιστοιχούν. Ωστόσο, για περιπτώσεις με πολύ μεγάλο αριθμό τιμών, η επικύρωση δεν αποτελεί εγγύηση ότι δεν υπάρχουν ζητήματα ακεραιότητας αναφορών.

Επιπλέον, η επικύρωση πραγματοποιείται κατά την επεξεργασία της σχέσης και δεν αντικατοπτρίζει τυχόν επόμενες αλλαγές στα δεδομένα.

Τι θα συμβεί εάν δεν ορίσετε σωστά την Υιοθέτηση ακεραιότητας αναφορών;

Εάν ορίσετε την Υιοθέτηση ακεραιότητας αναφορών όταν υπάρχουν προβλήματα ακεραιότητας αναφορών στα δεδομένα, αυτή η ρύθμιση δεν έχει ως αποτέλεσμα σφάλματα. Ωστόσο, αυτό έχει ως αποτέλεσμα εμφανείς ασυνέπειες στα δεδομένα. Για παράδειγμα, για τη σχέση με τον πίνακα Depots που περιγράφεται εδώ, αυτό θα είχε το εξής αποτέλεσμα:

  • Μια απεικόνιση που εμφανίζει το σύνολο του στοιχείου Order Qty θα εμφώνιζε μια τιμή 40
  • Μια απεικόνιση που εμφανίζει το σύνολο του στοιχείου Order Qty κατά Depot City θα εμφύρωνε μια συνολική τιμή μόνο 30, επειδή δεν θα περιλάμβανε το Order ID 1, όπου το DepotID είναι Null.