σύνταξη DAX
Αυτό το άρθρο περιγράφει τη σύνταξη και τις απαιτήσεις για τη γλώσσα παράστασης τύπου DAX.
Απαιτήσεις σύνταξης
Ένας DAX τύπος ξεκινά πάντα με ένα σύμβολο ίσον (=
). Μετά το σύμβολο ίσον, μπορείτε να παρέχετε οποιαδήποτε παράσταση που αποδίδει μια ανυσματική τιμή ή μια παράσταση που μπορεί να μετατραπεί σε ανυσματική τιμή. Αυτές περιλαμβάνουν τα εξής:
Μια ανυσματική σταθερά ή μια παράσταση που χρησιμοποιεί έναν ανυσματική τελεστή (
+,-,*,/,>=,...,&&, ...
)Αναφορές σε στήλες ή πίνακες. Η DAX γλώσσα χρησιμοποιεί πάντα πίνακες και στήλες ως δεδομένα εισόδου σε συναρτήσεις και ποτέ έναν πίνακα ή ένα αυθαίρετο σύνολο τιμών.
Τελεστές, σταθερές και τιμές που παρέχονται ως μέρος μιας παράστασης.
Το αποτέλεσμα μιας συνάρτησης και τα απαιτούμενα ορίσματά της. Ορισμένες DAX συναρτήσεις επιστρέφουν έναν πίνακα αντί για μια ανυσματική τιμή και πρέπει να αναδιπλώνονται σε μια συνάρτηση που αξιολογεί τον πίνακα και επιστρέφει μια ανυσματική τιμή. Εκτός εάν ο πίνακας είναι μια μοναδική στήλη, πίνακας μοναδικής γραμμής, τότε αντιμετωπίζεται ως ανυσματική τιμή.
Οι περισσότερες συναρτήσεις DAX απαιτούν ένα ή περισσότερα ορίσματα, τα οποία μπορεί να περιλαμβάνουν πίνακες, στήλες, παραστάσεις και τιμές. Ωστόσο, ορισμένες συναρτήσεις, όπως οι PI, δεν απαιτούν ορίσματα, αλλά απαιτούν πάντα παρενθέσεις για να υποδείξουν το όρισμα null. Για παράδειγμα, πρέπει να πληκτρολογείτε πάντα PI(), όχι PI. Μπορείτε επίσης να κάνετε ένθεση συναρτήσεων μέσα σε άλλες συναρτήσεις.
Εκφράσεις. Μια παράσταση μπορεί να περιέχει οποιοδήποτε ή όλα τα παρακάτω: τελεστές, σταθερές ή αναφορές σε στήλες.
Για παράδειγμα, οι ακόλουθοι τύποι είναι όλοι έγκυροι.
Τύπος | Αποτέλεσμα |
---|---|
= 3 |
3 |
= "Sales" |
πωλήσεων |
= 'Sales'[Amount] |
Εάν χρησιμοποιείτε αυτόν τον τύπο στον πίνακα Sales, θα λάβετε την τιμή της στήλης Amount στον πίνακα Sales για την τρέχουσα γραμμή. |
= (0.03 *[Amount]) =0.03 * [Amount] |
Τρία τοις εκατό της τιμής στη στήλη Amount του τρέχοντος πίνακα. Παρόλο που αυτός ο τύπος μπορεί να χρησιμοποιηθεί για τον υπολογισμό ενός ποσοστού, το αποτέλεσμα δεν εμφανίζεται ως ποσοστό, εκτός εάν εφαρμόσετε μορφοποίηση στον πίνακα. |
= PI() |
Η τιμή της σταθεράς pi. |
Οι τύποι μπορούν να συμπεριφέρονται διαφορετικά, ανάλογα με τον τρόπο που χρησιμοποιούνται. Πρέπει να γνωρίζετε πάντα το περιβάλλον και τον τρόπο με τον οποίο τα δεδομένα που χρησιμοποιείτε στον τύπο σχετίζονται με άλλα δεδομένα που μπορεί να χρησιμοποιηθούν στον υπολογισμό.
Απαιτήσεις ονομασίας
Ένα μοντέλο δεδομένων συχνά περιέχει πολλούς πίνακες. Μαζί οι πίνακες και οι στήλες τους περιλαμβάνουν μια βάση δεδομένων που είναι αποθηκευμένη στη μηχανή ανάλυσης στη μνήμη (VertiPaq). Σε αυτή τη βάση δεδομένων, όλοι οι πίνακες πρέπει να έχουν μοναδικά ονόματα. Τα ονόματα των στηλών πρέπει επίσης να είναι μοναδικά σε κάθε πίνακα. Όλα τα ονόματα αντικειμένων χωρίς διάκριση πεζών-κεφαλαίων ; Για παράδειγμα, τα ονόματα SALES και Sales θα αντιπροσωπεύουν τον ίδιο πίνακα.
Κάθε στήλη και μέτρηση που προσθέτετε σε ένα υπάρχον μοντέλο δεδομένων πρέπει να ανήκουν σε έναν συγκεκριμένο πίνακα. Καθορίζετε τον πίνακα που περιέχει τη στήλη είτε έμμεσα, όταν δημιουργείτε μια υπολογιζόμενη στήλη μέσα σε έναν πίνακα, είτε ρητά, όταν δημιουργείτε μια μέτρηση και καθορίζετε το όνομα του πίνακα στον οποίο θα πρέπει να αποθηκευτεί ο ορισμός μέτρησης.
Όταν χρησιμοποιείτε έναν πίνακα ή μια στήλη ως δεδομένα εισόδου σε μια συνάρτηση, πρέπει γενικά να πληροίτε τις προϋποθέσεις το όνομα της στήλης. Η πλήρως προσδιορισμένη όνομα μιας στήλης είναι το όνομα του πίνακα, ακολουθούμενο από το όνομα της στήλης σε αγκύλες: για παράδειγμα, 'Πωλήσεις Η.Π.Α.'[Προϊόντα]. Απαιτείται πάντα ένα πλήρως προσδιορισμένο όνομα όταν αναφέρεστε σε μια στήλη στα παρακάτω περιβάλλοντα:
Ως όρισμα στη συνάρτηση,
VALUES
Ως όρισμα στις συναρτήσεις,
ALL
ήALLEXCEPT
Σε ένα όρισμα φίλτρου για τις συναρτήσεις,
CALCULATE
ήCALCULATETABLE
Ως όρισμα στη συνάρτηση,
RELATEDTABLE
Ως όρισμα σε οποιαδήποτε συνάρτηση χρονικής ευφυΐας
Ένα μη προσδιορισμένο όνομα στήλης είναι μόνο το όνομα της στήλης, μέσα σε αγκύλες: για παράδειγμα, [Sales Amount]. Για παράδειγμα, όταν αναφέρετε μια ανυσματική τιμή από την ίδια γραμμή του τρέχοντος πίνακα, μπορείτε να χρησιμοποιήσετε το μη προσδιορισμένο όνομα στήλης.
Εάν το όνομα ενός πίνακα περιέχει κενά διαστήματα, δεσμευμένες λέξεις-κλειδιά ή χαρακτήρες που δεν τίθενται, πρέπει να περικλείετε το όνομα του πίνακα σε μονά εισαγωγικά. Πρέπει επίσης να περικλείετε τα ονόματα πινάκων σε εισαγωγικά εάν το όνομα περιέχει χαρακτήρες εκτός της περιοχής αλφαριθμητικών χαρακτήρων ANSI, ανεξάρτητα από το αν οι τοπικές ρυθμίσεις σας υποστηρίζουν το σύνολο χαρακτήρων ή όχι. Για παράδειγμα, εάν ανοίξετε ένα βιβλίο εργασίας που περιέχει ονόματα πινάκων γραμμένα με κυριλλικούς χαρακτήρες, όπως "Таблица", το όνομα του πίνακα πρέπει να περικλείεται σε εισαγωγικά, παρόλο που δεν περιέχει κενά διαστήματα.
Σημείωση
Για να διευκολύνετε την εισαγωγή των πλήρως προσδιορισμένων ονομάτων στηλών, χρησιμοποιήστε τη δυνατότητα αυτόματης συμπλήρωσης στο πρόγραμμα επεξεργασίας τύπων.
Πίνακες
Τα ονόματα πινάκων απαιτούνται κάθε φορά που η στήλη προέρχεται από έναν διαφορετικό πίνακα από τον τρέχοντα πίνακα. Τα ονόματα πινάκων πρέπει να είναι μοναδικά μέσα στη βάση δεδομένων.
Τα ονόματα πινάκων πρέπει να περικλείονται σε μονά εισαγωγικά εάν περιέχουν κενά διαστήματα, άλλους ειδικούς χαρακτήρες ή οποιουσδήποτε μη αγγλικούς αλφαριθμητικούς χαρακτήρες.
Μέτρα
Τα ονόματα μετρήσεων πρέπει να βρίσκονται πάντα μέσα σε αγκύλες.
Τα ονόματα μετρήσεων μπορεί να περιέχουν κενά διαστήματα.
Κάθε όνομα μέτρησης πρέπει να είναι μοναδικό μέσα σε ένα μοντέλο. Επομένως, το όνομα πίνακα είναι προαιρετικό μπροστά από ένα όνομα μέτρησης κατά την αναφορά σε μια υπάρχουσα μέτρηση. Ωστόσο, όταν δημιουργείτε μια μέτρηση, πρέπει να καθορίζετε πάντα έναν πίνακα στον οποίο θα αποθηκευτεί ο ορισμός μέτρησης.
Στήλες
Τα ονόματα στηλών πρέπει να είναι μοναδικά στο περιβάλλον ενός πίνακα. Ωστόσο, πολλοί πίνακες μπορεί να έχουν στήλες με τα ίδια ονόματα (η αποσαφήνιση γίνεται με το όνομα του πίνακα).
Σε γενικές γραμμές, είναι δυνατή η αναφορά σε στήλες χωρίς αναφορά στον βασικό πίνακα στον οποίο ανήκουν, εκτός εάν υπάρχει διένεξη ονόματος για επίλυση ή σε ορισμένες συναρτήσεις που απαιτούν την πλήρη προσδιορισμό των ονομάτων στηλών.
Δεσμευμένες λέξεις-κλειδιά
Εάν το όνομα που χρησιμοποιείτε για έναν πίνακα είναι ίδιο με μια δεσμευμένη λέξη-κλειδί των Υπηρεσιών ανάλυσης, προκαλείται σφάλμα και πρέπει να μετονομάσετε τον πίνακα. Ωστόσο, μπορείτε να χρησιμοποιήσετε λέξεις-κλειδιά σε ονόματα αντικειμένων εάν το όνομα αντικειμένου περικλείεται σε αγκύλες (για στήλες) ή σε εισαγωγικά (για πίνακες).
Σημείωση
Τα εισαγωγικά μπορούν να αναπαρίστανται με πολλούς διαφορετικούς χαρακτήρες, ανάλογα με την εφαρμογή. Εάν επικολλήσετε τύπους από ένα εξωτερικό έγγραφο ή μια ιστοσελίδα, βεβαιωθείτε ότι έχετε ελέγξει τον κωδικό ASCII του χαρακτήρα που χρησιμοποιείται για τα εισαγωγικά ανοίγματος και κλεισίματος, για να βεβαιωθείτε ότι είναι ίδιοι. Διαφορετικά, DAX μπορεί να μην είναι δυνατό να αναγνωρίσει τα σύμβολα ως εισαγωγικά, καθιστώντας την αναφορά μη έγκυρη.
Ειδικοί χαρακτήρες
Οι ακόλουθοι χαρακτήρες και τύποι χαρακτήρων δεν είναι έγκυροι στα ονόματα πινάκων, στηλών ή μετρήσεων:
Αρχικά ή τελικά κενά διαστήματα, Εκτός εάν τα διαστήματα περικλείονται από οριοθέτες ονομάτων, αγκύλες ή μονές αποστρόφους.
Χαρακτήρες στοιχείου ελέγχου
Οι ακόλουθοι χαρακτήρες δεν είναι έγκυροι στα ονόματα των αντικειμένων:
.,;':/\\*|?&%$!+=()[]{}<>
Παραδείγματα ονομάτων αντικειμένων
Ο παρακάτω πίνακας εμφανίζει παραδείγματα ονομάτων αντικειμένων:
Τύποι αντικειμένων | Παραδείγματα | Σχόλιο |
---|---|---|
Όνομα πίνακα | πωλήσεων |
Εάν το όνομα του πίνακα δεν περιέχει κενά διαστήματα ή άλλους ειδικούς χαρακτήρες, το όνομα δεν χρειάζεται να περικλείεται σε εισαγωγικά. |
Όνομα πίνακα | "Canada Sales" | Εάν το όνομα περιέχει κενά διαστήματα, στηλοθών ή άλλους ειδικούς χαρακτήρες, περικλείστε το όνομα σε μονά εισαγωγικά. |
Πλήρως προσδιορισμένο όνομα στήλης | Sales[Amount] | Το όνομα του πίνακα προηγείται του ονόματος στήλης και το όνομα της στήλης περικλείεται σε αγκύλες. |
Πλήρως προσδιορισμένο όνομα μέτρησης | Sales[Profit] | Το όνομα του πίνακα προηγείται του ονόματος μέτρησης και το όνομα μέτρησης περικλείεται σε αγκύλες. Σε ορισμένα περιβάλλοντα, απαιτείται πάντα ένα πλήρως προσδιορισμένο όνομα. |
Μη προσδιορισμένο όνομα στήλης | [Ποσό] | Το μη προσδιορισμένο όνομα είναι μόνο το όνομα της στήλης, σε αγκύλες. Περιβάλλοντα όπου μπορείτε να χρησιμοποιήσετε το μη προσδιορισμένο όνομα περιλαμβάνουν τύπους σε μια υπολογιζόμενη στήλη μέσα στον ίδιο πίνακα ή σε μια συνάρτηση συνάθροισης που σαρώνει τον ίδιο πίνακα. |
Πλήρως προσδιορισμένη στήλη σε πίνακα με κενά διαστήματα | "Canada Sales"[Qty] | Το όνομα πίνακα περιέχει κενά διαστήματα, επομένως πρέπει να περικλείεται σε μονά εισαγωγικά. |
Άλλοι περιορισμοί
Η σύνταξη που απαιτείται για κάθε συνάρτηση, καθώς και ο τύπος της λειτουργίας που μπορεί να εκτελέσει, ποικίλλουν σημαντικά ανάλογα με τη συνάρτηση. Σε γενικές γραμμές, ωστόσο, ισχύουν οι ακόλουθοι κανόνες για όλους τους τύπους και τις παραστάσεις:
DAX οι τύποι και οι παραστάσεις δεν μπορούν να τροποποιήσουν ή να εισαγάγουν μεμονωμένες τιμές σε πίνακες.
Δεν μπορείτε να δημιουργήσετε υπολογιζόμενες γραμμές χρησιμοποιώντας DAX. Μπορείτε να δημιουργήσετε μόνο υπολογιζόμενες στήλες και μετρήσεις.
Όταν ορίζετε υπολογιζόμενες στήλες, μπορείτε να κάνετε ένθεση συναρτήσεων σε οποιοδήποτε επίπεδο.
DAX διαθέτει πολλές συναρτήσεις που επιστρέφουν έναν πίνακα. Συνήθως, χρησιμοποιείτε τις τιμές που επιστρέφονται από αυτές τις συναρτήσεις ως δεδομένα εισόδου σε άλλες συναρτήσεις, οι οποίες απαιτούν έναν πίνακα ως δεδομένα εισόδου.
DAX τελεστών και σταθερών
Ο παρακάτω πίνακας παραθέτει τους τελεστές που υποστηρίζονται από DAX. Για περισσότερες πληροφορίες σχετικά με τη σύνταξη μεμονωμένων τελεστών, ανατρέξτε στο θέμα DAX τελεστών.
Τύπος τελεστή | Σύμβολο και χρήση |
---|---|
Τελεστής παρένθεσης |
() σειρά προτεραιότητας και ομαδοποίηση ορισμάτων |
Αριθμητικοί τελεστές |
+ (πρόσθεση)- (αφαίρεση)* (πολλαπλασιασμός)/ (τμήμα)^ (εκθέτη) |
Τελεστές σύγκρισης |
= (ίσο με)> (μεγαλύτερο από)< (μικρότερο από)>= (μεγαλύτερο από ή ίσο με)<= (μικρότερο από ή ίσο με)<> (δεν ισούται με) |
Τελεστής συνένωσης κειμένου |
& (συνένωση) |
Λογικοί τελεστές |
&& (και)|| (ή) |
τύποι δεδομένων
Δεν χρειάζεται να κάνετε μετατροπή, μετατροπή ή να καθορίσετε με άλλο τρόπο τον τύπο δεδομένων μιας στήλης ή τιμής που χρησιμοποιείτε σε έναν τύπο DAX. Όταν χρησιμοποιείτε δεδομένα σε έναν DAX τύπο, DAX αναγνωρίζει αυτόματα τους τύπους δεδομένων στις αναφερόμενες στήλες και τις τιμές που πληκτρολογείτε και εκτελεί έμμεσες μετατροπές, όπου είναι απαραίτητο, για την ολοκλήρωση της καθορισμένης λειτουργίας.
Για παράδειγμα, εάν επιχειρήσετε να προσθέσετε έναν αριθμό σε μια τιμή ημερομηνίας, ο μηχανισμός θα ερμηνεύσει τη λειτουργία στο περιβάλλον της συνάρτησης και θα μετατρέψει τους αριθμούς σε έναν κοινό τύπο δεδομένων και, στη συνέχεια, θα παρουσιάσει το αποτέλεσμα στην προβλεπόμενη μορφή, μια ημερομηνία.
Ωστόσο, υπάρχουν ορισμένοι περιορισμοί στις τιμές που μπορούν να μετατραπούν με επιτυχία. Εάν μια τιμή ή μια στήλη έχει έναν τύπο δεδομένων που δεν είναι συμβατός με την τρέχουσα λειτουργία, DAX επιστρέφει σφάλμα. Επίσης, DAX δεν παρέχει συναρτήσεις που σας επιτρέπουν να αλλάζετε, να μετατρέπετε ή να μετατρέπετε ρητά τον τύπο δεδομένων των υπαρχόντων δεδομένων που έχετε εισαγάγει σε ένα μοντέλο δεδομένων.
Σημαντικός
DAX δεν υποστηρίζει τη χρήση του τύπου δεδομένων παραλλαγής. Επομένως, όταν φορτώνετε ή εισάγετε δεδομένα σε ένα μοντέλο δεδομένων, αναμένεται ότι τα δεδομένα σε κάθε στήλη θα είναι γενικά ένας συνεπής τύπος δεδομένων.
Ορισμένες συναρτήσεις επιστρέφουν ανυσματικές τιμές, συμπεριλαμβανομένων συμβολοσειρών, ενώ άλλες συναρτήσεις λειτουργούν με αριθμούς, τόσο ακέραιους όσο και πραγματικούς αριθμούς, είτε ημερομηνίες και ώρες. Ο τύπος δεδομένων που απαιτείται για κάθε συνάρτηση περιγράφεται στην ενότητα, DAX συναρτήσεις.
Μπορείτε να χρησιμοποιήσετε πίνακες που περιέχουν πολλές στήλες και πολλές γραμμές δεδομένων ως όρισμα σε μια συνάρτηση. Ορισμένες συναρτήσεις επιστρέφουν επίσης πίνακες, οι οποίοι αποθηκεύονται στη μνήμη και μπορούν να χρησιμοποιηθούν ως ορίσματα σε άλλες συναρτήσεις.
Ημερομηνία και ώρα
DAX αποθηκεύει τιμές ημερομηνίας και ώρας χρησιμοποιώντας τον τύπο δεδομένων ημερομηνίας/ώρας που χρησιμοποιείται από τον Microsoft SQL Server. Η μορφή ημερομηνίας/ώρας χρησιμοποιεί έναν αριθμό κινητής υποδιαστολής όπου οι τιμές ημερομηνίας αντιστοιχούν στο ακέραιο τμήμα που αντιπροσωπεύει τον αριθμό των ημερών από τις 30 Δεκεμβρίου 1899. Οι τιμές ώρας αντιστοιχούν στο δεκαδικό τμήμα μιας τιμής ημερομηνίας όπου οι Ώρες, τα λεπτά και τα δευτερόλεπτα αντιπροσωπεύονται από δεκαδικά κλάσματα της ημέρας. DAX συναρτήσεις ημερομηνίας και ώρας μετατρέπουν σιωπηρά ορίσματα σε τύπο δεδομένων ημερομηνίας/ώρας.
Σημείωση
Η ακριβής μέγιστη τιμή ημερομηνίας/ώρας που υποστηρίζεται από DAX είναι 31 Δεκεμβρίου 9999 00:00:00.
Λεκτική σταθερά ημερομηνίας και ώρας
Ξεκινώντας από την έκδοση Αυγούστου 2021 του Power BI Desktop, DAX τιμές ημερομηνίας και ημερομηνίας/ώρας μπορούν να καθοριστούν ως λεκτική σταθερά στη μορφή dt"YYYY-MM-DD"
, dt"YYYY-MM-DDThh:mm:ss"
ή dt"YYYY-MM-DD hh:mm:ss"
. Όταν καθορίζεται ως λεκτική σταθερά, δεν είναι απαραίτητη η χρήση του DATE, TIME, DATEVALUE, TIMEVALUE συναρτήσεων στην παράσταση.
Για παράδειγμα, η ακόλουθη παράσταση χρησιμοποιεί DATE και TIME συναρτήσεις για να φιλτράρει με βάση το OrderDate:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)
Η ίδια παράσταση φίλτρου μπορεί να καθοριστεί ως λεκτική σταθερά:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)
Σημείωση
Η DAX μορφή λεκτικής σταθεράς τύπου ημερομηνίας και ώρας δεν υποστηρίζεται σε όλες τις εκδόσεις των Power BI Desktop, Υπηρεσιών ανάλυσης και Power Pivot στο Excel. Νέες και ενημερωμένες λειτουργίες DAX συνήθως παρουσιάζονται πρώτα στο Power BI Desktop και, στη συνέχεια, περιλαμβάνονται αργότερα στις Υπηρεσίες ανάλυσης και το Power Pivot στο Excel.