Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Η απλότητα και η ευκολία χρήσης που επιτρέπει στους χρήστες του Power BI να συλλέγουν γρήγορα δεδομένα και να δημιουργούν ενδιαφέρουσες και ισχυρές αναφορές για τη λήψη έξυπνων επιχειρηματικών αποφάσεων επιτρέπει επίσης στους χρήστες να δημιουργούν εύκολα ερωτήματα με κακή απόδοση. Αυτό συμβαίνει συχνά όταν υπάρχουν δύο πίνακες που σχετίζονται με τον τρόπο με τον οποίο ένα εξωτερικό κλειδί συσχετίζει πίνακες SQL ή λίστες του SharePoint. (Για την ιστορία, αυτό το ζήτημα δεν αφορά συγκεκριμένα την SQL ή το SharePoint και παρουσιάζεται σε πολλά σενάρια εξαγωγής δεδομένων παρασκηνίου, ειδικά όταν το σχήμα είναι ρευστό και προσαρμόσιμο.) Επίσης, δεν υπάρχει τίποτα εγγενώς λάθος με την αποθήκευση δεδομένων σε ξεχωριστούς πίνακες που μοιράζονται ένα κοινό κλειδί - στην πραγματικότητα αυτό είναι ένα θεμελιώδες δόγμα του σχεδιασμού και της κανονικοποίησης της βάσης δεδομένων. Αλλά συνεπάγεται έναν καλύτερο τρόπο επέκτασης της σχέσης.
Εξετάστε το ακόλουθο παράδειγμα μιας λίστας πελατών του SharePoint.
Και στην παρακάτω λίστα τοποθεσιών αναφέρεται.
Κατά την πρώτη σύνδεση στη λίστα, η θέση εμφανίζεται ως καρτέλα.
Αυτά τα δεδομένα ανώτατου επιπέδου συλλέγονται μέσω μιας κλήσης HTTP στο API του SharePoint (αγνοώντας την κλήση μετα-δεδομένων), την οποία μπορείτε να δείτε σε οποιοδήποτε πρόγραμμα εντοπισμού σφαλμάτων web.
Όταν αναπτύσσετε την εγγραφή, βλέπετε τα πεδία ενωμένα από τον δευτερεύοντα πίνακα.
Κατά την επέκταση σχετικών γραμμών από έναν πίνακα σε έναν άλλο, η προεπιλεγμένη συμπεριφορά του Power BI είναι η δημιουργία μιας κλήσης στο Table.ExpandTableColumn. Μπορείτε να το δείτε στο πεδίο τύπου που δημιουργήθηκε. Δυστυχώς, αυτή η μέθοδος δημιουργεί μια μεμονωμένη κλήση στον δεύτερο πίνακα για κάθε σειρά στον πρώτο πίνακα.
Αυτό αυξάνει τον αριθμό των κλήσεων HTTP κατά μία για κάθε σειρά στην κύρια λίστα. Αυτό μπορεί να μην φαίνεται πολύ στο παραπάνω παράδειγμα των πέντε ή έξι γραμμών, αλλά σε συστήματα παραγωγής όπου οι λίστες του SharePoint φτάνουν τις εκατοντάδες χιλιάδες γραμμές, αυτό μπορεί να προκαλέσει σημαντική υποβάθμιση της εμπειρίας.
Όταν τα ερωτήματα φτάσουν σε αυτό το σημείο συμφόρησης, ο καλύτερος μετριασμός είναι να αποφύγετε τη συμπεριφορά κλήσης ανά γραμμή χρησιμοποιώντας έναν κλασικό σύνδεσμο πίνακα. Αυτό διασφαλίζει ότι θα υπάρξει μόνο μία κλήση για την ανάκτηση του δεύτερου πίνακα και η υπόλοιπη επέκταση μπορεί να πραγματοποιηθεί στη μνήμη χρησιμοποιώντας το κοινό κλειδί μεταξύ των δύο πινάκων. Η διαφορά απόδοσης μπορεί να είναι τεράστια σε ορισμένες περιπτώσεις.
Αρχικά, ξεκινήστε με τον αρχικό πίνακα, σημειώνοντας τη στήλη που θέλετε να αναπτύξετε και βεβαιωθείτε ότι έχετε το αναγνωριστικό του αντικειμένου, ώστε να μπορείτε να το ταιριάξετε. Συνήθως, το εξωτερικό κλειδί ονομάζεται παρόμοιο με το εμφανιζόμενο όνομα της στήλης με προσαρτημένο το αναγνωριστικό . Σε αυτό το παράδειγμα, είναι το LocationId.
Δεύτερον, φορτώστε τον δευτερεύοντα πίνακα, φροντίζοντας να συμπεριλάβετε το αναγνωριστικό, το οποίο είναι το ξένο κλειδί. Κάντε δεξί κλικ στον πίνακα Queries για να δημιουργήσετε ένα νέο ερώτημα.
Τέλος, ενώστε τους δύο πίνακες χρησιμοποιώντας τα αντίστοιχα ονόματα στηλών που ταιριάζουν. Συνήθως μπορείτε να βρείτε αυτό το πεδίο αναπτύσσοντας πρώτα τη στήλη και, στη συνέχεια, αναζητώντας τις στήλες που ταιριάζουν στην προεπισκόπηση.
Σε αυτό το παράδειγμα, μπορείτε να δείτε ότι το LocationId στην κύρια λίστα ταιριάζει με το Id στη δευτερεύουσα λίστα. Το περιβάλλον εργασίας χρήστη το μετονομάζει σε Location.Id για να κάνει το όνομα της στήλης μοναδικό. Τώρα ας χρησιμοποιήσουμε αυτές τις πληροφορίες για να συγχωνεύσουμε τους πίνακες.
Κάνοντας δεξί κλικ στον πίνακα ερωτημάτων και επιλέγοντας Νέο ερώτημα>Συνδυασμός>ερωτημάτων συγχώνευσης ως νέων, βλέπετε ένα φιλικό περιβάλλον εργασίας χρήστη που θα σας βοηθήσει να συνδυάσετε αυτά τα δύο ερωτήματα.
Επιλέξτε κάθε πίνακα από την αναπτυσσόμενη λίστα για να δείτε μια προεπισκόπηση του ερωτήματος.
Αφού επιλέξετε και τους δύο πίνακες, επιλέξτε τη στήλη που ενώνει λογικά τους πίνακες (σε αυτό το παράδειγμα, είναι το LocationId από τον πρωτεύοντα πίνακα και το Id από τον δευτερεύοντα πίνακα). Το παράθυρο διαλόγου θα σας καθοδηγήσει πόσες από τις σειρές ταιριάζουν χρησιμοποιώντας αυτό το ξένο κλειδί. Πιθανότατα θα θέλετε να χρησιμοποιήσετε το προεπιλεγμένο είδος συνδέσμου (αριστερά έξω) για αυτού του είδους τα δεδομένα.
Επιλέξτε OK και θα δείτε ένα νέο ερώτημα, το οποίο είναι το αποτέλεσμα της σύνδεσης. Η επέκταση του αρχείου τώρα δεν συνεπάγεται πρόσθετες κλήσεις στο backend.
Η ανανέωση αυτών των δεδομένων θα έχει ως αποτέλεσμα μόνο δύο κλήσεις στο SharePoint—μία για την κύρια λίστα και μία για τη δευτερεύουσα λίστα. Η σύνδεση θα πραγματοποιηθεί στη μνήμη, μειώνοντας σημαντικά τον αριθμό των κλήσεων στο SharePoint.
Αυτή η προσέγγιση μπορεί να χρησιμοποιηθεί για οποιουσδήποτε δύο πίνακες στο PowerQuery που έχουν ένα αντίστοιχο εξωτερικό κλειδί.
Σημείωση
Οι λίστες χρηστών και η ταξινόμηση του SharePoint είναι επίσης προσβάσιμες ως πίνακες και μπορούν να συνδεθούν ακριβώς με τον τρόπο που περιγράφεται παραπάνω, υπό την προϋπόθεση ότι ο χρήστης έχει επαρκή δικαιώματα πρόσβασης σε αυτές τις λίστες.