Κοινή χρήση μέσω


σύνταξη DAX

Αυτό το άρθρο περιγράφει τις απαιτήσεις σύνταξης and για τη γλώσσα παράστασης τύπου DAX.

Απαιτήσεις σύνταξης

Ένας τύπος DAX ξεκινά πάντα με ίσο sign (=). Αφού ισούται με sign, μπορείτε να παρέχετε οποιαδήποτε παράσταση που αποδίδει μια ανυσματική τιμή or μια παράσταση που μπορεί να μετατραπεί σε ανυσματική τιμή. Αυτές περιλαμβάνουν τα εξής:

  • Μια ανυσματική σταθερά, or παράσταση που χρησιμοποιεί έναν ανυσματική τελεστή (+,-,*,/,>=,...,&&, ...)

  • Αναφορές σε στήλες or πίνακες. Η γλώσσα DAX χρησιμοποιεί πάντα πίνακες and στήλες ως δεδομένα εισόδου σε συναρτήσεις. Ποτέ ένας πίνακας or αυθαίρετο σύνολο values.

  • Τελεστές, σταθερές andvalues παρέχονται ως μέρος μιας παράστασης.

  • Το αποτέλεσμα μιας συνάρτησης and τα απαιτούμενα ορίσματά της. Ορισμένες συναρτήσεις DAX επιστρέφουν έναν πίνακα αντί για μια ανυσματική τιμή, and πρέπει να αναδιπλώνονται σε μια συνάρτηση που αξιολογεί τον πίνακα and επιστρέφει μια ανυσματική τιμή. Εκτός εάν ο πίνακας είναι ένας πίνακας μίας στήλης, μίας γραμμής, τότε αντιμετωπίζεται ως ανυσματική value.

    Οι περισσότερες συναρτήσεις DAX απαιτούν μία or περισσότερα ορίσματα, τα οποία μπορεί να περιλαμβάνουν πίνακες, στήλες, παραστάσεις andvalues. Ωστόσο, ορισμένες συναρτήσεις, όπως οι PI, απαιτούν not τυχόν ορίσματα, αλλά απαιτούν πάντα παρενθέσεις για να υποδείξουν το όρισμα null. Για παράδειγμα, πρέπει πάντα να πληκτρολογείτε PI(), notPI. Μπορείτε επίσης να κάνετε ένθεση συναρτήσεων μέσα σε άλλες συναρτήσεις.

  • Εκφράσεις. Μια παράσταση μπορεί να περιέχει οποιαδήποτε orall των παρακάτω: τελεστές, σταθερές or αναφορές σε στήλες.

Για παράδειγμα, οι παρακάτω είναι all έγκυρους τύπους.

Τύπος Αποτέλεσμα
= 3 3
= "Sales" πωλήσεων
= 'Sales'[Amount] If χρησιμοποιήσετε αυτόν τον τύπο εντός του πίνακα Sales, θα λάβετε την value της στήλης Amount στον πίνακα Sales για την τρέχουσα γραμμή.
= (0.03 *[Amount])

=0.03 * [Amount]
Τρία τοις εκατό των value στη στήλη Amount του τρέχοντος πίνακα.

Παρόλο που αυτός ο τύπος μπορεί να χρησιμοποιηθεί για calculate ενός ποσοστού, το αποτέλεσμα είναι not εμφανίζεται ως ποσοστό, εκτός εάν εφαρμόσετε μορφοποίηση στον πίνακα.
= PI() Η value της σταθεράς pi.

Οι τύποι μπορούν να συμπεριφέρονται διαφορετικά, ανάλογα με τον τρόπο που χρησιμοποιούνται. Πρέπει να γνωρίζετε πάντα το περιβάλλον and τον τρόπο με τον οποίο τα δεδομένα που χρησιμοποιείτε στον τύπο related σε άλλα δεδομένα που μπορεί να χρησιμοποιηθούν στον υπολογισμό.

Απαιτήσεις ονομασίας

Ένα μοντέλο δεδομένων contains συχνά πολλούς πίνακες. Μαζί οι πίνακες and τις στήλες τους περιλαμβάνουν μια βάση δεδομένων που είναι αποθηκευμένη στη μηχανή ανάλυσης στη μνήμη (VertiPaq). Σε αυτή τη βάση δεδομένων, all πίνακες πρέπει να έχουν μοναδικά ονόματα. Τα ονόματα των στηλών πρέπει επίσης να είναι μοναδικά σε κάθε πίνακα. All ονόματα αντικειμένων που δεν κάνουν διάκριση πεζών-κεφαλαίων ; Για παράδειγμα, τα ονόματα SALESandSales θα αντιπροσώπευαν τον ίδιο πίνακα.

Κάθε στήλη andmeasure που προσθέτετε σε ένα υπάρχον μοντέλο δεδομένων πρέπει να ανήκει σε έναν συγκεκριμένο πίνακα. Καθορίζετε τον πίνακα που contains τη στήλη είτε έμμεσα, όταν δημιουργείτε μια υπολογιζόμενη στήλη μέσα σε έναν πίνακα, or ρητά, όταν δημιουργείτε μια measureand καθορίζετε το όνομα του πίνακα στον οποίο θα πρέπει να αποθηκευτεί ο measure ορισμός.

Όταν χρησιμοποιείτε έναν πίνακα or στήλη ως δεδομένα εισόδου σε μια συνάρτηση, πρέπει γενικά πληροίτε τις προϋποθέσεις το όνομα της στήλης. Η πλήρως προσδιορισμένη όνομα μιας στήλης είναι το όνομα του πίνακα, ακολουθούμενο από το όνομα της στήλης σε αγκύλες: για παράδειγμα, 'Πωλήσεις Η.Π.Α.'[Προϊόντα]. Απαιτείται πάντα ένα πλήρως προσδιορισμένο όνομα όταν αναφέρεστε σε μια στήλη στα παρακάτω περιβάλλοντα:

  • Ως όρισμα στη συνάρτηση, VALUES

  • Ως όρισμα στις συναρτήσεις, ALLorALLEXCEPT

  • Σε ένα filter όρισμα για τις συναρτήσεις, CALCULATEorCALCULATETABLE

  • Ως όρισμα στη συνάρτηση, RELATEDTABLE

  • Ως όρισμα σε οποιαδήποτε συνάρτηση time ευφυΐας

Ένα μη προσδιορισμένο όνομα στήλης είναι μόνο το όνομα της στήλης, μέσα σε αγκύλες: για παράδειγμα, [Sales Amount]. Για παράδειγμα, όταν αναφέρετε μια ανυσματική value από την ίδια γραμμή του τρέχοντος πίνακα, μπορείτε να χρησιμοποιήσετε το μη προσδιορισμένο όνομα στήλης.

If το όνομα ενός πίνακα contains διαστήματα, δεσμευμένες λέξεις-κλειδιά or χαρακτήρες που δεν τίθενται, πρέπει να περικλείετε το όνομα του πίνακα σε μονά εισαγωγικά. Πρέπει επίσης να περικλείετε τα ονόματα πινάκων σε εισαγωγικά if το όνομα contains τυχόν χαρακτήρες εκτός του αλφαριθμητικού χαρακτήρα ANSI range, ανεξάρτητα από το αν οι τοπικές ρυθμίσεις σας υποστηρίζουν το σύνολο χαρακτήρων ornot. Για παράδειγμα, if ανοίξετε ένα βιβλίο εργασίας που contains ονόματα πινάκων γραμμένα με κυριλλικούς χαρακτήρες, όπως "Таблица", το όνομα του πίνακα πρέπει να περικλείεται σε εισαγωγικά, even παρόλο που δεν περιέχει not κενά διαστήματα.

Σημείωση

Για να διευκολύνετε την εισαγωγή των πλήρως προσδιορισμένων ονομάτων στηλών, χρησιμοποιήστε τη δυνατότητα αυτόματης συμπλήρωσης στο πρόγραμμα επεξεργασίας τύπων.

Πίνακες

  • Τα ονόματα πινάκων απαιτούνται κάθε φορά που η στήλη προέρχεται από έναν διαφορετικό πίνακα από τον τρέχοντα πίνακα. Τα ονόματα πινάκων πρέπει να είναι μοναδικά μέσα στη βάση δεδομένων.

  • Τα ονόματα πινάκων πρέπει να περικλείονται σε μονά εισαγωγικά if περιέχουν κενά διαστήματα, άλλοι ειδικοί χαρακτήρες or οποιουσδήποτε μη αγγλικούς αλφαριθμητικούς χαρακτήρες.

Μέτρα

  • Measure ονόματα πρέπει να βρίσκονται πάντα σε αγκύλες.

  • Measure ονόματα μπορεί να περιέχουν κενά διαστήματα.

  • Κάθε όνομα measure πρέπει να είναι μοναδικό μέσα σε ένα μοντέλο. Επομένως, το όνομα του πίνακα είναι προαιρετικό μπροστά από ένα όνομα measure κατά την αναφορά σε μια υπάρχουσα measure. Ωστόσο, όταν δημιουργείτε μια measure πρέπει πάντα να καθορίζετε έναν πίνακα στον οποίο θα αποθηκευτεί ο measure ορισμός.

Στήλες

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

Σε γενικές γραμμές, είναι δυνατή η αναφορά σε στήλες χωρίς αναφορά στον βασικό πίνακα στον οποίο ανήκουν, except όταν ενδέχεται να υπάρχει διένεξη ονόματος για την επίλυση or με ορισμένες συναρτήσεις που απαιτούν την πλήρη προσδιορισμό των ονομάτων στηλών.

Δεσμευμένες λέξεις-κλειδιά

If το όνομα που χρησιμοποιείτε για έναν πίνακα είναι ίδιο με μια δεσμευμένη λέξη-κλειδί των Υπηρεσιών ανάλυσης, ενεργοποιείται μια errorand πρέπει να μετονομάσετε τον πίνακα. Ωστόσο, μπορείτε να χρησιμοποιήσετε λέξεις-κλειδιά σε ονόματα αντικειμένων if το όνομα αντικειμένου περικλείεται σε αγκύλες (για στήλες) or εισαγωγικά (για πίνακες).

Σημείωση

Τα εισαγωγικά μπορούν να αναπαρίστανται με πολλούς διαφορετικούς χαρακτήρες, ανάλογα με την εφαρμογή. If επικολλήσετε τύπους από ένα εξωτερικό έγγραφο or ιστοσελίδα, βεβαιωθείτε ότι έχετε ελέγξει τον κωδικό ASCII του χαρακτήρα που χρησιμοποιείται για το άνοιγμα and κλεισίματος εισαγωγικών, για να εξασφαλίσετε ότι είναι ίδιοι. Διαφορετικά, DAX μπορεί να μην είναι δυνατό να αναγνωρίσει τα σύμβολα ως εισαγωγικά, καθιστώντας την αναφορά μη έγκυρη.

Ειδικοί χαρακτήρες

Οι ακόλουθοι χαρακτήρες and τύποι χαρακτήρων είναι not έγκυροι στα ονόματα πινάκων, στηλών or μετρήσεων:

  • Αρχικά or τελικά διαστήματα. Εκτός εάν τα διαστήματα περικλείονται από οριοθέτες ονομάτων, αγκύλες or μονές αποστρόφους.

  • Χαρακτήρες στοιχείου ελέγχου

  • Οι ακόλουθοι χαρακτήρες not έγκυροι στα ονόματα των αντικειμένων:

    .,;':/\\*|?&%$!+=()[]{}<>

Παραδείγματα ονομάτων αντικειμένων

Ο παρακάτω πίνακας εμφανίζει παραδείγματα ονομάτων αντικειμένων:

Τύποι αντικειμένων Παραδείγματα Σχόλιο
Όνομα πίνακα πωλήσεων If το όνομα του πίνακα περιέχει not κενά διαστήματα or άλλους ειδικούς χαρακτήρες, το όνομα not χρειάζεται να περικλείεται σε εισαγωγικά.
Όνομα πίνακα "Canada Sales" If το όνομα contains διαστήματα, οι καρτέλες or άλλους ειδικούς χαρακτήρες, περικλείστε το όνομα σε μονά εισαγωγικά.
Πλήρως προσδιορισμένο όνομα στήλης Sales[Amount] Το όνομα του πίνακα προηγείται του ονόματος στήλης and το όνομα της στήλης περικλείεται σε αγκύλες.
Πλήρως προσδιορισμένο όνομα measure Sales[Profit] Το όνομα του πίνακα προηγείται του ονόματος measure, and το όνομα του measure περικλείεται σε αγκύλες. Σε ορισμένα περιβάλλοντα, απαιτείται πάντα ένα πλήρως προσδιορισμένο όνομα.
Μη προσδιορισμένο όνομα στήλης [Ποσό] Το μη προσδιορισμένο όνομα είναι μόνο το όνομα της στήλης, σε αγκύλες. Περιβάλλοντα όπου μπορείτε να χρησιμοποιήσετε το μη προσδιορισμένο όνομα περιλαμβάνουν τύπους σε μια υπολογιζόμενη στήλη μέσα στον ίδιο πίνακα or σε μια συνάρτηση συνάθροισης που σαρώνει τον ίδιο πίνακα.
Πλήρως προσδιορισμένη στήλη σε πίνακα με κενά διαστήματα "Canada Sales"[Qty] Το όνομα του πίνακα contains κενά διαστήματα, επομένως πρέπει να περικλείεται σε μονά εισαγωγικά.

Άλλοι περιορισμοί

Η σύνταξη που απαιτείται για κάθε συνάρτηση, and τον τύπο της λειτουργίας που μπορεί να εκτελέσει, ποικίλλει σημαντικά ανάλογα με τη συνάρτηση. Σε γενικές γραμμές, ωστόσο, ισχύουν οι ακόλουθοι κανόνες για all τύπους and παραστάσεις:

  • DAX τύποι and παραστάσεις δεν μπορούν να τροποποιήσουν or εισαγωγή μεμονωμένων values σε πίνακες.

  • Δεν μπορείτε να δημιουργήσετε υπολογιζόμενες γραμμές χρησιμοποιώντας DAX. Μπορείτε να δημιουργήσετε μόνο υπολογιζόμενες στήλες and μετρήσεις.

  • Όταν ορίζετε υπολογιζόμενες στήλες, μπορείτε να κάνετε ένθεση συναρτήσεων σε οποιοδήποτε επίπεδο.

  • DAX διαθέτει πολλές συναρτήσεις που επιστρέφουν έναν πίνακα. Συνήθως, χρησιμοποιείτε τα values που επιστρέφονται από αυτές τις συναρτήσεις ως δεδομένα εισόδου σε άλλες συναρτήσεις, οι οποίες απαιτούν έναν πίνακα ως δεδομένα εισόδου.

τελεστές DAXand σταθερές

Ο παρακάτω πίνακας παραθέτει τους τελεστές που υποστηρίζονται από DAX. Για περισσότερες πληροφορίες σχετικά με τη σύνταξη μεμονωμένων τελεστών, ανατρέξτε στο θέμα DAX τελεστών.

Τύπος τελεστή Χρήση συμβόλων and
Τελεστής παρένθεσης () σειρά προτεραιότητας and ομαδοποίηση ορισμάτων
Αριθμητικοί τελεστές + (πρόσθεση)

- (αφαίρεση)

* (πολλαπλασιασμός)

/ (τμήμα)

^ (εκθέτη)
Τελεστές σύγκρισης = (ίσο με)

> (μεγαλύτερο από)

< (μικρότερο από)

>= (μεγαλύτερο από or ίσο με)

<= (μικρότερο από or ίσο με)

<> (not ίσο με)
Τελεστής συνένωσης κειμένου & (συνένωση)
Λογικοί τελεστές && (and)

|| (or)

τύποι δεδομένων

Πρέπει not κάνετε μετατροπή, convert, or να καθορίσετε διαφορετικά τον τύπο δεδομένων μιας orvalue στήλης που χρησιμοποιείτε σε έναν τύπο DAX. Όταν χρησιμοποιείτε δεδομένα σε έναν τύπο DAX, DAX αναγνωρίζει αυτόματα τους τύπους δεδομένων στις αναφερόμενες στήλες and των values που πληκτρολογείτε and εκτελεί έμμεσες μετατροπές όπου είναι απαραίτητο για την ολοκλήρωση της καθορισμένης λειτουργίας.

Για παράδειγμα, if επιχειρήσετε να προσθέσετε έναν αριθμό σε ένα datevalue, η μηχανή θα ερμηνεύσει τη λειτουργία στο περιβάλλον της συνάρτησης, andconvert τους αριθμούς σε έναν κοινό τύπο δεδομένων and, στη συνέχεια, θα παρουσιάσει το αποτέλεσμα στο προβλεπόμενο format, ένα date.

Ωστόσο, υπάρχουν ορισμένοι περιορισμοί στην values που μπορούν να μετατραπούν με επιτυχία. If ένας valueor μια στήλη έχει τύπο δεδομένων που δεν είναι συμβατός με την τρέχουσα λειτουργία, DAX επιστρέφει μια error. Επίσης, DAX παρέχει not συναρτήσεις που σας επιτρέπουν να αλλάζετε ρητά, convertor μετατρέψετε τον τύπο δεδομένων των υπαρχόντων δεδομένων που έχετε εισαγάγει σε ένα μοντέλο δεδομένων.

Σημαντικός

DAX υποστηρίζει not χρήση του τύπου δεδομένων παραλλαγών. Επομένως, όταν φορτώνετε or εισαγάγετε δεδομένα σε ένα μοντέλο δεδομένων, αναμένεται ότι τα δεδομένα σε κάθε στήλη θα είναι γενικά ένας συνεπής τύπος δεδομένων.

Ορισμένες συναρτήσεις επιστρέφουν ανυσματικές values, συμπεριλαμβανομένων συμβολοσειρών, ενώ άλλες συναρτήσεις λειτουργούν με αριθμούς, τόσο ακέραιους όσο and πραγματικούς αριθμούς, or ημερομηνίες and ώρες. Ο τύπος δεδομένων που απαιτείται για κάθε συνάρτηση περιγράφεται στην ενότητα, DAX συναρτήσεις.

Μπορείτε να χρησιμοποιήσετε πίνακες που περιέχουν πολλές στήλες and πολλές γραμμές δεδομένων ως όρισμα σε μια συνάρτηση. Ορισμένες συναρτήσεις επιστρέφουν επίσης πίνακες, οι οποίοι αποθηκεύονται στη μνήμη and μπορούν να χρησιμοποιηθούν ως ορίσματα σε άλλες συναρτήσεις.

Date and time

DAX αποθηκεύει dateandtimevalues χρησιμοποιώντας τον τύπο δεδομένων ημερομηνίας/ώρας που χρησιμοποιείται από τον Microsoft SQL Server. Η format ημερομηνίας/ώρας χρησιμοποιεί έναν αριθμό κινητής υποδιαστολής όπου Datevalues αντιστοιχούν στο ακέραιο τμήμα που αντιπροσωπεύει τον αριθμό των ημερών από τις 30 Δεκεμβρίου 1899. Time values αντιστοιχούν στο δεκαδικό τμήμα ενός datevalue όπου οι Ώρες, τα λεπτά and τα δευτερόλεπτα αντιπροσωπεύονται από δεκαδικά κλάσματα ενός day. DAX date and time συναρτήσεις convert σιωπηρά ορίσματα στον τύπο δεδομένων ημερομηνίας/ώρας.

Σημείωση

Ο exact μέγιστος value ημερομηνίας/ώρας που υποστηρίζεται από το DAX είναι 31 Δεκεμβρίου 9999 00:00:00.

Date and time λεκτική σταθερά

Ξεκινώντας από την έκδοση Αυγούστου 2021 του Power BI Desktop, DAXdateandvalues ημερομηνίας/ώρας μπορεί να καθοριστεί ως λεκτική σταθερά στον formatdt"YYYY-MM-DD", dt"YYYY-MM-DDThh:mm:ss", ordt"YYYY-MM-DD hh:mm:ss". Όταν καθορίζεται ως λεκτική σταθερά, οι συναρτήσεις DATE, TIME, DATEVALUE, TIMEVALUE συναρτήσεις στην παράσταση είναι not απαραίτητες.

Για παράδειγμα, η ακόλουθη παράσταση χρησιμοποιεί DATEandTIME συναρτήσεις για να filter στο OrderDate:

EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)

Η ίδια filter παράσταση μπορεί να καθοριστεί ως λεκτική σταθερά:

EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)

Σημείωση

Η DAXdateandformat λεκτικής σταθεράς τύπου ημερομηνίας/ώρας υποστηρίζεται not σε all εκδόσεις του Power BI Desktop, των Υπηρεσιών ανάλυσης andPower Pivot στο Excel. Οι νέες and ενημερωμένες λειτουργίες DAX συνήθως first παρουσιάζονται στο Power BI Desktop and στη συνέχεια περιλαμβάνονται αργότερα στο Pivot andPower Υπηρεσιών ανάλυσης στο Excel.