DAX ερωτημάτων
Προγράμματα-πελάτες αναφοράς όπως το Power BI και το Excel εκτελούν DAX ερωτήματα κάθε φορά που εμφανίζονται απεικονίσεις σε μια αναφορά ή ένα πεδίο προστίθεται σε έναν πίνακα και αυτά τα DAX ερωτήματα προσαρμόζονται όταν εφαρμόζεται ένα φίλτρο. Η ανάλυσης απόδοσης στο Power BI Desktop μπορεί να σας εμφανίσει αυτά DAX ερωτήματα, ακόμη και να τα εκτελέσει στην προβολή ερωτήματος DAX.
Χρησιμοποιώντας DAX προβολής ερωτημάτων στο Power BI Desktop ή Εγγραφή DAX ερωτημάτων στην υπηρεσία Power BI, μπορείτε να δημιουργήσετε και να εκτελέσετε τα δικά σας ερωτήματα DAX. Με Microsoft Fabric, μπορείτε να αυξήσετε περαιτέρω την παραγωγικότητά σας με Copilot για τη σύνταξη ερωτημάτων DAX σε DAX προβολή ερωτημάτων του Desktop ή του Web. Εκτός από τα εργαλεία Power BI, μπορούν να εκτελεστούν
DAX ερωτήματα επιστρέφουν αποτελέσματα ως πίνακα ακριβώς μέσα στο εργαλείο, επιτρέποντάς σας να δημιουργήσετε και να ελέγξετε γρήγορα τις επιδόσεις των DAX τύπων σας σε μετρήσεις ή απλώς να προβάλετε τα δεδομένα στο μοντέλο σημασιολογίας σας. ΠΛΗΡΟΦΟΡΙΕΣ και ΠΛΗΡΟΦΟΡΙΕΣ. Η VIEW DAX συναρτήσεις μπορούν επίσης να λάβουν πληροφορίες σχετικά με το σημασιολογικό μοντέλο σας, όπως μια λίστα πινάκων, στηλών, μετρήσεων και πολλά άλλα.
Πριν μάθετε σχετικά με τα ερωτήματα, είναι σημαντικό να κατανοήσετε καλά τα βασικά στοιχεία DAX. Εάν δεν το έχετε κάνει ήδη, ρίξτε μια ματιά DAX επισκόπηση.
Λέξεις κλειδιά
DAX ερωτήματα έχουν μια απλή σύνταξη που αποτελείται από μία μόνο απαιτούμενη λέξη-κλειδί, EVALUATE. EVALUATE ακολουθείται από μια παράσταση πίνακα, όπως μια συνάρτηση DAX ή όνομα πίνακα, η οποία όταν η εκτέλεση εξάγει έναν πίνακα αποτελέσματος. Οι παραστάσεις πίνακα που εξάγουν έναν πίνακα αποτελεσμάτων περιλαμβάνουν:
- Οι συνήθεις συναρτήσεις DAX που εξάγουν έναν πίνακα, όπως SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLEκαι πολλές άλλες, συνεργάζονται με EVALUATE για την έξοδο ενός πίνακα αποτελεσμάτων.
- Οι πίνακες στο μοντέλο, όταν αναφέρονται με βάση το όνομα, λειτουργούν με EVALUATE για την έξοδο ενός πίνακα αποτελεσμάτων που εμφανίζει τα δεδομένα στον πίνακα. Για παράδειγμα, EVALUATE "Όνομα πίνακα" μπορεί να εκτελεστεί ως DAX ερώτημα.
- Οι μετρήσεις στο μοντέλο ή σε οποιονδήποτε τύπο DAX, ο οποίος επιστρέφει μια ανυσματική τιμή, συνεργάζονται με EVALUATE για να εμφανίσουν την τιμή ως πίνακα που προκύπτει όταν περικλείονται σε άγκιστρα. Για παράδειγμα, EVALUATE {[Total Sales]} ή EVALUATE {COUNTROWS('Πωλήσεις')} μπορούν να εκτελεστεί ως DAX ερώτημα. Αυτές ονομάζονται κατασκευές πίνακα.
Υπάρχουν πολλές προαιρετικές λέξεις-κλειδιά ειδικά για DAX ερωτήματα: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE και COLUMN.
EVALUATE (Απαιτείται)
Στο πιο βασικό επίπεδο, ένα ερώτημα DAX είναι μια EVALUATE
πρόταση που περιέχει μια παράσταση πίνακα. Ωστόσο, απαιτείται τουλάχιστον μία EVALUATE πρόταση, ωστόσο, ένα ερώτημα μπορεί να περιέχει οποιονδήποτε αριθμό EVALUATE πρότασης.
σύνταξη EVALUATE
EVALUATE <table>
παράμετροι EVALUATE
Όρος | Ορισμός |
---|---|
table |
Μια παράσταση πίνακα. |
παράδειγμα EVALUATE
EVALUATE
'Sales Order'
Επιστρέφει όλες τις γραμμές και τις στήλες από τον πίνακα Sales Order, ως αποτέλεσμα. Αυτό μπορεί να περιοριστεί με τη χρήση του TOPN ή του FILTERκαι να ταξινομηθεί με ORDER BY.
ORDER BY (Προαιρετικό)
Η προαιρετική ORDER BY
λέξη-κλειδί ορίζει μία ή περισσότερες στήλες στο ερώτημα ή παραστάσεις που χρησιμοποιούνται για την ταξινόμηση των αποτελεσμάτων του ερωτήματος. Οποιαδήποτε παράσταση που μπορεί να αξιολογηθεί για κάθε γραμμή του αποτελέσματος είναι έγκυρη. Οποιαδήποτε στήλη στο ίδιο το ερώτημα είναι επίσης έγκυρη.
Η ιδιότητα ταξινόμησης κατά στήλη σε σημασιολογικά μοντέλα δεν ισχύει για DAX αποτελεσμάτων ερωτήματος. Εάν μια στήλη πρέπει να ταξινομηθεί με βάση μια διαφορετική στήλη στο μοντέλο, όπως στην περίπτωση του Month Name, η στήλη ταξινόμησης κατά θα πρέπει επίσης να συμπεριληφθεί στο ερώτημα DAX που θα χρησιμοποιηθεί στο ORDER BY.
σύνταξη ORDER BY
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]
παράμετροι ORDER BY
Όρος | Ορισμός |
---|---|
expression |
Οποιαδήποτε παράσταση DAX που επιστρέφει μια μοναδική ανυσματική τιμή ή στήλη που περιλαμβάνεται στο ερώτημα DAX. |
ASC |
(προεπιλογή) Αύξουσα σειρά ταξινόμησης. |
DESC |
Φθίνουσα σειρά ταξινόμησης. |
παράδειγμα ORDER BY
EVALUATE
SUMMARIZECOLUMNS(
// Group by columns
'Date'[Month Name],
'Date'[Month of Year],
'Product'[Category],
// Optional filters
FILTER(
VALUES('Product'[Category]),
[Category] = "Clothing"
),
// Measures or explicit DAX formulas to aggregate and analyze the data by row
"Orders", [Orders],
"Avg Profit per Order", DIVIDE(
[Total Sales Profit],
[Orders]
)
)
// DAX queries do not use sort order defined in Power BI,
// sort by columns must be included in the DAX query to be used in order by
ORDER BY 'Date'[Month of Year] ASC
Επιστρέφει τις παραγγελίες ρούχων και το μέσο κέρδος ανά παραγγελία ανά μήνα, σε αύξουσα σειρά κατά μήνα, ως πίνακα αποτελεσμάτων.
TOPN δεν επιλέγει τον καθορισμένο αριθμό γραμμών που θα επιστραφούν με βάση τη σειρά ταξινόμησης που καθορίζεται στο ORDER BY. Αντί για αυτό, TOPN έχει τη δική της σύνταξη για να καθορίσετε προαιρετικά μια ταξινόμηση προτού επιστραφούν οι πρώτες 100 γραμμές. ORDER BY ταξινομεί μόνο τον πίνακα αποτελεσμάτων που επιστρέφεται από TOPN.
EVALUATE
TOPN(
100,
'Sales Order',
// The way the data is sorted before the top 100 rows are selected
'Sales Order'[SalesOrderLineKey], ASC
)
// The way the data is sorted for the results
ORDER BY
'Sales Order'[Sales Order] ASC,
'Sales Order'[Sales Order Line] ASC
Επιστρέφει τις 100 κορυφαίες παραγγελίες πωλήσεων ταξινομημένες κατά αύξουσα σειρά SalesOrderLienKey και, στη συνέχεια, ταξινομεί τα αποτελέσματα πρώτα κατά παραγγελία πώλησης και, στη συνέχεια, κατά γραμμή παραγγελίας πώλησης.
START AT (Προαιρετικό)
Η προαιρετική λέξη-κλειδί START AT
χρησιμοποιείται μέσα σε έναν όρο ORDER BY
. Καθορίζει την τιμή με την οποία ξεκινούν τα αποτελέσματα του ερωτήματος.
σύνταξη START AT
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]
παράμετροι START AT
Όρος | Ορισμός |
---|---|
value |
Μια τιμή σταθεράς. Δεν μπορεί να είναι παράσταση. |
parameter |
Το όνομα μιας παραμέτρου σε μια πρόταση XMLA με πρόθεμα έναν χαρακτήρα @ . |
START AT παρατηρήσεις
START AT ορίσματα έχουν μια αντιστοιχία ένα προς ένα με τις στήλες στον όρο ORDER BY. Μπορεί να υπάρχουν τόσα ορίσματα στον όρο START AT όπως υπάρχουν στον ORDER BY όρο, αλλά όχι περισσότερα. Το πρώτο όρισμα στην START AT ορίζει την τιμή έναρξης στη στήλη 1 των ORDER BY στηλών. Το δεύτερο όρισμα στην START AT ορίζει την τιμή έναρξης στη στήλη 2 των ORDER BY στηλών εντός των γραμμών που ικανοποιούν την πρώτη τιμή για τη στήλη 1.
παράδειγμα START AT
EVALUATE
'Sales Order'
ORDER BY 'Sales Order'[Sales Order] ASC
// Start at this order, orders before this order will not be displayed
START AT "SO43661"
Επιστρέφει όλες τις στήλες από τον πίνακα Sales Order, σε αύξουσα σειρά κατά Sales Order, ξεκινώντας από SO43661. Οι γραμμές πριν από αυτήν την παραγγελία πωλήσεων δεν περιλαμβάνονται στον πίνακα που προκύπτει.
DEFINE (Προαιρετικό)
Η προαιρετική DEFINE
λέξη-κλειδί παρουσιάζει έναν ή περισσότερους ορισμούς υπολογιζόμενης οντότητας που υπάρχουν μόνο κατά τη διάρκεια του ερωτήματος. Σε αντίθεση με EVALUATE
, μπορεί να υπάρχει μόνο ένα μπλοκ DEFINE
με έναν ή περισσότερους ορισμούς σε ένα ερώτημα DAX.
DEFINE
πρέπει να προηγείται της πρώτης πρότασης EVALUATE
και να είναι έγκυρες για όλες EVALUATE προτάσεις στο ερώτημα. Οι ορισμοί μπορεί να είναι μεταβλητές, μετρήσεις, πίνακες1και στήλες1. Οι ορισμοί μπορούν να αναφέρουν άλλους ορισμούς που εμφανίζονται πριν ή μετά τον τρέχοντα ορισμό. Απαιτείται τουλάχιστον ένας ορισμός εάν η λέξη-κλειδί DEFINE
περιλαμβάνεται σε ένα ερώτημα.
DEFINE MEASURE
είναι ένα συνηθισμένο σενάριο για τη δημιουργία νέων μετρήσεων ή την επεξεργασία υπαρχουσών μετρήσεων σε ένα μοντέλο σημασιολογίας. Όταν η μέτρηση υπάρχει ήδη στο μοντέλο, το ερώτημα DAX θα χρησιμοποιήσει τη μέτρηση DAX τύπο που έχει οριστεί στο ερώτημα. Αυτό είναι χρήσιμο για τη δοκιμή μετρήσεων με ένα DAX ερώτημα πριν από την ενημέρωση του μοντέλου.
DEFINE MEASURE
είναι επίσης χρήσιμο για τη δημιουργία πρόσθετης ανάλυσης με τύπους DAX για ένα συγκεκριμένο DAX ερώτημα όπου ενδέχεται να μην έχετε δικαίωμα προσθήκης μιας μέτρησης μοντέλου ή δεν είναι απαραίτητο να την έχετε στο μοντέλο.
σύνταξη DEFINE
[DEFINE
(
(MEASURE <table name>[<measure name>] = <scalar expression>) |
(VAR <var name> = <table or scalar expression>) |
(TABLE <table name> = <virtual table definition>) |
(COLUMN <table name>[<column name>] = <scalar expression>) |
) +
]
(EVALUATE <table expression>) +
παράμετροι DEFINE
Όρος | Ορισμός |
---|---|
Entity |
MEASURE, VAR, TABLE1ή COLUMN1. |
name |
Το όνομα μιας μέτρησης, διακύησης, πίνακα ή ορισμού στήλης. Δεν μπορεί να είναι παράσταση. Το όνομα δεν χρειάζεται να είναι μοναδικό. Το όνομα υπάρχει μόνο κατά τη διάρκεια του ερωτήματος. |
expression |
Οποιαδήποτε DAX παράσταση που επιστρέφει έναν πίνακα ή μια ανυσματική τιμή. Η παράσταση μπορεί να χρησιμοποιήσει οποιαδήποτε από τις καθορισμένες οντότητες. Εάν υπάρχει ανάγκη μετατροπής μιας ανυσματικής παράστασης σε μια παράσταση πίνακα, αναδιπλώστε την παράσταση μέσα σε μια κατασκευή πίνακα με άγκιστρα {} ή χρησιμοποιήστε τη συνάρτηση ROW() για να επιστρέψετε έναν πίνακα μοναδικής γραμμής. |
[1]Προσοχή: ορισμοί ΠΙΝΆΚΩΝ και ΣΤΗΛΏΝ με εμβέλεια ερωτήματος προορίζονται μόνο για εσωτερική χρήση. Παρόλο που μπορείτε να ορίσετε παραστάσεις TABLE και COLUMN για ένα ερώτημα χωρίς σφάλμα σύνταξης, μπορεί να παράγουν σφάλματα χρόνου εκτέλεσης και δεν συνιστώνται.
DEFINE παρατηρήσεις
Ένα DAX ερώτημα μπορεί να έχει πολλές προτάσεις EVALUATE, αλλά μπορεί να έχει μόνο μία πρόταση DEFINE. Οι ορισμοί στην πρόταση DEFINE μπορούν να εφαρμοστούν σε οποιεσδήποτε προτάσεις EVALUATE στο ερώτημα.
Απαιτείται τουλάχιστον ένας ορισμός σε μια πρόταση DEFINE.
Οι ορισμοί μετρήσεων για ένα μοντέλο παράκαμψης ερωτήματος με το ίδιο όνομα, αλλά χρησιμοποιούνται μόνο μέσα στο ερώτημα. Δεν θα επηρεάσουν τη μέτρηση μοντέλου.
VAR ονόματα έχουν μοναδικούς περιορισμούς. Για να μάθετε περισσότερα, ανατρέξτε στο θέμα VAR - Παράμετροι.
παράδειγμα DEFINE
DEFINE
VAR _firstyear = MIN('Date'[Fiscal Year])
VAR _lastyear = MAX('Date'[Fiscal Year])
TABLE 'Unbought products' = FILTER('Product', [Orders] + 0 = 0)
COLUMN 'Unbought products'[Year Range] = _firstyear & " - " & _lastyear
MEASURE 'Unbought products'[Unbought products] = COUNTROWS('Unbought products')
EVALUATE
'Unbought products'
EVALUATE
{[Unbought products]}
Επιστρέφει τον πίνακα που έχει οριστεί στο ερώτημα DAX για να εμφανίσει μη αναζήτητα προϊόντα με μια πρόσθετη αναφορά στήλης σε καθορισμένες μεταβλητές. Μια μέτρηση ορίζεται επίσης και αξιολογείται για να μετρήσει τις γραμμές μη ζητημένων προϊόντων.
DEFINE
MEASURE 'Pick a sales measure'[Orders] = DISTINCTCOUNT('Sales Order'[Sales Order])
MEASURE 'Pick a sales measure'[Customers] = CALCULATE(
COUNTROWS(Customer),
FILTER(
'Sales',
[Orders] > 0
)
)
MEASURE 'Pick a sales measure'[Orders per Customer] = DIVIDE(
[Orders],
[Customers],
0
)
EVALUATE
SUMMARIZECOLUMNS(
'Date'[Fiscal Year],
"Orders", [Orders],
"Customers", [Customers],
"Orders per Customer", [Orders per Customer]
)
Επιστρέφει έναν πίνακα που αξιολογεί τρεις καθορισμένες μετρήσεις για να εμφανίσει τα αποτελέσματα κατά οικονομικό έτος. Όλες οι μετρήσεις υπάρχουν επίσης στο μοντέλο και οι παραγγελίες ανά πελάτη τροποποιούνται στο DAX ερώτημα.
Παράμετροι σε DAX ερωτήματα
Μια σαφώς καθορισμένη πρόταση DAX ερωτήματος μπορεί να παραμετροποιηθεί και, στη συνέχεια, να χρησιμοποιηθεί ξανά και ξανά μόνο με αλλαγές στις τιμές παραμέτρων.
Η μέθοδος
Αναφέρετε παραμέτρους XMLA, τοποθετώντας στο πρόθεμα το όνομα της παραμέτρου έναν @
χαρακτήρα. Σε κάθε θέση στη σύνταξη όπου επιτρέπεται μια τιμή, η τιμή μπορεί να αντικατασταθεί με μια κλήση παραμέτρου. Όλες οι παράμετροι XMLA πληκτρολογούνται ως κείμενο.
Σημαντικός
Οι παράμετροι που ορίστηκαν στην ενότητα παραμέτρων και δεν χρησιμοποιήθηκαν στο <STATEMENT>
στοιχείο δημιουργούν μια απόκριση σφάλματος στο XMLA.
Οι παράμετροι που χρησιμοποιήθηκαν και δεν ορίστηκαν στο <Parameters>
στοιχείο δημιουργούν μια απόκριση σφάλματος στο XMLA.