Κοινή χρήση μέσω


Οδηγίες για τις ενεργές και ανενεργές σχέσεις

Αυτό το άρθρο απευθύνεται σε εσάς ως δημιουργός μοντέλων δεδομένων που συνεργάζεται με το 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 είναι ενεργή. Παρατηρήστε επίσης ότι τα ονόματα των στηλών στους πίνακες και έχουν πρόθεμα τη λέξη αναχώρησης ή άφιξης.

Η βελτιωμένη σχεδίαση μοντέλου υποστηρίζει την παραγωγή της παρακάτω σχεδίασης αναφοράς.

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

Η σελίδα αναφοράς φιλτράρει κατά τη Μελβούρνη ως αεροδρόμιο αναχώρησης και τις ομάδες απεικόνισης πίνακα με βάση τα αεροδρόμια άφιξης.

Σημείωση

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

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

Μεθοδολογία επανασχεδιολογίας

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

  1. Καταργήστε τυχόν ανενεργές σχέσεις.

  2. Εξετάστε το ενδεχόμενο να μετονομάσετε τον πίνακα διαστάσεων αναπαραγωγής ρόλων για να περιγράψετε καλύτερα τον ρόλο του. Στο παράδειγμα αυτού του άρθρου, ο πίνακας Airport σχετίζεται με την ArrivalAirport στήλη του πίνακα Flight, επομένως μετονομάζεται σε Arrival Airport.

  3. Δημιουργήστε ένα αντίγραφο του πίνακα αναπαραγωγής ρόλων, παρέχοντάς του ένα όνομα που να αντικατοπτρίζει τον ρόλο του. Εάν πρόκειται για πίνακα εισαγωγής, προτείνουμε να δημιουργήσετε έναν υπολογιζόμενο πίνακα. Εάν πρόκειται για πίνακα DirectQuery, μπορείτε να αναπαραγάγετε το ερώτημα Power Query.

    Στο παράδειγμα, ο Departure Airport πίνακα δημιουργήθηκε χρησιμοποιώντας τον παρακάτω ορισμό υπολογιζόμενου πίνακα.

    Departure Airport = 'Arrival Airport'
    
  4. Δημιουργήστε μια ενεργή σχέση για να συσχετίσετε τον νέο πίνακα.

  5. Εξετάστε το ενδεχόμενο να μετονομάσετε τις στήλες στους πίνακες, ώστε να αντικατοπτρίζουν με ακρίβεια τον ρόλο τους. Στο παράδειγμα αυτού του άρθρου, όλες οι στήλες έχουν ως πρόθεμα τη λέξη Αναχώρηση ή άφιξη. Αυτά τα ονόματα εξασφαλίζουν ότι οι απεικονίσεις αναφοράς, από προεπιλογή, θα έχουν αυτονόητες και σαφείς ετικέτες. Βελτιώνει επίσης την εμπειρία Ε&Α, επιτρέποντας στους χρήστες να γράφουν εύκολα ακριβείς ερωτήσεις.

  6. Εξετάστε το ενδεχόμενο να προσθέσετε περιγραφές σε πίνακες αναπαραγωγής ρόλων. (Στο τμήμα παραθύρου δεδομένων, εμφανίζεται μια περιγραφή σε μια συμβουλή εργαλείου όταν ένας συντάκτης αναφοράς τοποθετεί τον δείκτη του ποντικιού πάνω στον πίνακα.) Με αυτόν τον τρόπο, μπορείτε να κοινοποιήσετε άλλες λεπτομέρειες μετάδοσης φίλτρων στους συντάκτες αναφορών.

Ανενεργές σχέσεις

Σε συγκεκριμένες περιπτώσεις, οι ανενεργές σχέσεις μπορούν να αντιμετωπίσουν συγκεκριμένες ανάγκες αναφοράς.

Εξετάστε διαφορετικές απαιτήσεις μοντέλου και αναφοράς:

  • Ένα μοντέλο πωλήσεων περιέχει έναν πίνακα 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 για να ενεργοποιήσετε μια συγκεκριμένη σχέση για σχετικούς υπολογισμούς μοντέλων.

Για περισσότερες πληροφορίες σχετικά με αυτό το άρθρο, ανατρέξτε στους παρακάτω πόρους: