Αποφύγετε τη χρήση FILTER ως ορίσματος filter
Ως δημιουργός μοντέλων δεδομένων, είναι σύνηθες να γράφετε DAX παραστάσεις που πρέπει να αξιολογηθούν σε ένα τροποποιημένο περιβάλλον filter. Για παράδειγμα, μπορείτε να γράψετε έναν ορισμό measure για να calculate τις πωλήσεις για "προϊόντα υψηλού περιθωρίου". Θα περιγράψουμε αυτόν τον υπολογισμό αργότερα σε αυτό το άρθρο.
Σημείωση
Αυτό το άρθρο είναι ιδιαίτερα σχετικό για υπολογισμούς μοντέλων που εφαρμόζονται filters σε πίνακες εισαγωγής.
Οι CALCULATEandCALCULATETABLEDAX συναρτήσεις είναι σημαντικές and χρήσιμες συναρτήσεις. Σας επιτρέπουν να γράφετε υπολογισμούς που καταργούν or προσθέτουν filters, or τροποποιούν διαδρομές σχέσεων. Πραγματοποιείται διαβιβάζοντας filter ορίσματα, τα οποία είναι δυαδικές παραστάσεις, παραστάσεις πίνακα or ειδικές συναρτήσεις filter. Θα συζητήσουμε μόνο δυαδικές and παραστάσεις πίνακα σε αυτό το άρθρο.
Εξετάστε τον παρακάτω measure ορισμό, ο οποίος υπολογίζει τις πωλήσεις με κόκκινο product χρησιμοποιώντας μια παράσταση πίνακα. Θα replace οποιαδήποτε filters που μπορεί να εφαρμοστεί στον πίνακα Product.
Red Sales =
CALCULATE(
[Sales],
FILTER('Product', 'Product'[Color] = "Red")
)
Η συνάρτηση CALCULATE αποδέχεται μια παράσταση πίνακα που επιστρέφεται από τη συνάρτηση FILTERDAX, η οποία αξιολογεί την παράσταση filter της για κάθε γραμμή του πίνακα Product. Επιτυγχάνει το σωστό αποτέλεσμα, το αποτέλεσμα πωλήσεων κόκκινων προϊόντων. Ωστόσο, μπορεί να επιτευχθεί πολύ πιο αποτελεσματικά χρησιμοποιώντας μια δυαδική παράσταση.
Ακολουθεί ένας βελτιωμένος measure ορισμός, ο οποίος χρησιμοποιεί μια δυαδική παράσταση αντί για την παράσταση πίνακα. Η συνάρτηση
Red Sales =
CALCULATE(
[Sales],
KEEPFILTERS('Product'[Color] = "Red")
)
Συνιστάται να διαβιβάσετε filter ορίσματα ως δυαδικές παραστάσεις, όποτε αυτό είναι εφικτό. Αυτό συμβαίνει επειδή οι πίνακες μοντέλου εισαγωγής είναι χώροι αποθήκευσης στηλών στη μνήμη. Βελτιστοποιούνται ρητά για την αποτελεσματική filter στηλών με αυτόν τον τρόπο.
Υπάρχουν, ωστόσο, περιορισμοί που ισχύουν για τις δυαδικές παραστάσεις όταν χρησιμοποιούνται ως filter ορίσματα. Αυτοί:
- Δεν είναι δυνατή η αναφορά στηλών από πολλούς πίνακες
- Δεν είναι δυνατή η αναφορά σε measure
- Δεν μπορεί να χρησιμοποιήσει ένθετες συναρτήσεις CALCULATE
- Δεν μπορούν να χρησιμοποιήσουν συναρτήσεις που σαρώνουν or επιστρέφουν έναν πίνακα
Αυτό σημαίνει ότι θα πρέπει να χρησιμοποιήσετε παραστάσεις πίνακα για πιο σύνθετες απαιτήσεις filter.
Εξετάστε now έναν διαφορετικό ορισμό measure. Η απαίτηση είναι να calculate πωλήσεων, αλλά μόνο για μήνες που έχουν επιτύχει κέρδος.
Sales for Profitable Months =
CALCULATE(
[Sales],
FILTER(
VALUES('Date'[Month]),
[Profit] > 0
)
)
Σε αυτό το παράδειγμα, πρέπει να χρησιμοποιηθεί η συνάρτηση FILTER. Αυτό συμβαίνει επειδή απαιτεί αξιολόγηση της κέρδουςmeasure για την εξάλειψη εκείνων των μηνών που δεν είχαν κέρδος. Είναι not δυνατή η χρήση ενός measure σε μια δυαδική παράσταση όταν χρησιμοποιείται ως όρισμα filter.
Συστάσεις
Για βέλτιστες επιδόσεις, συνιστάται να χρησιμοποιείτε δυαδικές παραστάσεις ως filter ορίσματα, όποτε αυτό είναι εφικτό.
Επομένως, η συνάρτηση FILTER θα πρέπει να χρησιμοποιείται μόνο όταν είναι απαραίτητο. Μπορείτε να την χρησιμοποιήσετε για να εκτελέσετε filter σύνθετες συγκρίσεις στηλών. Αυτές οι συγκρίσεις στηλών μπορεί να περιλαμβάνουν:
- Μέτρα
- Άλλες στήλες
- Χρησιμοποιώντας τη συνάρτηση ORDAX, or τον OR λογικό τελεστή (||)
Related περιεχομένου
- συναρτήσεων
( ) - pathεκμάθησης: Χρήση DAX στοPower BI Desktop
- Ερωτήσεις? Δοκιμάστε να ρωτήσετε το κοινότητας του Power BI
- Προτάσεις? Συνεισφέρετε ιδέες για τη βελτίωση Power BI