Χρήση επικαλυπτομένων παραμέτρων σε σελιδοποιημένες αναφορές
Αυτό το άρθρο απευθύνεται σε εσάς ως συντάκτης αναφορών που σχεδιάζει σελιδοποιημένες αναφορές Power BI. Παρέχει σενάρια για τη σχεδίαση επικαλυπτών παραμέτρων. Οι επικαλυπτικές παράμετροι είναι παράμετροι αναφοράς με εξαρτήσεις. Όταν ένας χρήστης αναφοράς επιλέγει μια τιμή (ή τιμές) παραμέτρου, χρησιμοποιείται για να ορίσει τις διαθέσιμες τιμές για μια άλλη παράμετρο.
Σημείωμα
Μια εισαγωγή στις επικαλυπτόμενες παραμέτρους και ο τρόπος ρυθμοποίησής τους δεν καλύπτονται σε αυτό το άρθρο. Εάν δεν είστε πλήρως εξοικειωμένοι με τις επικαλυπτόμενες παραμέτρους, συνιστούμε να διαβάσετε πρώτα το θέμα Προσθήκη επικαλυπτήριων παραμέτρων σε μια αναφορά στο Power BI Εργαλείο δόμησης αναφορών.
Σενάρια σχεδίασης
Υπάρχουν δύο σενάρια σχεδίασης για τη χρήση επικαλυπτών παραμέτρων. Μπορούν να χρησιμοποιηθούν αποτελεσματικά για:
- Φιλτράρισμα μεγάλων συνόλων στοιχείων
- Παρουσίαση σχετικών στοιχείων
Παράδειγμα βάσης δεδομένων
Τα παραδείγματα που παρουσιάζονται σε αυτό το άρθρο βασίζονται σε μια Βάση δεδομένων SQL του Azure. Η βάση δεδομένων καταγράφει τις λειτουργίες πωλήσεων και περιέχει διάφορους πίνακες που αποθηκεύουν μεταπωλητές, προϊόντα και παραγγελίες πωλήσεων.
Ένας πίνακας με την ονομασία Μεταπωλητής αποθηκεύει μία εγγραφή για κάθε μεταπωλητή και περιέχει πολλές χιλιάδες εγγραφές. Ο πίνακας Reseller έχει τις εξής στήλες:
- Κωδικός μεταπωλητή (ακέραιος)
- ResellerName
- Χώρα-Περιοχή
- Νομός-Επαρχία
- Πόλη
- PostalCode
Υπάρχει επίσης ένας πίνακας με την ονομασία Πωλήσεις. Αποθηκεύει εγγραφές παραγγελιών πωλήσεων και έχει μια σχέση εξωτερικού κλειδιού με τον πίνακα Μεταπωλητής , στη στήλη Κωδικός μεταπωλητή.
Απαίτηση παραδείγματος
Υπάρχει μια απαίτηση για την ανάπτυξη μιας αναφοράς προφίλ μεταπωλητή. Η αναφορά πρέπει να έχει σχεδιαστεί για την εμφάνιση πληροφοριών για έναν μόνο μεταπωλητή. Δεν συνιστάται ο χρήστης αναφοράς να εισαγάγει έναν κωδικό μεταπωλητή, καθώς τον απομνημονεύει σπάνια.
Φιλτράρισμα μεγάλων συνόλων στοιχείων
Ας ρίξουμε μια ματιά σε τρία παραδείγματα για να σας βοηθήσουμε να περιορίσετε τα μεγάλα σύνολα διαθέσιμων στοιχείων, όπως οι μεταπωλητές. Είναι οι εξής:
- Φιλτράρισμα κατά σχετικές στήλες
- Φιλτράρισμα κατά στήλη ομαδοποίησης
- Φιλτράρισμα κατά μοτίβο αναζήτησης
Φιλτράρισμα κατά σχετικές στήλες
Σε αυτό το παράδειγμα, ο χρήστης αναφοράς αλληλεπιδρά με πέντε παραμέτρους αναφοράς. Πρέπει να επιλέξουν χώρα/περιοχή, πολιτεία-επαρχία, πόλη και, στη συνέχεια, ταχυδρομικό κώδικα. Στη συνέχεια, μια τελική παράμετρος εμφανίζει τους μεταπωλητές που βρίσκονται σε αυτή τη γεωγραφική θέση.
Δείτε πώς μπορείτε να αναπτύξετε τις επικαλυπτικές παραμέτρους:
Δημιουργήστε τις πέντε παραμέτρους αναφοράς, ταξινομημένες με τη σωστή σειρά.
Δημιουργήστε το σύνολο δεδομένων Χώρα/Περιοχή που ανακτά διακριτές τιμές χώρας/περιοχής, χρησιμοποιώντας την ακόλουθη πρόταση ερωτήματος:
SELECT DISTINCT [Country-Region] FROM [Reseller] ORDER BY [Country-Region]
Δημιουργήστε το σύνολο δεδομένων StateProvince που ανακτά διακριτές τιμές πολιτείας-επαρχίας για την επιλεγμένη χώρα/περιοχή, χρησιμοποιώντας την ακόλουθη πρόταση ερωτήματος:
SELECT DISTINCT [State-Province] FROM [Reseller] WHERE [Country-Region] = @CountryRegion ORDER BY [State-Province]
Δημιουργήστε το σύνολο δεδομένων City που ανακτά διακριτές τιμές πόλης για την επιλεγμένη χώρα-περιοχή και πολιτεία/επαρχία, χρησιμοποιώντας την ακόλουθη πρόταση ερωτήματος:
SELECT DISTINCT [City] FROM [Reseller] WHERE [Country-Region] = @CountryRegion AND [State-Province] = @StateProvince ORDER BY [City]
Συνεχίστε αυτό το μοτίβο για να δημιουργήσετε το σύνολο δεδομένων Ταχυδρομικός κώδικας .
Δημιουργήστε το σύνολο δεδομένων Μεταπωλητής για την ανάκτηση όλων των μεταπωλητών για τις επιλεγμένες γεωγραφικές τιμές, χρησιμοποιώντας την ακόλουθη πρόταση ερωτήματος:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE [Country-Region] = @CountryRegion AND [State-Province] = @StateProvince AND [City] = @City AND [PostalCode] = @PostalCode ORDER BY [ResellerName]
Για κάθε σύνολο δεδομένων εκτός από το πρώτο, αντιστοιχίστε τις παραμέτρους ερωτήματος στις αντίστοιχες παραμέτρους αναφοράς.
Σημείωμα
Όλες οι παράμετροι ερωτήματος (με πρόθεμα το σύμβολο @) που εμφανίζονται σε αυτά τα παραδείγματα μπορούν να ενσωματωθούν σε προτάσεις SELECT ή να διαβιβαστούν σε αποθηκευμένες διαδικασίες.
Γενικά, οι αποθηκευμένες διαδικασίες είναι μια καλύτερη προσέγγιση σχεδίασης. Αυτό συμβαίνει επειδή τα σχέδια ερωτημάτων τους αποθηκεύονται προσωρινά για ταχύτερη εκτέλεση και σας επιτρέπουν να αναπτύξετε πιο εξελιγμένη λογική, όταν χρειάζεται. Ωστόσο, δεν υποστηρίζονται προς το παρόν για σχεσιακές προελεύσεις δεδομένων πύλης, το οποίο σημαίνει SQL Server, Oracle και Teradata.
Τέλος, θα πρέπει πάντα να βεβαιώνεστε ότι υπάρχουν κατάλληλα ευρετήρια για την υποστήριξη της αποτελεσματικής ανάκτησης δεδομένων. Διαφορετικά, οι παράμετροι της αναφοράς σας μπορεί να είναι αργές στη συμπλήρωση και η βάση δεδομένων μπορεί να υπερφορτωθεί. Για περισσότερες πληροφορίες σχετικά με τη δημιουργία ευρετηρίου SQL Server, ανατρέξτε στο θέμα Οδηγός αρχιτεκτονικής και σχεδίασης ευρετηρίου του SQL Server.
Φιλτράρισμα κατά στήλη ομαδοποίησης
Σε αυτό το παράδειγμα, ο χρήστης αναφοράς αλληλεπιδρά με μια παράμετρο αναφοράς για να επιλέξει το πρώτο γράμμα του μεταπωλητή. Στη συνέχεια, μια δεύτερη παράμετρος εμφανίζει τους μεταπωλητές όταν το όνομα αρχίζει με το επιλεγμένο γράμμα.
Δείτε πώς μπορείτε να αναπτύξετε τις επικαλυπτικές παραμέτρους:
Δημιουργήστε τις παραμέτρους αναφοράς Ομάδα αναφοράς και Μεταπωλητής , ταξινομημένες με τη σωστή σειρά.
Δημιουργήστε το σύνολο δεδομένων Ομάδα αναφοράς για να ανακτήσετε τα πρώτα γράμματα που χρησιμοποιούνται από όλους τους μεταπωλητές, χρησιμοποιώντας την ακόλουθη πρόταση ερωτήματος:
SELECT DISTINCT LEFT([ResellerName], 1) AS [ReportGroup] FROM [Reseller] ORDER BY [ReportGroup]
Δημιουργήστε το σύνολο δεδομένων Μεταπωλητής για να ανακτήσετε όλους τους μεταπωλητές που ξεκινούν με το επιλεγμένο γράμμα, χρησιμοποιώντας την ακόλουθη πρόταση ερωτήματος:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE LEFT([ResellerName], 1) = @ReportGroup ORDER BY [ResellerName]
Αντιστοιχίστε την παράμετρο ερωτήματος του συνόλου δεδομένων Μεταπωλητής στην αντίστοιχη παράμετρο αναφοράς.
Είναι πιο αποτελεσματικό να προσθέσετε τη στήλη ομαδοποίησης στον πίνακα Μεταπωλητής . Όταν διατηρείται και καταχωρείται στο ευρετήριο, παρέχει το καλύτερο αποτέλεσμα. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Καθορισμός υπολογιζόμενων στηλών σε έναν πίνακα.
ALTER TABLE [Reseller]
ADD [ReportGroup] AS LEFT([ResellerName], 1) PERSISTED
Αυτή η τεχνική μπορεί να προσφέρει ακόμα μεγαλύτερες δυνατότητες. Εξετάστε την ακόλουθη δέσμη ενεργειών που προσθέτει μια νέα στήλη ομαδοποίησης για το φιλτράρισμα μεταπωλητών κατά προκαθορισμένες ζώνες γραμμάτων. Δημιουργεί επίσης ένα ευρετήριο για την αποτελεσματική ανάκτηση των δεδομένων που απαιτούνται από τις παραμέτρους της αναφοράς.
ALTER TABLE [Reseller]
ADD [ReportGroup2] AS CASE
WHEN [ResellerName] LIKE '[A-C]%' THEN 'A-C'
WHEN [ResellerName] LIKE '[D-H]%' THEN 'D-H'
WHEN [ResellerName] LIKE '[I-M]%' THEN 'I-M'
WHEN [ResellerName] LIKE '[N-S]%' THEN 'N-S'
WHEN [ResellerName] LIKE '[T-Z]%' THEN 'T-Z'
ELSE '[Other]'
END PERSISTED
GO
CREATE NONCLUSTERED INDEX [Reseller_ReportGroup2]
ON [Reseller] ([ReportGroup2]) INCLUDE ([ResellerCode], [ResellerName])
GO
Φιλτράρισμα κατά μοτίβο αναζήτησης
Σε αυτό το παράδειγμα, ο χρήστης αναφοράς αλληλεπιδρά με μια παράμετρο αναφοράς για την εισαγωγή ενός μοτίβου αναζήτησης. Στη συνέχεια, μια δεύτερη παράμετρος εμφανίζει τους μεταπωλητές όταν το όνομα περιέχει το μοτίβο.
Δείτε πώς μπορείτε να αναπτύξετε τις επικαλυπτικές παραμέτρους:
Δημιουργήστε τις παραμέτρους αναφοράς Αναζήτηση και Μεταπωλητής , ταξινομημένες με τη σωστή σειρά.
Δημιουργήστε το σύνολο δεδομένων Μεταπωλητής για να ανακτήσετε όλους τους μεταπωλητές που περιέχουν το κείμενο αναζήτησης, χρησιμοποιώντας την ακόλουθη πρόταση ερωτήματος:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE [ResellerName] LIKE '%' + @Search + '%' ORDER BY [ResellerName]
Αντιστοιχίστε την παράμετρο ερωτήματος του συνόλου δεδομένων Μεταπωλητής στην αντίστοιχη παράμετρο αναφοράς.
Φιλοδώρημα
Μπορείτε να βελτιώσετε αυτήν τη σχεδίαση για να παρέχετε περισσότερο έλεγχο στους χρήστες της αναφοράς σας. Τους επιτρέπει να ορίσουν τη δική τους αντίστοιχη τιμή μοτίβου. Για παράδειγμα, η τιμή αναζήτησης "red%" θα φιλτράρει τους μεταπωλητές με ονόματα που αρχίζουν με τους χαρακτήρες "κόκκινο".
Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα LIKE (Transact-SQL).
Δείτε πώς μπορείτε να επιτρέψετε στους χρήστες αναφοράς να ορίζουν το δικό τους μοτίβο.
WHERE
[ResellerName] LIKE @Search
Ωστόσο, πολλές επαγγελματίες χωρίς βάση δεδομένων δεν γνωρίζουν τον χαρακτήρα μπαλαντέρ ποσοστού (%). Αντίθετα, είναι εξοικειωμένοι με τον χαρακτήρα αστερίσκου (*). Τροποποιώντας τον όρο WHERE, μπορείτε να τους επιτρέψετε να χρησιμοποιήσουν αυτόν τον χαρακτήρα.
WHERE
[ResellerName] LIKE SUBSTITUTE(@Search, '%', '*')
Παρουσίαση σχετικών στοιχείων
Σε αυτό το σενάριο, μπορείτε να χρησιμοποιήσετε δεδομένα στοιχείων για να περιορίσετε τις διαθέσιμες τιμές. Στους χρήστες της αναφοράς θα εμφανίζονται στοιχεία στα οποία έχει καταγραφεί δραστηριότητα.
Σε αυτό το παράδειγμα, ο χρήστης αναφοράς αλληλεπιδρά με τρεις παραμέτρους αναφοράς. Οι δύο πρώτες ορίζουν μια περιοχή ημερομηνιών των ημερομηνιών παραγγελίας πωλήσεων. Η τρίτη παράμετρος, στη συνέχεια, εμφανίζει τους μεταπωλητές όπου έχουν δημιουργηθεί παραγγελίες κατά τη διάρκεια αυτής της χρονικής περιόδου.
Δείτε πώς μπορείτε να αναπτύξετε τις επικαλυπτικές παραμέτρους:
Δημιουργήστε τις παραμέτρους αναφοράς OrderDateStart, OrderDateEnd και Reseller , ταξινομημένες με τη σωστή σειρά.
Δημιουργήστε το σύνολο δεδομένων Μεταπωλητής για την ανάκτηση όλων των μεταπωλητών που δημιούργησαν παραγγελίες κατά την περίοδο ημερομηνίας, χρησιμοποιώντας την ακόλουθη πρόταση ερωτήματος:
SELECT DISTINCT [r].[ResellerCode], [r].[ResellerName] FROM [Reseller] AS [r] INNER JOIN [Sales] AS [s] ON [s].[ResellerCode] = [r].[ResellerCode] WHERE [s].[OrderDate] >= @OrderDateStart AND [s].[OrderDate] < DATEADD(DAY, 1, @OrderDateEnd) ORDER BY [r].[ResellerName]
Προτάσεις
Συνιστούμε να σχεδιάζετε τις αναφορές σας με επικαλυπτόμενες παραμέτρους, όποτε αυτό είναι εφικτό. Επειδή:
- Παροχή έξυπνων και χρήσιμων εμπειριών για τους χρήστες της αναφοράς σας
- Είναι αποτελεσματικές, επειδή ανακτούν μικρότερα σύνολα διαθέσιμων τιμών
Βεβαιωθείτε ότι έχετε βελτιστοποιήσει τις προελεύσεις δεδομένων σας ως εξής:
- Με τη χρήση αποθηκευμένων διαδικασιών, όποτε αυτό είναι εφικτό
- Προσθήκη κατάλληλων ευρετηρίων για αποτελεσματική ανάκτηση δεδομένων
- Υλοποιώντας τιμές στηλών — ακόμη και γραμμών — για την αποφυγή δαπανηρών αξιολογήσεων χρόνου ερωτήματος
Σχετικό περιεχόμενο
Για περισσότερες πληροφορίες σχετικά με αυτό το άρθρο, ανατρέξτε στους παρακάτω πόρους: