Εξέταση του περιβάλλοντος φίλτρου
Η VALUES
συνάρτηση DAX επιτρέπει στους τύπους σας να καθορίσουν ποιες τιμές βρίσκονται σε περιβάλλον φίλτρου.
Η VALUES
σύνταξη συναρτήσεων έχει ως εξής:
VALUES(<TableNameOrColumnName>)
Η συνάρτηση απαιτεί μεταβίβαση μιας αναφοράς πίνακα ή αναφοράς στήλης. Όταν μεταβιβάσετε μια αναφορά πίνακα, επιστρέφει ένα αντικείμενο πίνακα με τις ίδιες στήλες που περιέχουν γραμμές για ό,τι βρίσκεται σε περιβάλλον φίλτρου. Όταν μεταβιβάζετε μια αναφορά στήλης, επιστρέφει έναν πίνακα μοναδικής στήλης μοναδικών τιμών που βρίσκονται σε περιβάλλον φίλτρου.
Η συνάρτηση επιστρέφει πάντα ένα αντικείμενο πίνακα και είναι δυνατό για έναν πίνακα να περιέχει πολλές γραμμές. Επομένως, για να ελέγξετε εάν μια συγκεκριμένη τιμή βρίσκεται σε περιβάλλον φίλτρου, ο τύπος σας πρέπει πρώτα να δοκιμάσει ότι η VALUES
συνάρτηση επιστρέφει μια μοναδική γραμμή. Δύο συναρτήσεις μπορούν να σας βοηθήσουν να ολοκληρώσετε αυτή την εργασία: οι HASONEVALUE
SELECTEDVALUE
συναρτήσεις και DAX.
Η HASONEVALUE
συνάρτηση επιστρέφει TRUE
όταν μια δεδομένη αναφορά στήλης έχει φιλτραριστεί σε μία μόνο τιμή.
Η SELECTEDVALUE
συνάρτηση απλοποιεί την εργασία προσδιορισμού μιας μεμονωμένης τιμής. Όταν μια συνάρτηση μεταβιβάζει μια αναφορά στήλης, θα επιστρέψει μια μοναδική τιμή ή όταν περισσότερες από μία τιμές βρίσκονται σε περιβάλλον φίλτρου, θα επιστρέψει ΚΕΝΟ (ή μια εναλλακτική τιμή που μεταβιβάζετε στη συνάρτηση).
Στο παρακάτω παράδειγμα, θα χρησιμοποιήσετε τη HASONEVALUE
συνάρτηση. Προσθέστε την παρακάτω μέτρηση, η οποία υπολογίζει την προμήθεια πωλήσεων, στον πίνακα Πωλήσεις . Σημειώστε ότι, στην Adventure Works, ο ρυθμός προμήθειας είναι 10 τοις εκατό των εσόδων για όλες τις χώρες/περιοχές εκτός από τις Ηνωμένες Πολιτείες. Στις Ηνωμένες Πολιτείες, ο πωλητής κερδίζει 15 τοις εκατό προμήθεια. Μορφοποιήστε τη μέτρηση ως νομισματική μονάδα με δύο δεκαδικά ψηφία και, στη συνέχεια, προσθέστε τη στον πίνακα που βρέθηκε στη Σελίδα 3 της αναφοράς.
Sales Commission =
[Revenue]
* IF(
HASONEVALUE('Sales Territory'[Country]),
IF(
VALUES('Sales Territory'[Country]) = "United States",
0.15,
0.1
)
)
Παρατηρήστε ότι το συνολικό αποτέλεσμα Προμήθεια πωλήσεων είναι ΚΕΝΟ. Ο λόγος είναι ότι πολλές τιμές βρίσκονται σε περιβάλλον φίλτρου για τη στήλη Χώρα στον πίνακα Περιφέρεια πωλήσεων . Σε αυτήν την περίπτωση, η HASONEVALUE
συνάρτηση επιστρέφει FALSE
, το οποίο έχει ως αποτέλεσμα ο δείκτης μέτρησης Έσοδα να πολλαπλασιάζεται με ΚΕΝΟ (μια τιμή πολλαπλασιασμένη με BLANK είναι BLANK). Για να παράγετε ένα σύνολο, θα χρειαστεί να χρησιμοποιήσετε μια συνάρτηση επαναλήπτη, η οποία επεξηγείται αργότερα σε αυτήν την εκπαιδευτική ενότητα.
Τρεις άλλες συναρτήσεις που μπορείτε να χρησιμοποιήσετε για τη δοκιμή της κατάστασης φιλτραρίσματος είναι:
-
ISFILTERED
- ΕπιστρέφειTRUE
όταν μια αναφορά στήλης που μεταβιβάζεται φιλτράρεται απευθείας . -
ISCROSSFILTERED
- ΕπιστρέφειTRUE
όταν μια αναφορά στήλης που μεταβιβάζεται φιλτράρεται έμμεσα . Πραγματοποιείται διασταυρούμενο φιλτράρισμα στήλης όταν ένα φίλτρο που εφαρμόζεται σε μια άλλη στήλη στον ίδιο πίνακα ή σε έναν σχετικό πίνακα, επηρεάζει τη στήλη αναφοράς φιλτράροντάς τη. -
ISINSCOPE
- ΕπιστρέφειTRUE
όταν μια αναφορά στήλης που μεταβιβάζεται είναι το επίπεδο σε μια ιεραρχία επιπέδων.
Επιστρέψτε στη Σελίδα 2 της αναφοράς και, στη συνέχεια, τροποποιήστε τον ορισμό μέτρησης Συνολικά έσοδα % Χώρας για να ελέγξετε ότι η στήλη Περιοχή στον πίνακα Περιφέρεια πωλήσεων είναι εντός εμβέλειας . Εάν δεν είναι εντός εμβέλειας, το αποτέλεσμα μέτρησης θα πρέπει να είναι ΚΕΝΟ.
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
IF(
ISINSCOPE('Sales Territory'[Region]),
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
)
Στην απεικόνιση πίνακα, παρατηρήστε ότι οι τιμές Συνολικά έσοδα % Χώρας εμφανίζονται τώρα μόνο όταν μια περιοχή είναι εντός εμβέλειας.