Σχέσεις μοντέλων στο Power BI Desktop
Αυτό το άρθρο αφορά δημιουργούς μοντέλων εισαγωγής δεδομένων που εργάζονται με το Power BI Desktop. Πρόκειται για ένα σημαντικό θέμα σχεδίασης μοντέλων που είναι απαραίτητο για την παροχή διαισθητικών, ακριβών και βέλτιστων μοντέλων.
Για μια βαθύτερη συζήτηση σχετικά με τη σχεδίαση βέλτιστων μοντέλων, συμπεριλαμβανομένων των ρόλων και σχέσεων πίνακα, ανατρέξτε στο θέμα Κατανόηση του αστεροειδούς σχήματος και της σημασίας του για το Power BI.
Σκοπός σχέσης
Μια σχέση μοντέλου μεταδίδει φίλτρα που εφαρμόζονται στη στήλη ενός πίνακα μοντέλου σε έναν διαφορετικό πίνακα μοντέλου. Τα φίλτρα θα μεταδοθούν με την προϋπόθεση ότι θα ακολουθήσει μια διαδρομή σχέσης, η οποία μπορεί να περιλαμβάνει τη μετάδοση σε πολλούς πίνακες.
Οι διαδρομές σχέσεων είναι αιτιοκρατικές, πράγμα που σημαίνει ότι τα φίλτρα μεταδίδονται πάντα με τον ίδιο τρόπο και χωρίς τυχαίες παραλλαγές. Ωστόσο, οι σχέσεις μπορούν να απενεργοποιηθούν ή να έχουν τροποποιημένο περιβάλλον φίλτρου με υπολογισμούς μοντέλων που χρησιμοποιούν συγκεκριμένες συναρτήσεις DAX. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Σχετικές συναρτήσεις DAX παρακάτω σε αυτό το άρθρο.
Σημαντικό
Οι σχέσεις μοντέλων δεν επιβάλλουν ακεραιότητα δεδομένων. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Αξιολόγηση σχέσης παρακάτω σε αυτό το άρθρο, το οποίο εξηγεί τον τρόπο συμπεριφοράς των σχέσεων μοντέλων όταν υπάρχουν προβλήματα ακεραιότητας δεδομένων με τα δεδομένα σας.
Δείτε πώς οι σχέσεις μεταδίδουν φίλτρα με ένα παράδειγμα με εφέ κίνησης.
Σε αυτό το παράδειγμα, το μοντέλο αποτελείται από τέσσερις πίνακες: Κατηγορία, Προϊόν, Έτος και Πωλήσεις. Ο πίνακας Κατηγορία σχετίζεται με τον πίνακα Προϊόν και ο πίνακας Προϊόν σχετίζεται με τον πίνακα Πωλήσεις . Ο πίνακας Έτος σχετίζεται επίσης με τον πίνακα Πωλήσεις . Όλες οι σχέσεις είναι "ένα-προς-πολλά" (οι λεπτομέρειες των οποίων περιγράφονται παρακάτω σε αυτό το άρθρο).
Ένα ερώτημα, το οποίο πιθανώς δημιουργήθηκε από μια απεικόνιση κάρτας Power BI, ζητά τη συνολική ποσότητα πωλήσεων για τις παραγγελίες πωλήσεων που πραγματοποιήθηκαν για μία μόνο κατηγορία, την Cat-A και για ένα μόνο έτος, το CY2018. Για αυτόν τον λόγο, μπορείτε να δείτε τα φίλτρα που εφαρμόζονται στους πίνακες Κατηγορία και Έτος . Το φίλτρο στον πίνακα Κατηγορία μεταδίδεται στον πίνακα Προϊόν για να απομονώσει δύο προϊόντα που έχουν αντιστοιχιστεί στην κατηγορία Cat-A. Στη συνέχεια, τα φίλτρα του πίνακα Προϊόν μεταδίδονται στον πίνακα Πωλήσεις για να απομονώσουν μόνο δύο γραμμές πωλήσεων για αυτά τα προϊόντα. Αυτές οι δύο γραμμές πωλήσεων αντιπροσωπεύουν τις πωλήσεις των προϊόντων που έχουν αντιστοιχιστεί στην κατηγορία Cat-A. Η συνδυασμένη τους ποσότητα είναι 14 μονάδες. Ταυτόχρονα, το φίλτρο του πίνακα Έτος μεταδίδεται για περαιτέρω φιλτράρισμα του πίνακα Πωλήσεις , με αποτέλεσμα μόνο μία γραμμή πωλήσεων που αφορά προϊόντα που έχουν αντιστοιχιστεί στην κατηγορία Cat-A και η οποία έχει παραγγελθούν στο έτος CY2018. Η τιμή ποσότητας που επιστρέφεται από το ερώτημα είναι 11 μονάδες. Σημειώστε ότι όταν εφαρμόζονται πολλά φίλτρα σε έναν πίνακα (όπως ο πίνακας Sales σε αυτό το παράδειγμα), είναι πάντα μια λειτουργία AND, που απαιτεί όλες οι συνθήκες να είναι true.
Εφαρμογή αρχών σχεδίασης αστεροειδούς σχήματος
Συνιστούμε να εφαρμόσετε τις αρχές σχεδίασης αστεροειδούς σχήματος για να δημιουργήσετε ένα μοντέλο που αποτελείται από πίνακες διαστάσεων και δεδομένων. Είναι συνηθισμένο να ρυθμίζετε το Power BI για την επιβολή κανόνων που φιλτράρουν πίνακες διαστάσεων, επιτρέποντας στις σχέσεις μοντέλων να μεταδίδουν αποτελεσματικά αυτά τα φίλτρα σε πίνακες δεδομένων.
Η παρακάτω εικόνα είναι το διάγραμμα μοντέλου του μοντέλου δεδομένων ανάλυσης πωλήσεων του Adventure Works. Εμφανίζει μια σχεδίαση αστεροειδούς σχήματος που αποτελείται από έναν μοναδικό πίνακα δεδομένων με την ονομασία Πωλήσεις. Οι άλλοι τέσσερις πίνακες είναι πίνακες διαστάσεων που υποστηρίζουν την ανάλυση των μετρήσεων πωλήσεων κατά ημερομηνία, πολιτεία, περιοχή και προϊόν. Παρατηρήστε τις σχέσεις μοντέλου που συνδέουν όλους τους πίνακες. Αυτές οι σχέσεις μεταδίδουν φίλτρα (άμεσα ή έμμεσα) στον πίνακα Πωλήσεις .
Αποσυνδεδεμένοι πίνακες
Είναι ασυνήθιστο ένας πίνακας μοντέλου να μην σχετίζεται με άλλον πίνακα μοντέλου. Ένας τέτοιος πίνακας σε μια έγκυρη σχεδίαση μοντέλου περιγράφεται ως αποσυνδεδεμένος πίνακας. Ένας αποσυνδεδεμένος πίνακας δεν προορίζεται για τη μετάδοση φίλτρων σε άλλους πίνακες μοντέλου. Αντί για αυτό, αποδέχεται την "εισαγωγή από τον χρήστη" (ίσως με μια απεικόνιση αναλυτή), επιτρέποντας στους υπολογισμούς μοντέλων να χρησιμοποιούν την τιμή εισόδου με ουσιαστικό τρόπο. Για παράδειγμα, σκεφτείτε έναν αποσυνδεδεμένο πίνακα που φορτώνεται με μια περιοχή τιμών συναλλαγματικής ισοτιμίας. Με την προϋπόθεση ότι ένα φίλτρο εφαρμόζεται για φιλτράρισμα με βάση μια τιμή ενιαίου συντελεστή, μια παράσταση μέτρησης μπορεί να χρησιμοποιήσει αυτή την τιμή για να μετατρέψει τιμές πωλήσεων.
Η παράμετρος what-if του Power BI Desktop είναι μια δυνατότητα που δημιουργεί έναν αποσυνδεδεμένο πίνακα. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Δημιουργία και χρήση μιας παραμέτρου What if για την απεικόνιση μεταβλητών στο Power BI Desktop.
Ιδιότητες σχέσης
Μια σχέση μοντέλου συσχετίζει μία στήλη ενός πίνακα με μία στήλη ενός διαφορετικού πίνακα. (Υπάρχει μια ειδική περίπτωση όπου αυτή η απαίτηση δεν είναι true και ισχύει μόνο για σχέσεις πολλών στηλών σε μοντέλα DirectQuery. Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο ΣΥΝΆΡΤΗΣΗ DAX COMBINEVALUES .)
Σημείωμα
Δεν είναι δυνατή η συσχέτιση μιας στήλης με μια διαφορετική στήλη στον ίδιο πίνακα. Αυτή η έννοια μερικές φορές συγχέεται με τη δυνατότητα ορισμού ενός περιορισμού εξωτερικού κλειδιού σχεσιακής βάσης δεδομένων, ο οποίος είναι μια αυτοαναφορά πίνακα. Μπορείτε να χρησιμοποιήσετε αυτή την έννοια της σχεσιακής βάσης δεδομένων για την αποθήκευση σχέσεων γονικού-θυγατρικού στοιχείου (για παράδειγμα, κάθε εγγραφή υπαλλήλου σχετίζεται με έναν υπάλληλο "στον οποίο αναφέρεται"). Ωστόσο, δεν μπορείτε να χρησιμοποιήσετε σχέσεις μοντέλων για να δημιουργήσετε μια ιεραρχία μοντέλων με βάση αυτόν τον τύπο σχέσης. Για να δημιουργήσετε μια ιεραρχία γονικού-θυγατρικού στοιχείου, ανατρέξτε στο θέμα Γονικές και θυγατρικές συναρτήσεις.
Τύποι δεδομένων στηλών
Ο τύπος δεδομένων τόσο για τη στήλη "από" όσο και για τη στήλη "προς" της σχέσης πρέπει να είναι ίδιος. Η εργασία με σχέσεις που έχουν οριστεί σε στήλες ημερομηνίας/ώρας μπορεί να μην συμπεριφέρεται όπως αναμένεται. Η μηχανή που αποθηκεύει δεδομένα Power BI χρησιμοποιεί μόνο τύπους δεδομένων ημερομηνίας/ώρας. Οι τύποι δεδομένων ημερομηνίας, ώρας και ημερομηνίας/ώρας/ζώνης ώρας είναι κατασκευές μορφοποίησης power BI που υλοποιούνται στην κορυφή. Οποιαδήποτε αντικείμενα που εξαρτώνται από το μοντέλο θα εξακολουθούν να εμφανίζονται ως Ημερομηνία/Ώρα στη μηχανή (όπως σχέσεις, ομάδες και ούτω καθεξής). Ως εκ τούτου, εάν ένας χρήστης επιλέξει Ημερομηνία από την καρτέλα Μοντελοποίηση για αυτές τις στήλες, εξακολουθεί να μην καταχωρείται ως η ίδια ημερομηνία, επειδή το τμήμα ώρας των δεδομένων εξακολουθεί να εξετάζεται από τον μηχανισμό. Διαβάστε περισσότερα σχετικά με τον τρόπο χειρισμού των τύπων ημερομηνίας/ώρας. Για να διορθώσετε τη συμπεριφορά, οι τύποι δεδομένων στήλης θα πρέπει να ενημερωθούν στο πρόγραμμα επεξεργασίας Power Query για να καταργήσετε το τμήμα Ώρα από τα δεδομένα που έχουν εισαχθεί, επομένως, όταν ο μηχανισμός χειρίζεται τα δεδομένα, οι τιμές θα εμφανίζονται ίδιες.
Πληθικότητα
Κάθε σχέση μοντέλου ορίζεται από έναν τύπο πληθικότητας. Υπάρχουν τέσσερις επιλογές τύπου πληθικότητας, που αντιπροσωπεύουν τα χαρακτηριστικά δεδομένων των σχετικών στηλών "από" και "προς". Η πλευρά "ένα" σημαίνει ότι η στήλη περιέχει μοναδικές τιμές. Η πλευρά "πολλά" σημαίνει ότι η στήλη μπορεί να περιέχει διπλότυπες τιμές.
Σημείωμα
Εάν μια λειτουργία ανανέωσης δεδομένων επιχειρήσει να φορτώσει διπλότυπες τιμές σε μια στήλη πλευράς "ένα", ολόκληρη η ανανέωση δεδομένων θα αποτύχει.
Οι τέσσερις επιλογές, μαζί με τις συντομογραφίες τους, περιγράφονται στην παρακάτω λίστα με κουκκίδες:
- Ένα προς πολλά (1:*)
- Πολλά προς ένα (*:1)
- Ένα προς ένα (1:1)
- Πολλά προς πολλά (*:*)
Όταν δημιουργείτε μια σχέση στο Power BI Desktop, το πρόγραμμα σχεδίασης εντοπίζει και ορίζει αυτόματα τον τύπο πληθικότητας. Το Power BI Desktop υποβάλλει ερώτημα στο μοντέλο για να μάθει ποιες στήλες περιέχουν μοναδικές τιμές. Για τα μοντέλα εισαγωγής, χρησιμοποιεί στατιστικά στοιχεία εσωτερικού χώρου αποθήκευσης, Για τα μοντέλα DirectQuery αποστέλλει ερωτήματα δημιουργίας προφίλ στην προέλευση δεδομένων. Ορισμένες φορές, ωστόσο, το Power BI Desktop μπορεί να κάνει λάθος. Μπορεί να γίνει λάθος όταν πίνακες δεν έχουν φορτωθεί ακόμα με δεδομένα ή επειδή οι στήλες που αναμένετε να περιέχουν διπλότυπες τιμές αυτήν τη στιγμή περιέχουν μοναδικές τιμές. Σε κάθε περίπτωση, μπορείτε να ενημερώσετε τον τύπο πληθικότητας με την προϋπόθεση ότι οποιεσδήποτε στήλες της πλευράς "ένα" περιέχουν μοναδικές τιμές (ή ο πίνακας δεν έχει φορτωθεί ακόμα με γραμμές δεδομένων).
Πληθικότητα ένα προς πολλά (και πολλά-προς-ένα)
Οι επιλογές πληθικότητας ένα-προς-πολλά και πολλά-προς-ένα είναι ουσιαστικά ίδιες και είναι επίσης οι πιο κοινοί τύποι πληθικότητας.
Όταν ρυθμίζετε τις παραμέτρους μιας σχέσης ένα-προς-πολλά ή πολλά-προς-ένα, θα επιλέξετε αυτό που αντιστοιχεί στη σειρά με την οποία συσχετίσατε τις στήλες. Σκεφτείτε πώς θα ρυθμίζετε τις παραμέτρους της σχέσης από τον πίνακα Προϊόν στον πίνακα Πωλήσεις , χρησιμοποιώντας τη στήλη Αναγνωριστικό προϊόντος που βρίσκεται σε κάθε πίνακα. Ο τύπος πληθικότητας θα ήταν ένα προς πολλά, καθώς η στήλη Αναγνωριστικό προϊόντος στον πίνακα Προϊόν περιέχει μοναδικές τιμές. Εάν συσχετίσατε τους πίνακες προς την αντίστροφη κατεύθυνση, Πωλήσεις σε Προϊόν, τότε η πληθικότητα θα ήταν πολλά προς ένα.
Πληθικότητα ένα προς ένα
Μια σχέση ένα προς ένα σημαίνει ότι και οι δύο στήλες περιέχουν μοναδικές τιμές. Αυτός ο τύπος πληθικότητας δεν είναι συνηθισμένος και πιθανώς αντιπροσωπεύει μια σχεδίαση μη βελτιστοποιημένου μοντέλου λόγω του χώρου αποθήκευσης πλεοναζόντων δεδομένων.
Για περισσότερες πληροφορίες σχετικά με τη χρήση αυτού του τύπου πληθικότητας, ανατρέξτε στο θέμα Οδηγίες για τις σχέσεις ένα προς ένα.
Πληθικότητα πολλά προς πολλά
Μια σχέση πολλά-προς-πολλά σημαίνει ότι και οι δύο στήλες μπορεί να περιέχουν διπλότυπες τιμές. Αυτός ο τύπος πληθικότητας δεν χρησιμοποιείται συχνά. Είναι συνήθως χρήσιμο κατά τη σχεδίαση σύνθετων απαιτήσεων μοντέλου. Μπορείτε να τη χρησιμοποιήσετε για να συσχετίσετε δεδομένα πολλά προς πολλά ή για να συσχετίσετε στοιχεία με μεγαλύτερη λεπτομέρεια. Για παράδειγμα, όταν τα δεδομένα προορισμού πωλήσεων αποθηκεύονται σε επίπεδο κατηγορίας προϊόντος και ο πίνακας διαστάσεων προϊόντος αποθηκεύεται σε επίπεδο προϊόντος.
Για οδηγίες σχετικά με τη χρήση αυτού του τύπου πληθικότητας, ανατρέξτε στο θέμα Οδηγίες για σχέσεις πολλά προς πολλά.
Σημείωμα
Ο τύπος πληθικότητας "Πολλά-προς-πολλά" υποστηρίζεται για μοντέλα που έχουν αναπτυχθεί για τον Power BI Report Server, τον Ιανουάριο του 2024 και νεότερες εκδόσεις.
Φιλοδώρημα
Στην προβολή μοντέλου του Power BI Desktop, μπορείτε να ερμηνεύσετε τον τύπο πληθικότητας μιας σχέσης εξετάζοντας τους δείκτες (1 ή *) σε οποιαδήποτε πλευρά της γραμμής σχέσης. Για να προσδιορίσετε ποιες στήλες σχετίζονται, θα πρέπει να επιλέξετε ή να τοποθετήσετε τον δρομέα πάνω από τη γραμμή σχέσης για να επισημάνετε τις στήλες.
Κατεύθυνση διασταυρούμενου φιλτραρίσματος
Κάθε σχέση μοντέλου ορίζεται με μια κατεύθυνση διασταυρούμενου φιλτραρίσματος. Η ρύθμιση προσδιορίζει τις κατευθύνσεις που θα μεταδοθούν από τα φίλτρα. Οι πιθανές επιλογές διασταυρούμενου φιλτραρίσματος εξαρτώνται από τον τύπο πληθικότητας.
Τύπος πληθικότητας | Επιλογές διασταυρούμενου φιλτραρίσματος |
---|---|
Ένα προς πολλά (ή πολλά προς ένα) | Μεμονωμένη Και τα δύο |
Ένα προς ένα | Και τα δύο |
Πολλοί προς πολλούς | Μονή (Πίνακας1 σε Πίνακας2) Μονή (Πίνακας2 στον Πίνακα1) Και τα δύο |
Η μοναδική κατεύθυνση διασταυρούμενου φιλτραρίσματος σημαίνει "μονή κατεύθυνση" και "Και τα δύο σημαίνει "και οι δύο κατευθύνσεις". Μια σχέση που φιλτράρει και προς τις δύο κατευθύνσεις περιγράφεται συχνά ως αμφίδρομη.
Για τις σχέσεις "ένα-προς-πολλά", η κατεύθυνση διασταυρούμενου φιλτραρίσματος είναι πάντα από την πλευρά "ένα" και προαιρετικά από την πλευρά "πολλά" (αμφίδρομη). Για σχέσεις ένα προς ένα, η κατεύθυνση διασταυρούμενου φιλτραρίσματος είναι πάντα και από τους δύο πίνακες. Τέλος, για σχέσεις πολλά προς πολλά, η κατεύθυνση διασταυρούμενου φιλτραρίσματος μπορεί να είναι είτε από έναν από τους πίνακες, είτε και από τους δύο πίνακες. Παρατηρήστε ότι όταν ο τύπος πληθικότητας περιλαμβάνει μια πλευρά "ένα", αυτά τα φίλτρα θα μεταδίδονται πάντα από αυτήν την πλευρά.
Όταν η κατεύθυνση διασταυρούμενου φιλτραρίσματος οριστεί σε Και τα δύο, γίνεται διαθέσιμη μια άλλη ιδιότητα. Μπορεί να εφαρμόσει αμφίδρομο φιλτράρισμα όταν το Power BI επιβάλλει κανόνες ασφάλειας σε επίπεδο γραμμών (RLS). Για περισσότερες πληροφορίες σχετικά με το RLS, ανατρέξτε στο θέμα Ασφάλεια σε επίπεδο γραμμών (RLS) με το Power BI Desktop.
Μπορείτε να τροποποιήσετε την κατεύθυνση διασταυρούμενου φιλτραρίσματος της σχέσης, συμπεριλαμβανομένης της απενεργοποίησης της μετάδοσης φίλτρου, χρησιμοποιώντας έναν υπολογισμό μοντέλου. Επιτυγχάνεται χρησιμοποιώντας τη συνάρτηση DAX CROSSFILTER .
Λάβετε υπόψη ότι οι σχέσεις αμφίδρομης κατεύθυνσης μπορούν να επηρεάσουν αρνητικά τις επιδόσεις. Επιπλέον, η προσπάθεια ρύθμισης παραμέτρων μιας σχέσης αμφίδρομης κατεύθυνσης θα μπορούσε να οδηγήσει σε ασαφείς διαδρομές μεταβίβασης φίλτρου. Σε αυτήν την περίπτωση, το Power BI Desktop ενδέχεται να αποτύχει στην πραγματοποίηση της αλλαγής σχέσης και θα σας ειδοποιήσει με ένα μήνυμα σφάλματος. Ορισμένες φορές, ωστόσο, το Power BI Desktop μπορεί να σας επιτρέψει να ορίσετε ασαφείς διαδρομές σχέσεων μεταξύ πινάκων. Η επίλυση ασάφειας διαδρομής σχέσης περιγράφεται αργότερα σε αυτό το άρθρο.
Συνιστούμε να χρησιμοποιείτε το φιλτράρισμα αμφίδρομης κατεύθυνσης μόνο όταν απαιτείται. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Οδηγίες για τις σχέσεις αμφίδρομης κατεύθυνσης.
Φιλοδώρημα
Στην προβολή μοντέλου του Power BI Desktop, μπορείτε να ερμηνεύσετε την κατεύθυνση διασταυρούμενου φιλτραρίσματος μιας σχέσης, παρατηρώντας τα βέλη κατά μήκος της γραμμής σχέσης. Μια μονή αιχμή βέλους αντιπροσωπεύει ένα φίλτρο μονής κατεύθυνσης προς την κατεύθυνση της αιχμής του βέλους. μια διπλή αιχμή βέλους αντιπροσωπεύει μια σχέση αμφίδρομης κατεύθυνσης.
Ορισμός αυτής της σχέσης ως ενεργής
Μπορεί να υπάρχει μόνο μία ενεργή διαδρομή μετάδοσης φίλτρου μεταξύ δύο πινάκων μοντέλων. Ωστόσο, είναι δυνατή η εισαγωγή πρόσθετων διαδρομών σχέσεων, παρόλο που πρέπει να ορίσετε αυτές τις σχέσεις ως ανενεργές. Οι ανενεργές σχέσεις μπορούν να γίνουν ενεργές μόνο κατά την αξιολόγηση ενός υπολογισμού μοντέλου. Επιτυγχάνεται χρησιμοποιώντας τη συνάρτηση DAX USERELATIONSHIP .
Κατά κανόνα, συνιστούμε να ορίζετε ενεργές σχέσεις όποτε αυτό είναι εφικτό. Διευρύνουν την εμβέλεια και τις δυνατότητες του τρόπου με τον οποίο οι συντάκτες αναφορών μπορούν να χρησιμοποιήσουν το μοντέλο σας. Η χρήση μόνο ενεργών σχέσεων σημαίνει ότι οι πίνακες διαστάσεων αναπαραγωγής ρόλων θα πρέπει να αναπαράγονται στο μοντέλο σας.
Σε συγκεκριμένες περιπτώσεις, ωστόσο, μπορείτε να ορίσετε μία ή περισσότερες ανενεργές σχέσεις για έναν πίνακα διαστάσεων αναπαραγωγής ρόλων. Μπορείτε να εξετάσετε αυτή τη σχεδίαση όταν:
- Δεν απαιτείται ταυτόχρονο φιλτράρισμα βάσει διαφορετικών ρόλων στις απεικονίσεις αναφοράς.
- Χρησιμοποιείτε τη
USERELATIONSHIP
συνάρτηση DAX για να ενεργοποιήσετε μια συγκεκριμένη σχέση για σχετικούς υπολογισμούς μοντέλων.
Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Οδηγίες για τις ενεργές και ανενεργές σχέσεις.
Φιλοδώρημα
Στην προβολή μοντέλου του Power BI Desktop, μπορείτε να ερμηνεύσετε την ενεργή και ανενεργή κατάσταση μιας σχέσης. Μια ενεργή σχέση αντιπροσωπεύεται από μια συμπαγή γραμμή. μια ανενεργή σχέση αντιπροσωπεύεται ως διακεκομμένη γραμμή.
Αποδοχή ακεραιότητας αναφορών
Η ιδιότητα Υιοθέτηση ακεραιότητας αναφορών είναι διαθέσιμη μόνο για σχέσεις ένα προς πολλά και ένα προς ένα μεταξύ δύο πινάκων λειτουργίας αποθήκευσης DirectQuery που ανήκουν στην ίδια ομάδα προέλευσης δεδομένων. Μπορείτε να ενεργοποιήσετε αυτή την ιδιότητα μόνο όταν η στήλη πλευράς "πολλά" δεν περιέχει τιμές NULL.
Όταν ενεργοποιηθεί, τα εγγενή ερωτήματα που αποστέλλονται στην προέλευση δεδομένων θα ενώσουν τους δύο πίνακες χρησιμοποιώντας ένα INNER JOIN
αντί για ένα OUTER JOIN
. Γενικά, η ενεργοποίηση αυτής της ιδιότητας βελτιώνει τις επιδόσεις των ερωτημάτων, παρόλο που εξαρτάται από τις λεπτομέρειες της προέλευσης δεδομένων.
Να ενεργοποιείτε πάντα αυτή την ιδιότητα όταν υπάρχει ένας περιορισμός εξωτερικού κλειδιού βάσης δεδομένων μεταξύ των δύο πινάκων. Ακόμα και όταν δεν υπάρχει περιορισμός εξωτερικού κλειδιού, εξετάστε το ενδεχόμενο να ενεργοποιήσετε την ιδιότητα εφόσον είστε βέβαιοι ότι η ακεραιότητα των δεδομένων υπάρχει.
Σημαντικό
Εάν η ακεραιότητα δεδομένων πρέπει να παραβιαστεί, ο εσωτερικός σύνδεσμος θα καταργήσει τις αταίριαστες γραμμές μεταξύ των πινάκων. Για παράδειγμα, σκεφτείτε έναν πίνακα μοντέλου Πωλήσεις με μια τιμή στήλης Αναγνωριστικό προϊόντος που δεν υπήρχε στον σχετικό πίνακα Προϊόν. Η μετάδοση φίλτρου από τον πίνακα Προϊόν στον πίνακα Πωλήσεις θα καταργήσει τις γραμμές πωλήσεων για άγνωστα προϊόντα. Αυτό θα είχε ως αποτέλεσμα την υποεκτίμηση των αποτελεσμάτων των πωλήσεων.
Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Ρυθμίσεις υιοθέτησης ακεραιότητας αναφορών στο Power BI Desktop.
Σχετικές συναρτήσεις DAX
Υπάρχουν διάφορες συναρτήσεις DAX που σχετίζονται με τις σχέσεις μοντέλων. Κάθε συνάρτηση περιγράφεται συνοπτικά στην παρακάτω λίστα με κουκκίδες:
- RELATED: Ανακτά την τιμή από την πλευρά "ένα" μιας σχέσης. Είναι χρήσιμο όταν συμπεριλαμβάνετε υπολογισμούς από διαφορετικούς πίνακες που αξιολογούνται σε περιβάλλον γραμμής.
- RELATEDTABLE: Ανακτήστε έναν πίνακα γραμμών από την πλευρά "πολλά" μιας σχέσης.
- USERELATIONSHIP: Επιτρέπει σε έναν υπολογισμό να χρησιμοποιεί μια ανενεργή σχέση. (Τεχνικά, αυτή η συνάρτηση τροποποιεί το βάρος μιας σχέσης συγκεκριμένου ανενεργού μοντέλου συμβάλλοντας στην επιρροή της χρήσης του.) Είναι χρήσιμο όταν το μοντέλο σας περιλαμβάνει έναν πίνακα διαστάσεων αναπαραγωγής ρόλων και επιλέγετε να δημιουργήσετε ανενεργές σχέσεις από αυτόν τον πίνακα. Μπορείτε επίσης να χρησιμοποιήσετε αυτή τη συνάρτηση για να επιλύσετε ασάφεια στις διαδρομές φίλτρου.
- CROSSFILTER: Τροποποιεί την κατεύθυνση διασταυρούμενου φιλτραρίσματος της σχέσης (σε μία ή και στις δύο) ή απενεργοποιεί τη μετάδοση φίλτρου (καμία). Είναι χρήσιμο όταν πρέπει να αλλάξετε ή να παραβλέψετε τις σχέσεις μοντέλων κατά την αξιολόγηση ενός συγκεκριμένου υπολογισμού.
- COMBINEVALUES: Συνδέει δύο ή περισσότερες συμβολοσειρές κειμένου σε μία συμβολοσειρά κειμένου. Ο σκοπός αυτής της συνάρτησης είναι η υποστήριξη σχέσεων πολλών στηλών σε μοντέλα DirectQuery όταν οι πίνακες ανήκουν στην ίδια ομάδα προέλευσης δεδομένων.
- TREATAS: Εφαρμόζει το αποτέλεσμα μιας παράστασης πίνακα ως φίλτρα σε στήλες από έναν μη συσχετισμένο πίνακα. Είναι χρήσιμο σε σύνθετα σενάρια όταν θέλετε να δημιουργήσετε μια εικονική σχέση κατά την αξιολόγηση ενός συγκεκριμένου υπολογισμού.
- Γονικές και θυγατρικές συναρτήσεις: Μια οικογένεια συσχετισμένων συναρτήσεων που μπορείτε να χρησιμοποιήσετε για τη δημιουργία υπολογιζόμενων στηλών για την εξομάλυνση μιας γονικής-θυγατρικής ιεραρχίας. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε αυτές τις στήλες για να δημιουργήσετε μια ιεραρχία σταθερού επιπέδου.
Αξιολόγηση σχέσης
Οι σχέσεις μοντέλων, από την άποψη της αξιολόγησης, ταξινομούνται είτε ως κανονικές είτε ως περιορισμένες. Δεν είναι ιδιότητα σχέσης με δυνατότητα ρύθμισης παραμέτρων. Στην πραγματικότητα, αυτό προκύπτει από τον τύπο πληθικότητας και την προέλευση δεδομένων των δύο σχετιζόμενων πινάκων. Είναι σημαντικό να κατανοήσετε τον τύπο αξιολόγησης, επειδή ενδέχεται να υπάρξουν επιπτώσεις στις επιδόσεις ή συνέπειες σε περίπτωση που παραβιαστεί η ακεραιότητα των δεδομένων. Αυτές οι συνέπειες και οι συνέπειες ακεραιότητας περιγράφονται σε αυτό το θέμα.
Πρώτον, ορισμένες θεωρία μοντελοποίησης απαιτούνται για την πλήρη κατανόηση των αξιολογήσεων σχέσεων.
Ένα μοντέλο εισαγωγής ή DirectQuery αντλεί όλα τα δεδομένα του είτε από το cache του Vertipaq είτε από τη βάση δεδομένων προέλευσης. Και στις δύο παρουσίες, το Power BI μπορεί να προσδιορίσει αν υπάρχει η πλευρά "ένα" μιας σχέσης.
Ωστόσο, ένα σύνθετο μοντέλο μπορεί να αποτελείται από πίνακες που χρησιμοποιούν διαφορετικές λειτουργίες αποθήκευσης (εισαγωγή, DirectQuery ή διπλή) ή πολλές προελεύσεις DirectQuery. Κάθε προέλευση, συμπεριλαμβανομένης της cache Vertipaq των εισαγόμενων δεδομένων, θεωρείται ότι είναι μια ομάδα προέλευσης δεδομένων. Οι σχέσεις μοντέλων μπορούν τότε να ταξινομηθούν ως εντός ομάδας προέλευσης δεδομένων ή μεταξύ ομάδων προέλευσης δεδομένων. Μια σχέση εντός ομάδας προέλευσης δεδομένων συσχετίζει δύο πίνακες εντός μιας ομάδας προέλευσης δεδομένων, ενώ μια σχέση μεταξύ ομάδων προέλευσης δεδομένων συσχετίζει πίνακες σε δύο ομάδες προέλευσης δεδομένων. Σημειώστε ότι οι σχέσεις σε μοντέλα εισαγωγής ή DirectQuery είναι πάντα εντός ομάδας προέλευσης δεδομένων.
Ακολουθεί ένα παράδειγμα ενός σύνθετου μοντέλου.
Σε αυτό το παράδειγμα, το σύνθετο μοντέλο αποτελείται από δύο ομάδες προέλευσης δεδομένων: μια ομάδα προέλευσης δεδομένων Vertipaq και μια ομάδα προέλευσης δεδομένων DirectQuery. Η ομάδα προέλευσης δεδομένων Vertipaq περιέχει τρεις πίνακες και η ομάδα προέλευσης δεδομένων DirectQuery περιέχει δύο πίνακες. Υπάρχει μια σχέση μεταξύ ομάδων προέλευσης δεδομένων για τη συσχέτιση ενός πίνακα στην ομάδα προέλευσης δεδομένων Vertipaq με έναν πίνακα στην ομάδα προέλευσης δεδομένων DirectQuery.
Κανονικές σχέσεις
Μια σχέση μοντέλου είναι κανονική όταν η μηχανή ερωτημάτων μπορεί να καθορίσει την πλευρά "ένα" της σχέσης. Επιβεβαιώνει ότι η στήλη πλευράς "ένα" περιέχει μοναδικές τιμές. Όλες οι σχέσεις "ένα-προς-πολλά" εντός της ομάδας προέλευσης δεδομένων είναι κανονικές σχέσεις.
Στο παρακάτω παράδειγμα, υπάρχουν δύο κανονικές σχέσεις, οι οποίες χαρακτηρίζονται ως R. Οι σχέσεις περιλαμβάνουν τη σχέση "ένα-προς-πολλά" που περιέχεται στην ομάδα προέλευσης δεδομένων Vertipaq και τη σχέση "ένα-προς-πολλά" που περιέχεται στην προέλευση DirectQuery.
Για μοντέλα εισαγωγής, όπου όλα τα δεδομένα αποθηκεύονται στο cache του Vertipaq, το Power BI δημιουργεί μια δομή δεδομένων για κάθε κανονική σχέση κατά τον χρόνο ανανέωσης των δεδομένων. Οι δομές δεδομένων αποτελούνται από αντιστοιχίσεις ευρετηρίου με όλες τις τιμές στήλης προς στήλη και ο σκοπός τους είναι να επιταχύνουν τη συμμετοχή πινάκων κατά τον χρόνο ερωτήματος.
Κατά τον χρόνο ερωτήματος, οι κανονικές σχέσεις επιτρέπουν την πραγματοποίηση επέκτασης πίνακα. Η επέκταση πίνακα έχει ως αποτέλεσμα τη δημιουργία ενός εικονικού πίνακα, συμπεριλαμβάνοντας τις εγγενείς στήλες του βασικού πίνακα και, στη συνέχεια, επεκτείνοντας τους σχετικούς πίνακες. Για τους πίνακες εισαγωγής, η επέκταση πίνακα πραγματοποιείται στη μηχανή ερωτημάτων. Για πίνακες DirectQuery πραγματοποιείται στο εγγενές ερώτημα που αποστέλλεται στη βάση δεδομένων προέλευσης (εφόσον η ιδιότητα Υιοθέτηση ακεραιότητας αναφορών δεν είναι ενεργοποιημένη). Στη συνέχεια, η μηχανή ερωτημάτων ενεργεί πάνω στον ανεπτυγμένο πίνακα, εφαρμόζοντας φίλτρα και ομαδοποιώντας σύμφωνα με τις τιμές στις ανεπτυγμένες στήλες του πίνακα.
Σημείωμα
Οι ανενεργές σχέσεις επεκτείνονται επίσης, ακόμα και όταν η σχέση δεν χρησιμοποιείται από έναν υπολογισμό. Οι σχέσεις αμφίδρομης κατεύθυνσης δεν έχουν καμία επίδραση στην επέκταση πίνακα.
Για τις σχέσεις "ένα-προς-πολλά", η επέκταση πίνακα πραγματοποιείται από τις πλευρές "πολλά" προς τις πλευρές "ένα", χρησιμοποιώντας LEFT OUTER JOIN
σημασιολογία. Όταν δεν υπάρχει μια αντίστοιχη τιμή από την πλευρά "πολλά" στην πλευρά "ένα", προστίθεται μια κενή εικονική γραμμή στον πίνακα πλευράς "ένα". Αυτή η συμπεριφορά ισχύει μόνο για κανονικές σχέσεις, όχι σε περιορισμένες σχέσεις.
Η επέκταση πίνακα πραγματοποιείται επίσης για σχέσεις ένα προς ένα εντός ομάδας προέλευσης δεδομένων, αλλά χρησιμοποιώντας FULL OUTER JOIN
σημασιολογία. Αυτός ο τύπος συνδέσμου εξασφαλίζει ότι προστίθενται κενές εικονικές γραμμές σε οποιαδήποτε πλευρά, όταν είναι απαραίτητο.
Οι κενές εικονικές γραμμές είναι ουσιαστικά άγνωστα μέλη. Τα άγνωστα μέλη αντιπροσωπεύουν παραβιάσεις ακεραιότητας αναφορών όπου η τιμή της πλευράς "πολλά" δεν έχει αντίστοιχη τιμή της πλευράς "ένα". Ιδανικά, αυτά τα κενά δεν πρέπει να υπάρχουν. Μπορούν να εξαλειφθούν με τον καθαρισμό ή την επιδιόρθωση των δεδομένων προέλευσης.
Δείτε πώς λειτουργεί η επέκταση πίνακα με ένα παράδειγμα με εφέ κίνησης.
Σε αυτό το παράδειγμα, το μοντέλο αποτελείται από τρεις πίνακες: Κατηγορία, Προϊόν και Πωλήσεις. Ο πίνακας Κατηγορία σχετίζεται με τον πίνακα Προϊόν με μια σχέση "Ένα-προς-πολλά" και ο πίνακας Προϊόν σχετίζεται με τον πίνακα Πωλήσεις με μια σχέση "Ένα-προς-πολλά". Ο πίνακας Κατηγορία περιέχει δύο γραμμές, ο πίνακας Προϊόν περιέχει τρεις γραμμές και ο πίνακας Πωλήσεις περιέχει πέντε γραμμές. Υπάρχουν τιμές που συμφωνούν και στις δύο πλευρές όλων των σχέσεων, που σημαίνει ότι δεν υπάρχουν παραβιάσεις ακεραιότητας αναφορών. Αποκαλύπτεται ένας ανεπτυγμένος πίνακας χρόνου ερωτήματος. Ο πίνακας αποτελείται από τις στήλες και από τους τρεις πίνακες. Είναι ουσιαστικά μια αποκανονικοποιημένη προοπτική των δεδομένων που περιέχονται στους τρεις πίνακες. Προστίθεται μια νέα γραμμή στον πίνακα Πωλήσεις και διαθέτει μια τιμή αναγνωριστικού παραγωγής (9) που δεν έχει αντίστοιχη τιμή στον πίνακα Προϊόν . Πρόκειται για παραβίαση ακεραιότητας αναφορών. Στον ανεπτυγμένο πίνακα, η νέα γραμμή έχει (Κενές) τιμές για τις στήλες του πίνακα Κατηγορία και Προϊόν .
Περιορισμένες σχέσεις
Μια σχέση μοντέλου είναι περιορισμένη όταν δεν υπάρχει εγγυημένη πλευρά "ένα". Μια περιορισμένη σχέση μπορεί να συμβεί για δύο λόγους:
- Η σχέση χρησιμοποιεί έναν τύπο πληθικότητας πολλά-προς-πολλά (ακόμα και αν μία ή και οι δύο στήλες περιέχουν μοναδικές τιμές).
- Η σχέση είναι μεταξύ ομάδων προέλευσης δεδομένων (η οποία μπορεί να ισχύει μόνο για τα σύνθετα μοντέλα).
Στο παρακάτω παράδειγμα, υπάρχουν δύο περιορισμένες σχέσεις, οι οποίες χαρακτηρίζονται ως L. Οι δύο σχέσεις περιλαμβάνουν τη σχέση πολλά-προς-πολλά που περιέχεται εντός της ομάδας προέλευσης δεδομένων Vertipaq και τη σχέση ένα-προς-πολλά μεταξύ ομάδων προέλευσης δεδομένων.
Για τα μοντέλα εισαγωγής, οι δομές δεδομένων δεν δημιουργούνται ποτέ για περιορισμένες σχέσεις. Σε αυτή την περίπτωση, το Power BI επιλύει συνδέσμους πινάκων κατά τον χρόνο ερωτήματος.
Η επέκταση πίνακα δεν πραγματοποιείται ποτέ για περιορισμένες σχέσεις. Οι σύνδεσμοι πινάκων επιτυγχάνονται χρησιμοποιώντας INNER JOIN
τη σημασιολογία και, για αυτόν το λόγο, δεν προστίθενται κενές εικονικές γραμμές για την αντιστάθμιση των παραβιάσεων ακεραιότητας αναφορών.
Υπάρχουν άλλοι περιορισμοί που σχετίζονται με περιορισμένες σχέσεις:
- Η
RELATED
συνάρτηση DAX δεν μπορεί να χρησιμοποιηθεί για την ανάκτηση των τιμών στήλης πλευράς "ένα". - Η επιβολή του RLS έχει περιορισμούς τοπολογίας.
Φιλοδώρημα
Στην προβολή μοντέλου του Power BI Desktop, μπορείτε να ερμηνεύσετε μια σχέση ως περιορισμένη. Μια περιορισμένη σχέση αντιπροσωπεύεται με σημάδια τύπου παρένθεσης ( ) μετά τους δείκτες πληθικότητας.
Επίλυση ασάφειας διαδρομής σχέσης
Οι σχέσεις αμφίδρομης κατεύθυνσης μπορούν να εισαγάγουν πολλές και, επομένως, ασαφείς διαδρομές μετάδοσης φίλτρου μεταξύ των πινάκων μοντέλων. Κατά την αξιολόγηση ασάφειας, το Power BI επιλέγει τη διαδρομή μετάδοσης φίλτρου σύμφωνα με την προτεραιότητα και το βάρος της.
Προτεραιότητα
Τα επίπεδα προτεραιότητας ορίζουν μια ακολουθία κανόνων που χρησιμοποιεί το Power BI για την επίλυση ασάφειας διαδρομής σχέσης. Η πρώτη αντιστοιχία κανόνα προσδιορίζει τη διαδρομή που θα ακολουθήσει το Power BI. Κάθε παρακάτω κανόνας περιγράφει τον τρόπο ροής των φίλτρων από έναν πίνακα προέλευσης σε έναν πίνακα προορισμού.
- Μια διαδρομή που αποτελείται από σχέσεις ένα-προς-πολλά.
- Μια διαδρομή που αποτελείται από σχέσεις ένα-προς-πολλά ή πολλά-προς-πολλά.
- Μια διαδρομή που αποτελείται από σχέσεις πολλά προς ένα.
- Μια διαδρομή που αποτελείται από σχέσεις ένα-προς-πολλά από τον πίνακα προέλευσης σε έναν ενδιάμεσο πίνακα ακολουθούμενο από σχέσεις πολλά-προς-ένα από τον ενδιάμεσο πίνακα προς τον πίνακα προορισμού.
- Μια διαδρομή που αποτελείται από σχέσεις ένα-προς-πολλά ή πολλά-προς-πολλά από τον πίνακα προέλευσης σε έναν ενδιάμεσο πίνακα ακολουθούμενο από σχέσεις πολλά-προς-ένα ή πολλά-προς-πολλά από τον ενδιάμεσο πίνακα στον πίνακα προορισμού.
- Οποιαδήποτε άλλη διαδρομή.
Όταν μια σχέση περιλαμβάνεται σε όλες τις διαθέσιμες διαδρομές, καταργείται από την εξέταση από όλες τις διαδρομές.
Βάρος
Κάθε σχέση σε μια διαδρομή έχει ένα βάρος. Από προεπιλογή, κάθε βάρος σχέσης είναι ίσο, εκτός εάν χρησιμοποιείται η συνάρτηση USERELATIONSHIP . Το βάρος διαδρομής είναι το μέγιστο για όλα τα βάρη σχέσης κατά μήκος της διαδρομής. Το Power BI χρησιμοποιεί τα βάρη διαδρομής για την επίλυση ασάφειας μεταξύ πολλών διαδρομών στο ίδιο επίπεδο προτεραιότητας. Δεν θα επιλέξει μια διαδρομή με χαμηλότερη προτεραιότητα, αλλά θα επιλέξει τη διαδρομή με το υψηλότερο βάρος. Ο αριθμός των σχέσεων στη διαδρομή δεν επηρεάζει το βάρος.
Μπορείτε να επηρεάσετε το βάρος μιας σχέσης χρησιμοποιώντας τη συνάρτηση USERELATIONSHIP . Το βάρος προσδιορίζεται από το επίπεδο ένθεσης της κλήσης σε αυτή τη συνάρτηση, όπου η εσωτερική κλήση λαμβάνει το υψηλότερο βάρος.
Ας δούμε το παρακάτω παράδειγμα. Η μέτρηση Πωλήσεις προϊόντων αντιστοιχίζει μεγαλύτερο βάρος στη σχέση μεταξύ των Sales[ProductID] και Product[ProductID], ακολουθούμενη από τη σχέση μεταξύ των inventory[ProductID] και Product[ProductID].
Product Sales =
CALCULATE(
CALCULATE(
SUM(Sales[SalesAmount]),
USERELATIONSHIP(Sales[ProductID], Product[ProductID])
),
USERELATIONSHIP(Inventory[ProductID], Product[ProductID])
)
Σημείωμα
Εάν το Power BI εντοπίσει πολλές διαδρομές που έχουν την ίδια προτεραιότητα και το ίδιο βάρος, θα επιστρέψει ένα ασαφές σφάλμα διαδρομής. Σε αυτή την περίπτωση, πρέπει να επιλύσετε την ασάφεια, επηρεάζοντας τα βάρη της σχέσης χρησιμοποιώντας τη συνάρτηση USERELATIONSHIP ή καταργώντας ή τροποποιώντας σχέσεις μοντέλου.
Προτίμηση απόδοσης
Η ακόλουθη λίστα παραγγέλνει επιδόσεις μετάδοσης φίλτρου, από την ταχύτερη έως την πιο αργή απόδοση:
- Σχέσεις "Ένα-προς-πολλά" εντός ομάδας προέλευσης δεδομένων
- Σχέσεις μοντέλων πολλά προς πολλά που επιτυγχάνονται με έναν ενδιάμεσο πίνακα και περιλαμβάνουν τουλάχιστον μία αμφίδρομη σχέση
- Σχέσεις πληθικότητας πολλά προς πολλά
- Σχέσεις μεταξύ ομάδων προέλευσης δεδομένων
Σχετικό περιεχόμενο
Για περισσότερες πληροφορίες σχετικά με αυτό το άρθρο, ανατρέξτε στους παρακάτω πόρους:
- Κατανοήστε το αστεροειδές σχήμα και τη σημασία του για το Power BI
- Οδηγίες για τις σχέσεις ένα προς ένα
- Οδηγίες για τις σχέσεις πολλά προς πολλά
- Οδηγίες για τις ενεργές και ανενεργές σχέσεις
- Οδηγίες για τις σχέσεις αμφίδρομης κατεύθυνσης
- Οδηγίες αντιμετώπισης προβλημάτων σχέσεων
- Βίντεο: Οι σχέσεις Τι πρέπει και Τι δεν πρέπει να κάνω του Power BI
- Ερωτήσεις; Δοκιμάστε να ρωτήσετε τον Κοινότητα Power BI
- Προτάσεις? Συνεισφέρετε ιδέες για τη βελτίωση του Power BI