Χρήση της συνάρτησης SELECTEDVALUE αντί της συνάρτησης VALUES

Ως δημιουργός μοντέλων δεδομένων, ορισμένες φορές μπορεί να χρειαστεί να γράψετε μια παράσταση DAX που ελέγχει εάν μια στήλη φιλτράρεται με βάση μια συγκεκριμένη τιμή.

Σε παλαιότερες εκδόσεις του DAX, αυτή η απαίτηση επιτεύχθηκε με ασφάλεια χρησιμοποιώντας ένα μοτίβο που περιλαμβάνει τρεις συναρτήσεις DAX. IF, HASONEVALUE και VALUES. Ο παρακάτω ορισμός μέτρησης παρουσιάζει ένα παράδειγμα. Υπολογίζει το ποσό φόρου πωλήσεων, αλλά μόνο για πωλήσεις σε πελάτες στην Αυστραλία.

Australian Sales Tax =
IF(
    HASONEVALUE(Customer[Country-Region]),
    IF(
        VALUES(Customer[Country-Region]) = "Australia",
        [Sales] * 0.10
    )
)

Στο παράδειγμα, η συνάρτηση HASONEVALUE επιστρέφει TRUE μόνο όταν μια μεμονωμένη τιμή της στήλης Χώρα-Περιοχή είναι ορατή στο τρέχον περιβάλλον φίλτρου. Όταν είναι TRUE, η συνάρτηση VALUES συγκρίνεται με το ακριβές κείμενο "Αυστραλία". Όταν η συνάρτηση VALUES επιστρέφει TRUE, η μέτρηση Πωλήσεις πολλαπλασιάζεται με 0,10 (αντιπροσωπεύει το 10%). Εάν η συνάρτηση HASONEVALUE επιστρέψει FALSE, επειδή περισσότερες από μία τιμές φιλτράρουν τη στήλη, η πρώτη συνάρτηση IF επιστρέφει BLANK.

Η χρήση της HASONEVALUE είναι μια αμυντική τεχνική. Είναι υποχρεωτικό καθώς είναι πιθανό πολλές τιμές να φιλτράρουν τη στήλη Χώρα-Περιοχή . Στην περίπτωση αυτή, η συνάρτηση VALUES επιστρέφει έναν πίνακα πολλών γραμμών. Η σύγκριση ενός πίνακα πολλών γραμμών με μια ανυσματική τιμή οδηγεί σε σφάλμα.

Πρόταση

Συνιστάται να χρησιμοποιήσετε τη συνάρτηση SELECTEDVALUE . Επιτυγχάνει το ίδιο αποτέλεσμα με το μοτίβο που περιγράφεται σε αυτό το άρθρο, αλλά πιο αποτελεσματικά και κομψά.

Χρησιμοποιώντας τη συνάρτηση SELECTEDVALUE, γίνεται επανάληψη της εγγραφής του ορισμού μέτρησης παραδείγματος.

Australian Sales Tax =
IF(
    SELECTEDVALUE(Customer[Country-Region]) = "Australia",
    [Sales] * 0.10
)

Φιλοδώρημα

Είναι δυνατή η διαβίβαση μιας εναλλακτικής τιμής αποτελέσματος στη συνάρτηση SELECTEDVALUE. Η εναλλακτική τιμή αποτελέσματος επιστρέφεται όταν δεν εφαρμόζονται φίλτρα ή πολλαπλά φίλτρα στη στήλη.