Τελεστές DAX
Η γλώσσα Data Analysis Expression (DAX) χρησιμοποιεί τελεστές για τη δημιουργία παραστάσεων που συγκρίνουν τιμές, εκτελούν αριθμητικούς υπολογισμούς ή λειτουργούν με συμβολοσειρές.
Τύποι τελεστών
Υπάρχουν τέσσερις διαφορετικοί τύποι τελεστών υπολογισμού: αριθμητικοί, σύγκρισης, συνένωσης κειμένου και λογικοί.
Αριθμητικοί τελεστές
Για την εκτέλεση βασικών μαθηματικών πράξεων, όπως πρόσθεση, αφαίρεση ή πολλαπλασιασμός, να συνδυάζουν αριθμούς· και παράγει αριθμητικά αποτελέσματα, χρησιμοποιήστε τους ακόλουθους αριθμητικούς τελεστές.
Αριθμητικός τελεστής | Νόημα | Παράδειγμα |
---|---|---|
+ (σύμβολο "συν") | Πρόσθεση | 3+3 |
– (σύμβολο "πλην") | Αφαίρεση ή πρόσημο | 3–1–1 |
* (αστερίσκος) | Πολλαπλασιασμός | 3*3 |
/ (κάθετος) | Τμήμα | 3/3 |
^ (σύμβολο εκθέτη) | Εκθετοποίηση | 16^4 |
Σημείωμα
Το σύμβολο συν μπορεί να λειτουργήσει τόσο ως δυαδικός τελεστής όσο και ως μοναδιαίος τελεστής. Ένας δυαδικός τελεστής απαιτεί αριθμούς και στις δύο πλευρές του τελεστή και εκτελεί πρόσθεση. Όταν χρησιμοποιείτε τιμές σε έναν τύπο DAX και στις δύο πλευρές του δυαδικού τελεστή, το DAX προσπαθεί να ρίξει τις τιμές σε αριθμητικούς τύπους δεδομένων, εάν δεν είναι ήδη αριθμοί. Αντίθετα, ο μοναδιαίος τελεστής μπορεί να εφαρμοστεί σε οποιονδήποτε τύπο ορίσματος. Το σύμβολο πρόσθεσης δεν επηρεάζει τον τύπο ή την τιμή και απλώς παραβλέπεται, ενώ ο τελεστής μείον δημιουργεί μια αρνητική τιμή, εάν εφαρμοστεί σε μια αριθμητική τιμή.
Τελεστές σύγκρισης
Μπορείτε να συγκρίνετε δύο τιμές με τους ακόλουθους τελεστές. Όταν συγκρίνονται δύο τιμές με τη χρήση αυτών των τελεστών, το αποτέλεσμα είναι μια λογική τιμή, είτε TRUE είτε FALSE.
Τελεστής σύγκρισης | Νόημα | Παράδειγμα |
---|---|---|
= | Ίσο με | [Region] = "USA" |
== | Αυστηρά ίσο με | [Region] == "USA" |
> | Μεγαλύτερο από | [Ημερομηνία πωλήσεων] > "Jan 2009" |
< | Μικρότερο από | [Ημερομηνία πωλήσεων] < "1 Ιαν 2009" |
>= | Μεγαλύτερο από ή ίσο με | [Ποσό] >= 20000 |
<= | Μικρότερο από ή ίσο με | [Ποσό] <= 100 |
<> | Δεν είναι ίσο με | [Περιοχή] <> "USA" |
Όλοι οι τελεστές σύγκρισης εκτός από == αντιμετωπίζουν την BLANK ως ίση με τον αριθμό 0, την κενή συμβολοσειρά "", την DATE(1899, 12, 30) ή την false. Κατά συνέπεια, το στοιχείο [Column] = 0 θα είναι true όταν η τιμή του στοιχείου [Column] είναι είτε 0 είτε BLANK. Αντίθετα, το στοιχείο [Column] == 0 είναι true μόνο όταν η τιμή του στοιχείου [Column] είναι 0.
Τελεστής συνένωσης κειμένου
Χρησιμοποιήστε το εμπορικό και (&) για να συνδέσετε ή να συνενώστε δύο ή περισσότερες συμβολοσειρές κειμένου για να δημιουργήσετε ένα μοναδικό τμήμα κειμένου.
Τελεστής κειμένου | Νόημα | Παράδειγμα |
---|---|---|
& (εμπορικό "και") | Σύνδεση, ή συνενώνει, δύο τιμές για τη παραγωγή μίας συνεχούς τιμής κειμένου | [Region] & ", " & [City] |
Λογικοί τελεστές
Χρησιμοποιήστε λογικούς τελεστές (&&) και (||) για να συνδυάσετε παραστάσεις για να παράγετε ένα μοναδικό αποτέλεσμα.
Τελεστής κειμένου | Νόημα | Παραδείγματα |
---|---|---|
& (διπλό εμπορικό "και") | Δημιουργεί μια συνθήκη AND μεταξύ δύο παραστάσεων, καθεμία από τις οποία έχει ένα δυαδικό αποτέλεσμα. Εάν αμφότερες οι παραστάσεις επιστρέφουν TRUE, ο συνδυασμός των παραστάσεων επιστρέφει επίσης TRUE. Διαφορετικά, ο συνδυασμός επιστρέφει FALSE. | ([Region] = "France") & ([BikeBuyer] = "yes")) |
|| (σύμβολο διπλής διοχέτευσης) | Δημιουργεί μια συνθήκη OR μεταξύ δύο λογικών παραστάσεων. Εάν οποιαδήποτε παράσταση επιστρέψει TRUE, το αποτέλεσμα είναι TRUE. Μόνο όταν και οι δύο παραστάσεις είναι FALSE, το αποτέλεσμα είναι FALSE. | (([Region] = "France") || ([BikeBuyer] = "yes")) |
IN | Δημιουργεί μια λογική συνθήκη OR μεταξύ κάθε γραμμής που συγκρίνεται με έναν πίνακα. Σημείωση: η σύνταξη κατασκευής πίνακα χρησιμοποιεί άγκιστρα. | 'Product'[Color] IN { "Red", "Blue", "Black" } |
Τελεστές και σειρά προτεραιότητας
Σε ορισμένες περιπτώσεις, η σειρά με την οποία εκτελείται ο υπολογισμός μπορεί να επηρεάσει την τιμή επιστροφής. Επομένως, είναι σημαντικό να κατανοήσετε πώς καθορίζεται η σειρά και πώς μπορείτε να αλλάξετε τη σειρά για να λάβετε τα επιθυμητά αποτελέσματα.
Σειρά υπολογισμού
Μια παράσταση αξιολογεί τους τελεστές και τις τιμές με μια συγκεκριμένη σειρά. Όλες οι παραστάσεις ξεκινούν πάντα με το σύμβολο ίσον (=). Το σύμβολο ίσον υποδεικνύει ότι οι χαρακτήρες που έχουν ολοκληρωθεί με επιτυχία αποτελούν μια παράσταση.
Ακολουθώντας το σύμβολο ίσον, ακολουθούν τα στοιχεία που θα υπολογιστούν (οι τελεστέοι), τα οποία διαχωρίζονται με τελεστές υπολογισμού. Οι παραστάσεις διαβάζονται πάντα από αριστερά προς τα δεξιά, αλλά η σειρά με την οποία ομαδοποιούνται τα στοιχεία μπορεί να ελεγχθεί σε κάποιο βαθμό χρησιμοποιώντας παρενθέσεις.
Προτεραιότητα τελεστών
Εάν συνδυάσετε πολλούς τελεστές σε έναν μόνο τύπο, οι λειτουργίες ταξινομούνται σύμφωνα με τον παρακάτω πίνακα. Εάν οι τελεστές έχουν ίση τιμή προτεραιότητας, διατάσσονται από αριστερά προς τα δεξιά. Για παράδειγμα, εάν μια παράσταση περιέχει έναν τελεστή πολλαπλασιασμού και διαίρεσης, αξιολογούνται με τη σειρά που εμφανίζονται στην παράσταση, από αριστερά προς τα δεξιά.
Τελεστής | Περιγραφή |
---|---|
^ | Εκθετοποίηση |
– | Πρόσημο (όπως στο –1) |
*Και/ | Πολλαπλασιασμός και διαίρεση |
+ και – | Προσθήκη και αφαίρεση |
& | Σύνδεση δύο συμβολοσειρές κειμένου (συνένωση) |
=,==,<,>,<=,>=,<>,IN | Σύγκριση |
NOT | NOT (μοναδιαίος τελεστής) |
Χρήση παρενθέσεων για τον έλεγχο της σειράς υπολογισμών
Για να αλλάξετε τη σειρά αξιολόγησης, θα πρέπει να περικλείετε σε παρενθέσεις το τμήμα του τύπου που πρέπει να υπολογιστεί πρώτο. Για παράδειγμα, ο παρακάτω τύπος παράγει τον αριθμό 11 καθώς ο πολλαπλασιασμός υπολογίζεται πριν από την πρόσθεση. Ο τύπος πολλαπλασιάζει το 2 επί το 3 και, στη συνέχεια, προσθέτει τον αριθμό 5 στο αποτέλεσμα.
=5+2*3
Αντίθετα, εάν χρησιμοποιείτε παρενθέσεις για να αλλάξετε τη σύνταξη, η σειρά αλλάζει έτσι ώστε να προστίθενται το 5 και το 2 μαζί και το αποτέλεσμα να πολλαπλασιάζεται με το 3 για να παράγει το 21.
=(5+2)*3
Στο παρακάτω παράδειγμα, οι παρενθέσεις γύρω από το πρώτο τμήμα του τύπου επιβάλλουν στον υπολογισμό να αξιολογήσει πρώτα την παράσταση (3 + 0.25)
και, στη συνέχεια, να διαιρέσει το αποτέλεσμα με το αποτέλεσμα της παράστασης, (3 - 0.25)
.
=(3 + 0.25)/(3 - 0.25)
Στο παρακάτω παράδειγμα, ο τελεστής ύπνωσης εφαρμόζεται πρώτος, σύμφωνα με τους κανόνες προτεραιότητας για τους τελεστές και, στη συνέχεια, εφαρμόζεται ο τελεστής πρόσημο. Το αποτέλεσμα για αυτή την παράσταση είναι -4.
=-2^2
Για να εξασφαλίσετε ότι ο τελεστής πρόσημο θα εφαρμοστεί πρώτα στην αριθμητική τιμή, μπορείτε να χρησιμοποιήσετε παρενθέσεις για να ελέγξετε τελεστές, όπως φαίνεται στο παρακάτω παράδειγμα. Το αποτέλεσμα για αυτή την παράσταση είναι 4.
= (-2)^2
Συμβατότητα
Το DAX χειρίζεται και συγκρίνει εύκολα διάφορους τύπους δεδομένων, όπως το Microsoft Excel. Ωστόσο, η υποκείμενη μηχανή υπολογισμού βασίζεται σε Υπηρεσίες ανάλυσης του SQL Server και παρέχει πρόσθετες προηγμένες δυνατότητες ενός χώρου αποθήκευσης σχεσιακών δεδομένων, συμπεριλαμβανομένης της εμπλουτισμένης υποστήριξης για τύπους ημερομηνίας και ώρας. Επομένως, σε ορισμένες περιπτώσεις, τα αποτελέσματα των υπολογισμών ή η συμπεριφορά των συναρτήσεων μπορεί να μην είναι ίδια με του Excel. Επιπλέον, το DAX υποστηρίζει περισσότερους τύπους δεδομένων από ό,τι το Excel. Αυτή η ενότητα περιγράφει τις βασικές διαφορές.
Επιβολή τύπων δεδομένων για τελεστέους
Σε γενικές γραμμές, οι δύο τελεστέοι στην αριστερή και δεξιά πλευρά οποιουδήποτε τελεστή πρέπει να είναι του ίδιου τύπου δεδομένων. Ωστόσο, εάν οι τύποι δεδομένων είναι διαφορετικοί, το DAX θα τους μετατρέψει σε έναν κοινό τύπο δεδομένων για να εφαρμόσει τον τελεστή σε ορισμένες περιπτώσεις:
- Και οι δύο τελεστέοι μετατρέπονται στον μεγαλύτερο πιθανό κοινό τύπο δεδομένων.
- Εφαρμόζεται ο τελεστής, εάν είναι δυνατό.
Για παράδειγμα, ας υποθέσουμε ότι έχετε δύο αριθμούς που θέλετε να συνδυάσετε. Ένας αριθμός προκύπτει από έναν τύπο, όπως =[Price] * .20
, και το αποτέλεσμα μπορεί να περιέχει πολλά δεκαδικά ψηφία. Ο άλλος αριθμός είναι ένας ακέραιος που έχει δοθεί ως τιμή συμβολοσειράς.
Στην περίπτωση αυτή, το DAX θα μετατρέψει και τους δύο αριθμούς σε πραγματικούς αριθμούς σε αριθμητική μορφή, χρησιμοποιώντας τη μεγαλύτερη αριθμητική μορφή που μπορεί να αποθηκεύσει και τα δύο είδη αριθμών. Στη συνέχεια, το DAX θα εφαρμόσει τον πολλαπλασιασμό.
Ανάλογα με τον συνδυασμό τύπου δεδομένων, μπορεί να μην έχει εφαρμοστεί εξαναγκασμός τύπου για λειτουργίες σύγκρισης. Για μια πλήρη λίστα των τύπων δεδομένων που υποστηρίζονται από το DAX, ανατρέξτε στο θέμα Τύποι δεδομένων που υποστηρίζονται σε μοντέλα σε μορφή πίνακα και Τύποι δεδομένων στο Power BI Desktop.
Ο ακέραιος, ο πραγματικός αριθμός, η νομισματική μονάδα, η ημερομηνία/ώρα και το κενό θεωρούνται αριθμητικά για σκοπούς σύγκρισης. Το κενό αξιολογείται ως μηδέν κατά την εκτέλεση μιας σύγκρισης. Υποστηρίζονται οι ακόλουθοι συνδυασμοί τύπων δεδομένων για λειτουργίες σύγκρισης.
Τύπος δεδομένων αριστερής πλευράς | Τύπος δεδομένων δεξιάς πλευράς |
---|---|
Αριθμός | Αριθμός |
Boolean | Boolean |
Συμβολοσειρά | Συμβολοσειρά |
Άλλες μεικτές συγκρίσεις τύπου δεδομένων θα επιστρέψουν σφάλμα. Για παράδειγμα, ένας τύπος όπως ο ="1" > 0 επιστρέφει ένα σφάλμα που αναφέρει ότι οι λειτουργίες σύγκρισης DAX δεν υποστηρίζουν τη σύγκριση τιμών τύπου κειμένου με τιμές τύπου ακεραίου.
Τύποι δεδομένων που χρησιμοποιούνται στο DAX | Τύποι δεδομένων που χρησιμοποιούνται στο Excel |
---|---|
Αριθμοί (I8, R8) | Αριθμοί (R8) |
Συμβολοσειρά | Συμβολοσειρά |
Boolean | Boolean |
DateTime | Παραλλαγή |
Νομισματική μονάδα | Νομισματική μονάδα |
Διαφορές στη σειρά προτεραιότητας
Η σειρά προτεραιότητας των πράξεων σε τύπους DAX είναι βασικά η ίδια με αυτή που χρησιμοποιείται από το Microsoft Excel, αλλά ορισμένοι τελεστές του Excel δεν υποστηρίζονται, όπως το ποσοστό. Επίσης, δεν υποστηρίζονται περιοχές.
Επομένως, κάθε φορά που αντιγράφετε και επικολλείτε τύπους από το Excel, φροντίστε να ελέγχετε προσεκτικά τον τύπο, καθώς ορισμένοι τελεστές ή στοιχεία στους τύπους ενδέχεται να μην είναι έγκυρα. Όταν υπάρχει καμία αμφιβολία σχετικά με τη σειρά με την οποία εκτελούνται οι πράξεις, συνιστάται να χρησιμοποιήσετε παρενθέσεις για να ελέγξετε τη σειρά των πράξεων και να εξαλείφετε τυχόν ασάφειες σχετικά με το αποτέλεσμα.