Οδηγίες για τις ενεργές και ανενεργές σχέσεις
Αυτό το άρθρο απευθύνεται σε εσάς ως δημιουργός μοντέλων δεδομένων που συνεργάζεται με το Power BI Desktop. Σας παρέχει οδηγίες σχετικά με το πότε πρέπει να δημιουργείτε ενεργές ή ανενεργές σχέσεις μοντέλων. Από προεπιλογή, οι ενεργές σχέσεις μεταδίδουν φίλτρα σε άλλους πίνακες. Η ανενεργής σχέση, ωστόσο, μεταδίδει φίλτρα μόνο όταν ενεργοποιείται (χρησιμοποιείται) από μια παράσταση DAX.
Σημείωση
Η εισαγωγή στις σχέσεις μοντέλου δεν καλύπτεται σε αυτό το άρθρο. Εάν δεν είστε πλήρως εξοικειωμένοι με τις σχέσεις, τις ιδιότητές τους ή τον τρόπο ρύθμισης των παραμέτρων τους, συνιστούμε να διαβάσετε πρώτα το άρθρο σχέσεων μοντέλου στο Power BI Desktop.
Είναι επίσης σημαντικό να κατανοήσετε τη σχεδίαση αστεροειδούς σχήματος. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Κατανόηση του αστεροειδούς σχήματος και της σημασίας του για το Power BI.
Ενεργές σχέσεις
Κατά κανόνα, συνιστούμε να ορίζετε ενεργές σχέσεις όποτε αυτό είναι εφικτό. Διευρύνουν την εμβέλεια και τις δυνατότητες του τρόπου χρήσης του μοντέλου σας από συντάκτες αναφορών και χρήστες που εργάζονται με ερωτήσεις&Α.
Εξετάστε ένα παράδειγμα ενός μοντέλου εισαγωγής που έχει σχεδιαστεί για την ανάλυση της απόδοσης των πτήσεων μιας αεροπορικής εταιρείας σε σχέση με την έγκαιρη εκτέλεση (OTP). Το μοντέλο διαθέτει έναν πίνακα Flight
, ο οποίος είναι ένας πίνακας δεδομένων που αποθηκεύει μία γραμμή ανά πτήση. Κάθε γραμμή καταγράφει την ημερομηνία της πτήσης, τον αριθμό της πτήσης, τα αεροδρόμια αναχώρησης και άφιξης, καθώς και τυχόν χρόνο καθυστέρησης (σε λεπτά). Υπάρχει επίσης ένας πίνακας Airport
, ο οποίος είναι ένας πίνακας διαστάσεων που αποθηκεύει μία γραμμή ανά αεροδρόμιο. Κάθε γραμμή περιγράφει τον κωδικό του αεροδρομίου, το όνομα του αεροδρομίου και τη χώρα ή περιοχή.
Ακολουθεί ένα μερικό διάγραμμα του μοντέλου των δύο πινάκων.
Υπάρχουν δύο σχέσεις μοντέλου μεταξύ των πινάκων Flight
και Airport
. Στον Flight
πίνακα, οι στήλες DepartureAirport
και ArrivalAirport
σχετίζονται με τη στήλη Airport
του πίνακα Airport
. Στη σχεδίαση αστεροειδούς σχήματος, ο πίνακας Airport
περιγράφεται ως διάσταση αναπαραγωγής ρόλων. Σε αυτό το μοντέλο, οι δύο ρόλοι είναι αεροδρομίου αναχώρησης και αεροδρόμιο άφιξης.
Παρόλο που αυτή η σχεδίαση λειτουργεί καλά για τις σχεδιάσεις σχεσιακών αστεροειδών σχεσιακών σχημάτων, δεν λειτουργεί καλά για τα μοντέλα Power BI. Αυτό συμβαίνει επειδή οι σχέσεις μοντέλων είναι διαδρομές για τη μετάδοση φίλτρου και αυτές οι διαδρομές πρέπει να είναι αιτιοκρατικές. Για περισσότερες πληροφορίες σχετικά με τη διασφάλιση ότι οι διαδρομές μετάδοσης φίλτρου είναι αιτιοκρατικές, ανατρέξτε στο θέμα επιλύσετε ασάφεια διαδρομής σχέσης. Επομένως, όπως παρουσιάζεται σε αυτό το παράδειγμα, η μία σχέση είναι ενεργή ενώ η άλλη είναι ανενεργή (αντιπροσωπεύεται από τη διακεκομμένη γραμμή). Συγκεκριμένα, είναι η σχέση με την ArrivalAirport
στήλη που είναι ενεργή, το οποίο σημαίνει ότι τα φίλτρα που εφαρμόζονται στον πίνακα Airport
μεταδίδονται αυτόματα στην ArrivalAirport
στήλη του πίνακα Flight
.
Αυτή η σχεδίαση μοντέλου επιβάλλει σοβαρούς περιορισμούς ως προς τον τρόπο αναφοράς των δεδομένων. Συγκεκριμένα, δεν μπορείτε να φιλτράρετε τον πίνακα Airport
για να απομονώσετε αυτόματα τα στοιχεία της πτήσης για ένα αεροδρόμιο αναχώρησης. Καθώς οι αναφορές πρέπει να φιλτράρουν (ή να ομαδοποιηθούν) με βάση τα αεροδρόμια αναχώρησης και άφιξης ταυτόχρονα, απαιτούνται δύο ενεργές σχέσεις. Η μετάφραση αυτής της απαίτησης σε μια σχεδίαση μοντέλου Power BI σημαίνει ότι το μοντέλο πρέπει να έχει δύο πίνακες αεροδρομίων.
Ακολουθεί η βελτιωμένη σχεδίαση μοντέλου.
Το μοντέλο έχει τώρα δύο πίνακες αεροδρομίων: Departure Airport
και Arrival Airport
. Κάθε σχέση μοντέλου μεταξύ αυτών των πινάκων και του πίνακα Flight
είναι ενεργή. Παρατηρήστε επίσης ότι τα ονόματα των στηλών στους πίνακες
Η βελτιωμένη σχεδίαση μοντέλου υποστηρίζει την παραγωγή της παρακάτω σχεδίασης αναφοράς.
Η σελίδα αναφοράς φιλτράρει κατά τη Μελβούρνη ως αεροδρόμιο αναχώρησης και τις ομάδες απεικόνισης πίνακα με βάση τα αεροδρόμια άφιξης.
Σημείωση
Για τα μοντέλα εισαγωγής, η προσθήκη ενός άλλου πίνακα διαστάσεων είχε ως αποτέλεσμα την αύξηση του μεγέθους του μοντέλου και του χρόνου ανανέωσης. Ως εκ τούτου, έρχεται σε αντίθεση με τις συστάσεις που περιγράφονται στο άρθρο Τεχνικές μείωσης δεδομένων για τη μοντελοποίηση εισαγωγής. Ωστόσο, στο παράδειγμα, η απαίτηση μόνο για ενεργές σχέσεις παρακάμπτει αυτές τις προτάσεις.
Επιπλέον, είναι σύνηθες οι πίνακες διαστάσεων να αποθηκεύουν μικρό αριθμό γραμμών σε σχέση με το πλήθος γραμμών πίνακα δεδομένων. Επομένως, η αύξηση του μεγέθους του μοντέλου και των χρόνων ανανέωσης δεν είναι πιθανό να είναι υπερβολικά μεγάλη.
Μεθοδολογία επανασχεδιολογίας
Ακολουθεί μια μεθοδολογία για τον επανασχεδι εντοπισμό ενός μοντέλου από έναν μοναδικό πίνακα διαστάσεων αναπαραγωγής ρόλων, σε μια σχεδίαση με έναν πίνακα ανά ρόλο.
Καταργήστε τυχόν ανενεργές σχέσεις.
Εξετάστε το ενδεχόμενο να μετονομάσετε τον πίνακα διαστάσεων αναπαραγωγής ρόλων για να περιγράψετε καλύτερα τον ρόλο του. Στο παράδειγμα αυτού του άρθρου, ο πίνακας
Airport
σχετίζεται με τηνArrivalAirport
στήλη του πίνακαFlight
, επομένως μετονομάζεται σεArrival Airport
.Δημιουργήστε ένα αντίγραφο του πίνακα αναπαραγωγής ρόλων, παρέχοντάς του ένα όνομα που να αντικατοπτρίζει τον ρόλο του. Εάν πρόκειται για πίνακα εισαγωγής, προτείνουμε να δημιουργήσετε έναν υπολογιζόμενο πίνακα. Εάν πρόκειται για πίνακα DirectQuery, μπορείτε να αναπαραγάγετε το ερώτημα Power Query.
Στο παράδειγμα, ο
Departure Airport
πίνακα δημιουργήθηκε χρησιμοποιώντας τον παρακάτω ορισμό υπολογιζόμενου πίνακα.Departure Airport = 'Arrival Airport'
Δημιουργήστε μια ενεργή σχέση για να συσχετίσετε τον νέο πίνακα.
Εξετάστε το ενδεχόμενο να μετονομάσετε τις στήλες στους πίνακες, ώστε να αντικατοπτρίζουν με ακρίβεια τον ρόλο τους. Στο παράδειγμα αυτού του άρθρου, όλες οι στήλες έχουν ως πρόθεμα τη λέξη Αναχώρηση ή άφιξη. Αυτά τα ονόματα εξασφαλίζουν ότι οι απεικονίσεις αναφοράς, από προεπιλογή, θα έχουν αυτονόητες και σαφείς ετικέτες. Βελτιώνει επίσης την εμπειρία Ε&Α, επιτρέποντας στους χρήστες να γράφουν εύκολα ακριβείς ερωτήσεις.
Εξετάστε το ενδεχόμενο να προσθέσετε περιγραφές σε πίνακες αναπαραγωγής ρόλων. (Στο τμήμα παραθύρου δεδομένων, εμφανίζεται μια περιγραφή σε μια συμβουλή εργαλείου όταν ένας συντάκτης αναφοράς τοποθετεί τον δείκτη του ποντικιού πάνω στον πίνακα.) Με αυτόν τον τρόπο, μπορείτε να κοινοποιήσετε άλλες λεπτομέρειες μετάδοσης φίλτρων στους συντάκτες αναφορών.
Ανενεργές σχέσεις
Σε συγκεκριμένες περιπτώσεις, οι ανενεργές σχέσεις μπορούν να αντιμετωπίσουν συγκεκριμένες ανάγκες αναφοράς.
Εξετάστε διαφορετικές απαιτήσεις μοντέλου και αναφοράς:
- Ένα μοντέλο πωλήσεων περιέχει έναν πίνακα
Sales
που διαθέτει δύο στήλες ημερομηνιών:OrderDate
καιShipDate
. - Κάθε γραμμή στον
Sales
πίνακα καταγράφει μία μόνο σειρά. - Τα φίλτρα ημερομηνίας εφαρμόζονται σχεδόν πάντα στη στήλη
OrderDate
, η οποία αποθηκεύει πάντα μια έγκυρη ημερομηνία. - Μόνο μία μέτρηση απαιτεί τη μετάδοση του φίλτρου ημερομηνίας στη στήλη
ShipDate
, η οποία μπορεί να περιέχει κενά (μέχρι να αποσταλεί η παραγγελία). - Δεν απαιτείται ταυτόχρονο φιλτράρισμα (ή ομαδοποίηση) ταξινόμησης και περιόδων ημερομηνιών αποστολής.
Ακολουθεί ένα μερικό διάγραμμα του μοντέλου των δύο πινάκων.
Υπάρχουν δύο σχέσεις μοντέλου μεταξύ των πινάκων Sales
και Date
. Στον Sales
πίνακα, οι στήλες OrderDate
και ShipDate
σχετίζονται με τη στήλη Date
του πίνακα Date
. Σε αυτό το μοντέλο, οι δύο ρόλοι για τον πίνακα Date
είναι ημερομηνία παραγγελίας και ημερομηνία αποστολής. Η ενεργή σχέση είναι αυτή με τη OrderDate
στήλη.
Και οι έξι μετρήσεις, εκτός από μία, πρέπει να φιλτράρονται με βάση τη στήλη OrderDate
. Ωστόσο, η Orders Shipped
μέτρηση πρέπει να φιλτράρει με βάση τη στήλη ShipDate
.
Ακολουθεί ο Orders
ορισμός μέτρησης. Μετρά απλώς τις γραμμές του πίνακα Sales
εντός του περιβάλλοντος φίλτρου. Οποιαδήποτε φίλτρα εφαρμόζονται στον Date
πίνακα μεταδίδονται στη στήλη OrderDate
.
Orders = COUNTROWS(Sales)
Ακολουθεί ο Orders Shipped
ορισμός μέτρησης. Χρησιμοποιεί το USERELATIONSHIP συνάρτηση DAX, η οποία ενεργοποιεί τη μετάδοση φίλτρου για μια συγκεκριμένη σχέση, αλλά μόνο κατά την αξιολόγηση της παράστασης. Σε αυτό το παράδειγμα, χρησιμοποιείται η σχέση με τη στήλη ShipDate
.
Orders Shipped =
CALCULATE(
COUNTROWS(Sales)
,USERELATIONSHIP('Date'[Date], Sales[ShipDate])
)
Αυτή η σχεδίαση μοντέλου υποστηρίζει την παραγωγή της παρακάτω σχεδίασης αναφοράς.
Η σελίδα αναφοράς φιλτράρει κατά τρίμηνο 4ου τριμήνου 2019. Η απεικόνιση πίνακα ομαδοποιεί κατά μήνα και εμφανίζει διάφορα στατιστικά στοιχεία πωλήσεων. Οι μετρήσεις Orders
και Orders Shipped
παράγουν διαφορετικά αποτελέσματα. Η καθεμία χρησιμοποιεί την ίδια λογική σύνοψης (πλήθος γραμμών του πίνακα Sales
), αλλά διαφέρει Date
τη μετάδοση φίλτρου πίνακα.
Παρατηρήστε ότι ο αναλυτής τριμήνου περιλαμβάνει μια κενή επιλογή. Αυτή η επιλογή αναλυτή εμφανίζεται ως αποτέλεσμα επέκτασης πίνακα. Παρόλο που κάθε Sales
γραμμή πίνακα έχει μια έγκυρη ημερομηνία παραγγελίας, ορισμένες γραμμές έχουν μια ΚΕΝΉ ημερομηνία αποστολής, καθώς αυτές οι παραγγελίες δεν έχουν αποσταλεί ακόμα. Η επέκταση πίνακα λαμβάνει υπόψη και τις ανενεργές σχέσεις και, επομένως, μπορεί να εμφανιστούν κενά λόγω ΚΕΝΩΝ στην πλευρά πολλά της σχέσης (ή λόγω προβλημάτων ακεραιότητας δεδομένων).
Σημείωση
Τα φίλτρα ασφάλειας σε επίπεδο γραμμών (RLS) μεταδίδονται μόνο μέσω ενεργών σχέσεων. Τα φίλτρα RLS δεν μεταδίδονται ποτέ για ανενεργές σχέσεις, ακόμα και όταν η συνάρτησης USERELATIONSHIP DAX χρησιμοποιείται από έναν ορισμό μέτρησης.
Συστάσεις
Συνιστούμε να ορίζετε ενεργές σχέσεις όποτε αυτό είναι εφικτό, ιδιαίτερα όταν ορίζονται ρόλοι RLS για το μοντέλο δεδομένων σας. Διευρύνουν την εμβέλεια και τις δυνατότητες του τρόπου χρήσης του μοντέλου σας από συντάκτες αναφορών και χρήστες που εργάζονται με ερωτήσεις&Α. Αυτό σημαίνει ότι οι πίνακες διαστάσεων αναπαραγωγής ρόλων θα πρέπει να αναπαράγονται στο μοντέλο σας.
Σε συγκεκριμένες περιπτώσεις, ωστόσο, μπορείτε να ορίσετε μία ή περισσότερες ανενεργές σχέσεις για έναν πίνακα διαστάσεων αναπαραγωγής ρόλων. Μπορείτε να εξετάσετε αυτή την προσέγγιση όταν:
- Δεν απαιτείται ταυτόχρονο φιλτράρισμα βάσει διαφορετικών ρόλων στις απεικονίσεις αναφοράς.
- Χρησιμοποιείτε τη συνάρτηση DAX USERELATIONSHIP για να ενεργοποιήσετε μια συγκεκριμένη σχέση για σχετικούς υπολογισμούς μοντέλων.
Σχετικό περιεχόμενο
Για περισσότερες πληροφορίες σχετικά με αυτό το άρθρο, ανατρέξτε στους παρακάτω πόρους:
- Σχέσεις μοντέλου στο Power BI Desktop
- Κατανοήστε το αστεροειδές σχήμα και τη σημασία του για το Power BI
- Οδηγίες για την αντιμετώπιση προβλημάτων με σχέσεις
- Ερωτήσεις? δοκιμάστε να ρωτήσετε το Κοινότητας Fabric
- Προτάσεις? συνεισφέρετε ιδέες για τη βελτίωση του Fabric