CROSSFILTER
Ισχύει για:Υπολογιζόμενη στήληΥπολογιζόμενος πίνακαςΜέτρηση υπολογισμού απεικόνισης
Καθορίζει την κατεύθυνση διασταυρούμενου φιλτραρίσματος που θα χρησιμοποιηθεί σε έναν υπολογισμό για μια σχέση που υπάρχει μεταξύ δύο στηλών.
Σύνταξη
CROSSFILTER(<columnName1>, <columnName2>, <direction>)
Παραμέτρους
Όρος | Ορισμός |
---|---|
columnName1 |
Το όνομα μιας υπάρχουσας στήλης, χρησιμοποιώντας τυπική σύνταξη DAX και πλήρως προσδιορισμένη, που συνήθως αντιπροσωπεύει την πλευρά πολλά της σχέσης που θα χρησιμοποιηθεί. Εάν τα ορίσματα δοθούν με αντίστροφη σειρά, η συνάρτηση θα τα αλλάξει πριν τα χρησιμοποιήσει. Αυτό το όρισμα δεν μπορεί να είναι παράσταση. |
columnName2 |
Το όνομα μιας υπάρχουσας στήλης, χρησιμοποιώντας τυπική σύνταξη DAX και πλήρως προσδιορισμένη, που συνήθως αντιπροσωπεύει την πλευρά "ένα" ή την πλευρά αναζήτησης της σχέσης που θα χρησιμοποιηθεί. Εάν τα ορίσματα δοθούν με αντίστροφη σειρά, η συνάρτηση θα τα αλλάξει πριν τα χρησιμοποιήσει. Αυτό το όρισμα δεν μπορεί να είναι παράσταση. |
Direction |
Η κατεύθυνση διασταυρούμενου φιλτραρίσματος που θα χρησιμοποιηθεί. Πρέπει να είναι ένα από τα εξής:None - Δεν πραγματοποιείται διασταυρούμενο φιλτράρισμα σε αυτή τη σχέση.Both - Τα φίλτρα σε οποιαδήποτε πλευρά φιλτράρουν την άλλη πλευρά.OneWay - Φιλτράρει στην πλευρά ένα ή την πλευρά αναζήτησης μιας σχέσης στην άλλη πλευρά. Αυτή η επιλογή δεν μπορεί να χρησιμοποιηθεί με μια σχέση ένα προς ένα . Μην χρησιμοποιείτε αυτή την επιλογή σε μια σχέση πολλά προς πολλά, επειδή δεν είναι σαφές ποια πλευρά είναι η πλευρά αναζήτησης. αντί για αυτό, χρησιμοποιήστε OneWay_LeftFiltersRight ή OneWay_RightFiltersLeft.OneWay_LeftFiltersRight - Τα φίλτρα στην πλευρά του columnName1 φιλτράρουν την πλευρά του columnName2 . Αυτή η επιλογή δεν μπορεί να χρησιμοποιηθεί με μια σχέση ένα προς ένα ή πολλά προς ένα.OneWay_RightFiltersLeft - Τα φίλτρα στην πλευρά του columnName2 φιλτράρουν την πλευρά του columnName1 . Αυτή η επιλογή δεν μπορεί να χρησιμοποιηθεί με μια σχέση ένα προς ένα ή πολλά προς ένα. |
Τιμή επιστροφής
Η συνάρτηση δεν επιστρέφει καμία τιμή. Η συνάρτηση ορίζει μόνο την κατεύθυνση διασταυρούμενου φιλτραρίσματος για την υποδεικνυόμενη σχέση, κατά τη διάρκεια του ερωτήματος.
Παρατηρήσεις
Στην περίπτωση μιας σχέσης 1:1, δεν υπάρχει διαφορά μεταξύ της μίας και των δύο κατευθύνσεων.
Η CROSSFILTER μπορεί να χρησιμοποιηθεί μόνο σε συναρτήσεις που λαμβάνουν ένα φίλτρο ως όρισμα, για παράδειγμα τις συναρτήσεις: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD και TOTALYTD.
Η CROSSFILTER χρησιμοποιεί υπάρχουσες σχέσεις στο μοντέλο, προσδιορίζοντας σχέσεις με βάση τις στήλες τελικού σημείου τους.
Στην CROSSFILTER, η ρύθμιση διασταυρούμενου φιλτραρίσματος μιας σχέσης δεν είναι σημαντική. Δηλαδή, εάν η σχέση έχει οριστεί για φιλτράρισμα μίας ή και των δύο κατευθύνσεων στο μοντέλο δεν επηρεάζει τη χρήση της συνάρτησης. Η CROSSFILTER θα παρακάμψει οποιαδήποτε υπάρχουσα ρύθμιση διασταυρούμενου φιλτραρίσματος.
Επιστρέφεται ένα σφάλμα εάν οποιαδήποτε από τις στήλες που ονομάζονται ως όρισμα δεν αποτελεί μέρος μιας σχέσης ή τα ορίσματα ανήκουν σε διαφορετικές σχέσεις.
Εάν οι παραστάσεις CALCULATE είναι ένθετες και περισσότερες από μία παραστάσεις CALCULATE περιέχουν μια συνάρτηση CROSSFILTER, τότε η εσωτερική CROSSFILTER είναι εκείνη που επικρατεί σε περίπτωση διένεξης ή ασάφειας.
Αυτή η συνάρτηση δεν υποστηρίζεται για χρήση σε λειτουργία DirectQuery όταν χρησιμοποιείται σε υπολογιζόμενες στήλες ή σε κανόνες ασφάλειας σε επίπεδο γραμμών (RLS).
Παράδειγμα
Στο παρακάτω διάγραμμα μοντέλου, τόσο το DimProduct όσο και το DimDate έχουν σχέση μονής κατεύθυνσης με την FactInternetSales.
Από προεπιλογή, δεν είναι δυνατή η λήψη του πλήθους προϊόντων που πωλήθηκαν κατά έτος:
Υπάρχουν δύο τρόποι για να λάβετε το πλήθος των προϊόντων κατά έτος:
Ενεργοποιήστε το διασταυρούμενο φιλτράρισμα διπλής κατεύθυνσης στη σχέση. Αυτό θα αλλάξει τον τρόπο λειτουργίας των φίλτρων για όλα τα δεδομένα μεταξύ αυτών των δύο πινάκων.
Χρησιμοποιήστε τη συνάρτηση CROSSFILTER για να αλλάξετε τον τρόπο λειτουργίας των σχέσεων μόνο για αυτήν τη μέτρηση.
Όταν χρησιμοποιείτε το DAX, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση CROSSFILTER για να αλλάξουμε τον τρόπο συμπεριφοράς της κατεύθυνσης διασταυρούμενου φιλτραρίσματος μεταξύ δύο στηλών που ορίζονται από μια σχέση. Σε αυτή την περίπτωση, η παράσταση DAX μοιάζει κάπως έτσι:
BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))
Χρησιμοποιώντας τη συνάρτηση CROSSFILTER στην παράσταση μέτρησης, λαμβάνουμε τα αναμενόμενα αποτελέσματα: