Κοινή χρήση μέσω


ΥΠΟΛΟΓΊΖΩ

Ισχύει για: Υπολογισμός απεικόνισης υπολογιζόμενης στήλης υπολογιζόμενου πίνακα Μέτρηση

Αξιολογεί μια παράσταση σε ένα τροποποιημένο περιβάλλον φίλτρου.

Σημείωμα

Υπάρχει επίσης η συνάρτηση CALCULATETABLE . Εκτελεί ακριβώς την ίδια λειτουργικότητα, εκτός από την τροποποίηση του περιβάλλοντος φίλτρου που εφαρμόζεται σε μια παράσταση που επιστρέφει ένα αντικείμενο πίνακα.

Σύνταξη

CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])

Παράμετροι

Όρος Ορισμός
έκφραση Η παράσταση προς αξιολόγηση.
filter1, filter2,... (Προαιρετικό) Δυαδικές παραστάσεις ή παραστάσεις πίνακα που ορίζουν φίλτρα ή συναρτήσεις τροποποιητή φίλτρου.

Η παράσταση που χρησιμοποιείται ως η πρώτη παράμετρος είναι ουσιαστικά η ίδια με μια μέτρηση.

Τα φίλτρα μπορεί να είναι:

  • Παραστάσεις φίλτρου δυαδικής τιμής
  • Παραστάσεις φίλτρου πίνακα
  • Συναρτήσεις τροποποίησης φίλτρου

Όταν υπάρχουν πολλά φίλτρα, μπορούν να αξιολογηθούν χρησιμοποιώντας τον λογικό τελεστή AND (&&) , που σημαίνει ότι όλες οι συνθήκες πρέπει να είναι TRUE ή από τον λογικό τελεστή OR (||), που σημαίνει ότι οποιαδήποτε συνθήκη μπορεί να είναι true.

Παραστάσεις φίλτρου δυαδικής τιμής

Ένα φίλτρο δυαδικής παράστασης είναι μια παράσταση που αξιολογείται σε TRUE ή FALSE. Υπάρχουν διάφοροι κανόνες με τους οποίους πρέπει να συμμορφώνονται:

  • Μπορούν να αναφέρουν στήλες από έναν μοναδικό πίνακα.
  • Δεν μπορούν να αναφέρουν μετρήσεις.
  • Δεν μπορούν να χρησιμοποιήσουν μια ένθετες συνάρτηση CALCULATE.

Ξεκινώντας από την έκδοση Σεπτεμβρίου 2021 του Power BI Desktop, ισχύουν επίσης τα εξής:

  • Δεν μπορούν να χρησιμοποιήσουν συναρτήσεις που σαρώνουν ή επιστρέφουν έναν πίνακα, εκτός εάν διαβιβαάζονται ως ορίσματα σε συναρτήσεις συνάθροισης.
  • Μπορούν να περιέχουν μια συνάρτηση συνάθροισης που επιστρέφει μια ανυσματική τιμή. Για παράδειγμα,
    Total sales on the last selected date =
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] )
    )
    

Παράσταση φίλτρου πίνακα

Ένα φίλτρο παράστασης πίνακα εφαρμόζει ένα αντικείμενο πίνακα ως φίλτρο. Μπορεί να είναι μια αναφορά σε έναν πίνακα μοντέλου, αλλά πιθανότατα είναι μια συνάρτηση που επιστρέφει ένα αντικείμενο πίνακα. Μπορείτε να χρησιμοποιήσετε τη συνάρτηση FILTER για να εφαρμόσετε σύνθετες συνθήκες φιλτραρίσματος, συμπεριλαμβανομένων εκείνων που δεν μπορούν να καθοριστούν από μια παράσταση δυαδικού φίλτρου.

Συναρτήσεις τροποποίησης φίλτρου

Οι συναρτήσεις τροποποιητή φίλτρου σάς επιτρέπουν να κάνετε περισσότερα από την απλή προσθήκη φίλτρων. Σας παρέχουν πρόσθετο έλεγχο κατά την τροποποίηση του περιβάλλοντος φίλτρου.

Function Σκοπός
ΚΑΤΆΡΓΗΣΗ ΦΊΛΤΡΩΝ Καταργήστε όλα τα φίλτρα ή τα φίλτρα από μία ή περισσότερες στήλες ενός πίνακα ή από όλες τις στήλες ενός μοναδικού πίνακα.
ALL 1, ALLEXCEPT, ALLNOBLANKROW Καταργήστε τα φίλτρα από μία ή περισσότερες στήλες ή από όλες τις στήλες ενός μοναδικού πίνακα.
KEEPFILTERS Προσθέστε φίλτρο χωρίς να καταργήσετε υπάρχοντα φίλτρα στις ίδιες στήλες.
USERELATIONSHIP Ενεργοποιήστε μια ανενεργή σχέση μεταξύ σχετικών στηλών, όπου η ενεργή σχέση θα γίνει αυτόματα ανενεργή.
CROSSFILTER Τροποποιήστε την κατεύθυνση του φίλτρου (από αμφίδρομο σε μονή ή από μονή σε αμφίδρομες) ή απενεργοποιήστε μια σχέση.

1 Η συνάρτηση ALL και οι παραλλαγές της συμπεριφέρονται τόσο ως τροποποιητές φίλτρων όσο και ως συναρτήσεις που επιστρέφουν αντικείμενα πίνακα. Εάν η συνάρτηση REMOVEFILTERS υποστηρίζεται από το εργαλείο σας, είναι προτιμότερο να την χρησιμοποιήσετε για να καταργήσετε φίλτρα.

Επιστρεφόμενη αξία

Η τιμή που είναι το αποτέλεσμα της παράστασης.

Παρατηρήσεις

  • Όταν παρέχονται παραστάσεις φίλτρου, η συνάρτηση CALCULATE τροποποιεί το περιβάλλον φίλτρου για να αξιολογήσει την παράσταση. Για κάθε παράσταση φίλτρου, υπάρχουν δύο πιθανά τυπικά αποτελέσματα όταν η παράσταση φίλτρου δεν αναδιπλώνεται στη συνάρτηση KEEPFILTERS:

    • Εάν οι στήλες (ή οι πίνακες) δεν βρίσκονται στο περιβάλλον φίλτρου, τότε θα προστεθούν νέα φίλτρα στο περιβάλλον φίλτρου για την αξιολόγηση της παράστασης.
    • Εάν οι στήλες (ή οι πίνακες) βρίσκονται ήδη στο περιβάλλον φίλτρου, τα υπάρχοντα φίλτρα θα αντικατασταθούν από τα νέα φίλτρα για την αξιολόγηση της παράστασης CALCULATE.
  • Η συνάρτηση CALCULATE που χρησιμοποιείται χωρίς φίλτρα επιτυγχάνει μια συγκεκριμένη απαίτηση. Αλλάζει το περιβάλλον γραμμής σε περιβάλλον φίλτρου. Απαιτείται όταν μια παράσταση (όχι μια μέτρηση μοντέλου) που συνοψίζει δεδομένα μοντέλου πρέπει να αξιολογηθεί σε περιβάλλον γραμμής. Αυτό το σενάριο μπορεί να συμβεί σε έναν τύπο υπολογιζόμενης στήλης ή όταν αξιολογείται μια παράσταση σε μια συνάρτηση επαναλήπτη. Σημειώστε ότι όταν χρησιμοποιείται μια μέτρηση μοντέλου σε περιβάλλον γραμμής, η μετάβαση περιβάλλοντος είναι αυτόματη.

  • Αυτή η συνάρτηση δεν υποστηρίζεται για χρήση σε λειτουργία DirectQuery όταν χρησιμοποιείται σε υπολογιζόμενες στήλες ή σε κανόνες ασφάλειας σε επίπεδο γραμμών (RLS).

Παραδείγματα

Ο παρακάτω ορισμός μέτρησης πίνακα Πωλήσεις παράγει ένα αποτέλεσμα εσόδων, αλλά μόνο για προϊόντα που έχουν το μπλε χρώμα.

Παραδείγματα σε αυτό το άρθρο μπορούν να χρησιμοποιηθούν με το δείγμα μοντέλου Adventure Works DW 2020 Power BI Desktop. Για να λάβετε το μοντέλο, ανατρέξτε στο δείγμα μοντέλου DAX.

Blue Revenue =
CALCULATE(
    SUM(Sales[Sales Amount]),
    'Product'[Color] = "Blue"
)
Category Ποσό πωλήσεων Μπλε έσοδα
Αξεσουάρ $1,272,057.89 $165,406.62
Ποδήλατα $94,620,526.21 $8,374,313.88
Ρουχισμός $2,117,613.45 $259,488.37
Στοιχεία $11,799,076.66 $803,642.10
Σύνολο $109,809,274.20 $9,602,850.97

Η συνάρτηση CALCULATE αξιολογεί το άθροισμα του πίνακα Πωλήσεις στήλη Ποσό πωλήσεων σε ένα τροποποιημένο περιβάλλον φίλτρου. Προστίθεται ένα νέο φίλτρο στον πίνακα Προϊόν στήλη Χρώμα ή το φίλτρο αντικαθιστά οποιοδήποτε φίλτρο που έχει εφαρμοστεί ήδη στη στήλη.

Ο παρακάτω ορισμός μέτρησης πίνακα Πωλήσεις παράγει μια αναλογία πωλήσεων επί των πωλήσεων για όλα τα κανάλια πωλήσεων.

Κανάλι Ποσό πωλήσεων Συνολικά έσοδα % Καναλιού
Internet $29,358,677.22 26.74%
Reseller 80.450.596,98 € 73.26%
Σύνολο $109,809,274.20 100.00%
Revenue % Total Channel =
DIVIDE(
    SUM(Sales[Sales Amount]),
    CALCULATE(
        SUM(Sales[Sales Amount]),
        REMOVEFILTERS('Sales Order'[Channel])
    )
)

Η συνάρτηση DIVIDE διαιρεί μια παράσταση που αθροίζει την τιμή στήλης Ποσό πωλήσεων του πίνακα Πωλήσεις (στο περιβάλλον φίλτρου) με την ίδια παράσταση σε ένα τροποποιημένο περιβάλλον φίλτρου. Είναι η συνάρτηση CALCULATE που τροποποιεί το περιβάλλον φίλτρου χρησιμοποιώντας τη συνάρτηση REMOVEFILTERS, η οποία είναι μια συνάρτηση τροποποίησης φίλτρου. Καταργεί τα φίλτρα από τον πίνακα Παραγγελία πωλήσεων, στήλη Κανάλι.

Ο παρακάτω ορισμός υπολογιζόμενης στήλης του πίνακα Πελάτης ταξινομεί τους πελάτες σε μια κλάση αφοσίωσης. Είναι ένα πολύ απλό σενάριο: Όταν τα έσοδα που παράγονται από τον πελάτη είναι λιγότερα από 2500 δολάρια, ταξινομούνται ως Χαμηλά, διαφορετικά είναι Υψηλά.

Customer Segment =
IF(
    CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
    "Low",
    "High"
)

Σε αυτό το παράδειγμα, το περιβάλλον γραμμής μετατρέπεται σε περιβάλλον φίλτρου. Είναι γνωστό ως μετάβαση περιβάλλοντος. Η συνάρτηση ALLEXCEPT καταργεί φίλτρα από όλες τις στήλες του πίνακα Πελάτης εκτός από τη στήλη CustomerKey .

Περιβάλλον φίλτρου
Περιβάλλον γραμμής
Συνάρτηση CALCULATETABLE
Συναρτήσεις φιλτραρίσματος