KEEPFILTERS
Ισχύει για:Υπολογιζόμενη στήλη
Υπολογιζόμενος πίνακας
Μέτρηση
υπολογισμού απεικόνισης
Τροποποιεί τον τρόπο με τον οποίο εφαρμόζονται τα φίλτρα κατά την αξιολόγηση μιας συνάρτησης CALCULATE ή CALCULATETABLE.
Σύνταξη
KEEPFILTERS(<expression>)
Παραμέτρους
Όρος | Ορισμός |
---|---|
expression |
Οποιαδήποτε παράσταση. |
Τιμή επιστροφής
Ένας πίνακας τιμών.
Παρατηρήσεις
Χρησιμοποιείτε KEEPFILTERS στις συναρτήσεις περιβάλλοντος CALCULATE και CALCULATETABLE, για να παρακάμψετε την τυπική συμπεριφορά αυτών των συναρτήσεων.
Από προεπιλογή, τα ορίσματα φίλτρου σε συναρτήσεις όπως οι CALCULATE χρησιμοποιούνται ως περιβάλλον για την αξιολόγηση της παράστασης και, ως τέτοια ορίσματα φίλτρου για CALCULATE αντικαταστήσετε όλα τα υπάρχοντα φίλτρα στις ίδιες στήλες. Το νέο περιβάλλον που δημιουργείται από το όρισμα φίλτρου για CALCULATE επηρεάζει μόνο τα υπάρχοντα φίλτρα στις στήλες που αναφέρονται ως μέρος του ορίσματος φίλτρου. Τα φίλτρα σε στήλες διαφορετικές από αυτές που αναφέρονται στα ορίσματα της CALCULATE ή άλλων σχετικών συναρτήσεων παραμένουν σε ισχύ και δεν έχουν εφαρμοστεί.
Η συνάρτηση KEEPFILTERS σάς επιτρέπει να τροποποιήσετε αυτήν τη συμπεριφορά. Όταν χρησιμοποιείτε KEEPFILTERS, τυχόν υπάρχοντα φίλτρα στο τρέχον περιβάλλον συγκρίνονται με τις στήλες στα ορίσματα φίλτρου και η τομή αυτών των ορισμάτων χρησιμοποιείται ως περιβάλλον για την αξιολόγηση της παράστασης. Το καθαρό αποτέλεσμα σε οποιαδήποτε στήλη είναι ότι εφαρμόζονται και τα δύο σύνολα ορισμάτων: τόσο τα ορίσματα φίλτρου που χρησιμοποιούνται σε CALCULATE όσο και τα φίλτρα στα ορίσματα της συνάρτησης KEEPFILTER. Με άλλα λόγια, ενώ CALCULATE φίλτρα αντικαθιστούν το τρέχον περιβάλλον, KEEPFILTERS προσθέτει φίλτρα στο τρέχον περιβάλλον.
Αυτή η συνάρτηση δεν υποστηρίζεται για χρήση σε λειτουργία DirectQuery όταν χρησιμοποιείται σε υπολογιζόμενες στήλες ή σε κανόνες ασφάλειας σε επίπεδο γραμμών (RLS).
Παράδειγμα
Το παρακάτω παράδειγμα σάς καθοδηγεί σε ορισμένα συνήθη σενάρια που επιδεικνύουν τη χρήση της συνάρτησης KEEPFILTERS ως μέρος ενός τύπου CALCULATE ή CALCULATETABLE.
Οι τρεις πρώτες παραστάσεις λαμβάνουν απλά δεδομένα που θα χρησιμοποιηθούν για συγκρίσεις:
Πωλήσεις μέσω Internet για την πολιτεία της Ουάσιγκτον.
Πωλήσεις μέσω Internet για τις πολιτείες της Ουάσιγκτον και του Όρεγκον (και οι δύο πολιτείες μαζί).
Πωλήσεις μέσω Internet για την πολιτεία της Ουάσιγκτον και την επαρχία της Βρετανικής Κολομβίας (και οι δύο περιοχές μαζί).
Η τέταρτη παράσταση υπολογίζει τις πωλήσεις μέσω Internet για την Ουάσιγκτον και το Όρεγκον, ενώ εφαρμόζεται το φίλτρο για την Ουάσιγκτον και τη Βρετανική Κολομβία.
Η επόμενη παράσταση υπολογίζει τις πωλήσεις Μέσω Internet για την Ουάσιγκτον και το Όρεγκον, αλλά χρησιμοποιεί KEEPFILTERS? το φίλτρο για την Ουάσιγκτον και τη Βρετανική Κολομβία είναι μέρος του προηγούμενου περιβάλλοντος.
EVALUATE ROW(
"$$ in WA"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
)
, "$$ in WA and OR"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, "$$ in WA and BC"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA and OR ??"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
,'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA !!"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
, KEEPFILTERS('Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
)
Όταν αυτή η παράσταση αξιολογείται σε σχέση με το δείγμα βάσης δεδομένων AdventureWorks DW, λαμβάνονται τα παρακάτω αποτελέσματα.
Στήλη | Τιμή |
---|---|
[$$ in WA] |
$ 2,467,248.34 |
[$$ in WA and OR] |
$ 3,638,239.88 |
[$$ in WA and BC] |
$ 4,422,588.44 |
[$$ in WA and OR ??] |
$ 3,638,239.88 |
[$$ in WA !!] |
$ 2,467,248.34 |
Σημείωση
Τα παραπάνω αποτελέσματα μορφοποιήθηκαν σε έναν πίνακα, αντί για μία μόνο γραμμή, για εκπαιδευτικούς σκοπούς.
Πρώτα, εξετάστε την παράσταση, [$$ in WA and OR ??]
. Ίσως αναρωτηθείτε πώς αυτός ο τύπος θα μπορούσε να επιστρέψει την τιμή για τις πωλήσεις στην Ουάσιγκτον και στο Όρεγκον, καθώς η εξωτερική CALCULATE παράσταση περιλαμβάνει ένα φίλτρο για την Ουάσιγκτον και τη Βρετανική Κολομβία. Η απάντηση είναι ότι η προεπιλεγμένη συμπεριφορά του CALCULATE παρακάμπτει τα εξωτερικών φίλτρα στο πεδίο 'Geography'[State Province Code] και αντικαθιστά τα δικά του ορίσματα φίλτρου, επειδή τα φίλτρα εφαρμόζονται στην ίδια στήλη.
Στη συνέχεια, εξετάστε την παράσταση [$$ in WA !!]
. Ίσως αναρωτηθείτε πώς αυτός ο τύπος θα μπορούσε να επιστρέψει την τιμή για τις πωλήσεις στην Ουάσιγκτον και τίποτε άλλο, καθώς το όρισμα φίλτρου περιλαμβάνει το Όρεγκον και η εξωτερική CALCULATE παράσταση περιλαμβάνει ένα φίλτρο στην Ουάσιγκτον και τη Βρετανική Κολομβία. Η απάντηση είναι ότι KEEPFILTERS τροποποιεί την προεπιλεγμένη συμπεριφορά του CALCULATE και προσθέτει ένα επιπλέον φίλτρο. Επειδή χρησιμοποιείται η τομή των φίλτρων, τώρα το εξωτερικό φίλτρο 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC")
προστίθεται στο όρισμα φίλτρου 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"
,. Επειδή και τα δύο φίλτρα εφαρμόζονται στην ίδια στήλη, το φίλτρο που προκύπτει 'Geography'[State Province Code]="WA"
είναι το φίλτρο που εφαρμόζεται κατά την αξιολόγηση της παράστασης.
Σχετικό περιεχόμενο
Συναρτήσεις φίλτρουCALCULATE συνάρτησηCALCULATETABLE συνάρτηση