CALCULATE

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

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

Σημείωση

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

Σύνταξη

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

Παραμέτρους

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

Η παράσταση που χρησιμοποιείτε ως πρώτη παράμετρο λειτουργεί όπως μια μέτρηση.

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

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

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

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

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

  • Μπορεί να αναφέρει στήλες από έναν μοναδικό πίνακα.

  • Δεν μπορεί να αναφέρει μετρήσεις.

  • Δεν μπορεί να χρησιμοποιήσει μια ένθετες CALCULATE συνάρτηση.

  • Δεν μπορεί να χρησιμοποιήσει συναρτήσεις που σαρώνουν ή επιστρέφουν έναν πίνακα, εκτός εάν τις μεταβιβάσετε ως ορίσματα σε συναρτήσεις συνάθροισης.

  • Μπορεί να περιέχει μια συνάρτηση συνάθροισης που επιστρέφει μια ανυσματική τιμή. Για παράδειγμα:

    Total sales on the last selected date =
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] )
    )
    

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

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

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

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

Λειτουργία Σκοπός
REMOVEFILTERS Καταργήστε όλα τα φίλτρα ή τα φίλτρα από μία ή περισσότερες στήλες ενός πίνακα ή από όλες τις στήλες ενός μοναδικού πίνακα.
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" )
Κατηγορία Ποσό πωλήσεων Μπλε έσοδα
Εξαρτήματα $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 αξιολογεί το άθροισμα του πίνακα Salesστήλη Sales Amount σε ένα τροποποιημένο περιβάλλον φίλτρου. Προστίθεται ένα νέο φίλτρο στον πίνακα productστήλη Color ή το φίλτρο αντικαθιστά οποιοδήποτε φίλτρο έχει εφαρμοστεί ήδη στη στήλη.

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

Revenue % Total Channel =
DIVIDE (
    SUM ( Sales[Sales Amount] ),
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        REMOVEFILTERS ( 'Sales Order'[Channel] )
    )
)
Κανάλι Ποσό πωλήσεων Έσοδα % Σύνολο καναλιού
Διαδίκτυο $29,358,677.22 26,74%
Μεταπωλητής $80,450,596.98 73,26%
Σύνολο $109.809.274,20 100,00%

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

Ο ακόλουθος ορισμός υπολογιζόμενης στήλης πίνακα Customer ταξινομεί τους πελάτες σε μια κλάση αφοσίωσης. Είναι ένα πολύ απλό σενάριο: Όταν τα έσοδα που παράγονται από τον πελάτη είναι λιγότερα από 2500 δολάρια, ταξινομούνται ως Low; διαφορετικά, βρίσκονται High.

Customer Segment =
IF (
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        ALLEXCEPT ( Customer, Customer[CustomerKey] )
    ) < 2500,
    "Low",
    "High"
)
Τμήμα πελάτη Πλήθος πελατών Ποσό πωλήσεων
Ψηλός 4,637 $102,670,663.09
Χαμηλό 13,848 $7,138,611.11
Σύνολο 18,485 $109.809.274,20

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