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


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

Αυτό το άρθρο απευθύνεται σε εσάς ως δημιουργός μοντέλων δεδομένων που εργάζεται με το Power BI Desktop. Σας παρέχει οδηγίες σχετικά με το πότε πρέπει να δημιουργείτε ενεργές ή ανενεργές σχέσεις μοντέλων. Από προεπιλογή, οι ενεργές σχέσεις μεταδίδουν φίλτρα σε άλλους πίνακες. Η ανενεργής σχέση, ωστόσο, μεταδίδει φίλτρα μόνο όταν ενεργοποιείται (χρησιμοποιείται) από μια παράσταση DAX.

Σημείωμα

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

Είναι επίσης σημαντικό να κατανοήσετε τη σχεδίαση αστεροειδούς σχήματος. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Κατανόηση του αστεροειδούς σχήματος και της σημασίας του για το Power BI.

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

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

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

Ακολουθεί ένα μερικό διάγραμμα του μοντέλου των δύο πινάκων.

Diagram showing a model containing two tables: Flight and Airport. The relationship design is described in the following paragraph.

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

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

Αυτή η σχεδίαση μοντέλου επιβάλλει σοβαρούς περιορισμούς ως προς τον τρόπο αναφοράς των δεδομένων. Συγκεκριμένα, δεν μπορείτε να φιλτράρετε τον πίνακα Αεροδρόμιο για να απομονώσετε αυτόματα τα στοιχεία των πτήσεων για ένα αεροδρόμιο αναχώρησης. Καθώς οι απαιτήσεις αναφοράς περιλαμβάνουν φιλτράρισμα (ή ομαδοποίηση) με βάση τα αεροδρόμια αναχώρησης και άφιξης ταυτόχρονα, απαιτούνται δύο ενεργές σχέσεις. Η μετάφραση αυτής της απαίτησης σε μια σχεδίαση μοντέλου Power BI σημαίνει ότι το μοντέλο πρέπει να έχει δύο πίνακες αεροδρομίων.

Ακολουθεί η βελτιωμένη σχεδίαση μοντέλου.

Diagram showing a model containing four tables: Date, Flight, Departure Airport, and Arrival Airport.

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

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

Diagram showing a report page has two slicers and a table visual. The slicers are Month and Departure Airport.

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

Σημείωμα

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

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

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

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

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

  2. Εξετάστε το ενδεχόμενο να μετονομάσετε τον πίνακα διαστάσεων αναπαραγωγής ρόλων για να περιγράψετε καλύτερα τον ρόλο του. Στο παράδειγμα, ο πίνακας Αεροδρόμιο σχετίζεται με τη στήλη Αεροδρόμιο Άφιξης του πίνακα Πτήση , επομένως έχει μετονομαστεί σε Αεροδρόμιο άφιξης.

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

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

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

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

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

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

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

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

  • Ένα μοντέλο πωλήσεων περιέχει έναν πίνακα Sales που διαθέτει δύο στήλες ημερομηνιών: OrderDate και ShipDate
  • Κάθε γραμμή στον πίνακα Πωλήσεις καταγράφει μία μόνο παραγγελία
  • Τα φίλτρα ημερομηνίας εφαρμόζονται σχεδόν πάντα στη στήλη ΗμερομηνίαΠαραγγελίας , η οποία αποθηκεύει πάντα μια έγκυρη ημερομηνία
  • Μόνο μία μέτρηση απαιτεί τη μετάδοση του φίλτρου ημερομηνίας στη στήλη Ημερομηνία Αποστολής , η οποία μπορεί να περιέχει κενά (μέχρι να αποσταλεί η παραγγελία)
  • Δεν απαιτείται ταυτόχρονο φιλτράρισμα (ή ομαδοποίηση κατά) των περιόδων ημερομηνίας παραγγελίας και αποστολής

Ακολουθεί ένα μερικό διάγραμμα του μοντέλου των δύο πινάκων.

Diagram showing a model containing two tables: Sales and Date. The Sales table includes six measures.

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

Και οι έξι μετρήσεις, εκτός από μία, πρέπει να φιλτράρονται με βάση τη στήλη ΗμερομηνίαΠαραγγελίας . Ωστόσο, η μέτρηση Απεσταλμένες παραγγελίες πρέπει να φιλτράρει με βάση τη στήλη ΗμερομηνίαΠαραγγελίας .

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

Orders = COUNTROWS(Sales)

Ακολουθεί ο ορισμός της μέτρησης Απεσταλμένες παραγγελίες. Χρησιμοποιεί τη συνάρτηση DAX USERELATIONSHIP , η οποία ενεργοποιεί τη μετάδοση φίλτρου για μια συγκεκριμένη σχέση μόνο κατά την αξιολόγηση της παράστασης. Σε αυτό το παράδειγμα, χρησιμοποιείται η σχέση με τη στήλη Ημερομηνία_αποστολής .

Orders Shipped =
CALCULATE(
    COUNTROWS(Sales)
    ,USERELATIONSHIP('Date'[Date], Sales[ShipDate])
)

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

Diagram showing a report page with one slicer and a table visual. The slicer is Quarter, and the table visual lists monthly sales statistics.

Η σελίδα αναφοράς φιλτράρει με βάση το τρίμηνο του 2019 Τ4. Η απεικόνιση πίνακα ομαδοποιεί κατά μήνα και εμφανίζει διάφορα στατιστικά στοιχεία πωλήσεων. Οι μετρήσεις Παραγγελίες και Απεσταλμένες παραγγελίες παράγουν διαφορετικά αποτελέσματα. Η καθεμία χρησιμοποιεί την ίδια λογική σύνοψης (πλήθος γραμμών του πίνακα Πωλήσεις ), αλλά κάνει διαφορετική μετάδοση του φίλτρου πίνακα Ημερομηνία .

Παρατηρήστε ότι ο αναλυτής τριμήνου περιλαμβάνει ένα κενό στοιχείο. Αυτό το στοιχείο αναλυτή εμφανίζεται ως αποτέλεσμα της επέκτασης του πίνακα. Παρόλο που κάθε γραμμή του πίνακα Πωλήσεις έχει μια ημερομηνία παραγγελίας, ορισμένες γραμμές έχουν μια ΚΕΝΉ ημερομηνία αποστολής, καθώς αυτές οι παραγγελίες δεν έχουν αποσταλεί ακόμα. Η επέκταση πίνακα λαμβάνει υπόψη και τις ανενεργές σχέσεις και, επομένως, μπορεί να εμφανιστούν κενά λόγω ΚΕΝΩΝ στην πλευρά "πολλά" της σχέσης ή λόγω ζητημάτων ακεραιότητας δεδομένων.

Σημείωμα

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

Προτάσεις

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

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

  • Δεν απαιτείται ταυτόχρονο φιλτράρισμα βάσει διαφορετικών ρόλων στις απεικονίσεις αναφοράς
  • Χρησιμοποιείτε τη συνάρτηση DAX USERELATIONSHIP για να ενεργοποιήσετε μια συγκεκριμένη σχέση για σχετικούς υπολογισμούς μοντέλων

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