Χρήση μεταβλητών για τη βελτίωση των τύπων DAX σας
Ως δημιουργός μοντέλων δεδομένων, η σύνταξη and τον εντοπισμό σφαλμάτων σε ορισμένους DAX υπολογισμούς μπορεί να είναι δύσκολη. Είναι σύνηθες οι απαιτήσεις σύνθετων υπολογισμών να αφορούν συχνά την εγγραφή σύνθετων or παραστάσεων. Οι σύνθετες παραστάσεις μπορεί να περιλαμβάνουν τη χρήση πολλών ένθετών συναρτήσεων, and πιθανώς την επαναχρησιμοποίηση της λογικής παράστασης.
Η χρήση μεταβλητών στους τύπους σας DAX μπορεί να σας βοηθήσει να γράφετε πιο σύνθετους and αποτελεσματικούς υπολογισμούς. Οι μεταβλητές μπορούν να βελτιώσουν την απόδοση, την αξιοπιστία, την αναγνωσιμότητα and μειώσουν την πολυπλοκότητα.
Σε αυτό το άρθρο, θα δείξουμε τα first τρία οφέλη χρησιμοποιώντας ένα παράδειγμα measure για την ανάπτυξη πωλήσεων year-over-year (YoY). (Ο τύπος για την ετήσια αύξηση πωλήσεων είναι οι πωλήσεις περιόδου, μείον οι πωλήσεις για την ίδια περίοδο lastyear, διαιρούμενος με τις πωλήσεις για την ίδια περίοδο lastyear.)
Ας ξεκινήσουμε με τον παρακάτω ορισμό measure.
Sales YoY Growth % =
DIVIDE(
([Sales] - CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))),
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
)
Η measure παράγει το σωστό αποτέλεσμα, όμως ας now δούμε πώς μπορεί να βελτιωθεί.
Βελτίωση επιδόσεων
Παρατηρήστε ότι ο τύπος επαναλαμβάνει την παράσταση που υπολογίζει την "ίδια περίοδο lastyear". Αυτός ο τύπος είναι αναποτελεσματικός, καθώς απαιτεί Power BI να evaluate την ίδια παράσταση δύο φορές. Ο measure ορισμός μπορεί να καταστεί πιο αποτελεσματικός χρησιμοποιώντας μια μεταβλητή, VAR.
Ο παρακάτω measure ορισμός αντιπροσωπεύει μια βελτίωση. Χρησιμοποιεί μια παράσταση για να αντιστοιχίσει το αποτέλεσμα "ίδια περίοδος lastyear" σε μια μεταβλητή με την ονομασία SalesPriorYear. Η μεταβλητή τότε χρησιμοποιείται δύο φορές στην παράσταση RETURN.
Sales YoY Growth % =
VAR SalesPriorYear =
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
RETURN
DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
Η measure συνεχίζει να παράγει το σωστό αποτέλεσμα and το κάνει σε περίπου μισό ερώτημα time.
Βελτίωση αναγνωσιμότητας
Στον previousmeasure ορισμό, παρατηρήστε πώς η επιλογή ονόματος μεταβλητής καθιστά την παράσταση RETURN απλούστερη στην κατανόηση. Η παράσταση είναι σύντομη and αυτοπεριγραφική.
Απλοποίηση εντοπισμού σφαλμάτων
Οι μεταβλητές μπορούν επίσης να σας βοηθήσουν να εντοπίσετε σφάλματα σε έναν τύπο. Για να δοκιμάσετε μια παράσταση που έχει εκχωρηθεί σε μια μεταβλητή, γράψτε πάλι προσωρινά την παράσταση RETURN για να εξαγάγετε τη μεταβλητή.
Ο παρακάτω
Sales YoY Growth % =
VAR SalesPriorYear =
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
RETURN
--DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
SalesPriorYear
Μείωση πολυπλοκότητας
Σε earlier εκδόσεις του DAX, οι μεταβλητές not υποστηρίζονταν ακόμα. Σύνθετες παραστάσεις που παρουσίασαν νέα περιβάλλοντα filter απαιτούνταν για τη χρήση των συναρτήσεων EARLIERorEARLIESTDAX για αναφορά σε εξωτερικούς filter περιβάλλοντα. Δυστυχώς, οι δημιουργούς μοντέλων δεδομένων βρήκαν αυτές τις συναρτήσεις δύσκολο να κατανοηθούν and χρήση.
Οι μεταβλητές αξιολογούνται πάντα εκτός της filters ισχύει η παράσταση RETURN. Για αυτόν τον λόγο, όταν χρησιμοποιείτε μια μεταβλητή μέσα σε ένα τροποποιημένο περιβάλλον filter, επιτυγχάνει το ίδιο αποτέλεσμα με τη συνάρτηση EARLIEST. Η χρήση των EARLIERorEARLIEST συναρτήσεων μπορεί επομένως να αποφευχθεί. Αυτό σημαίνει ότι μπορείτε να now συντάξετε τύπους που είναι λιγότερο σύνθετοι, and που είναι πιο κατανοητοί.
Εξετάστε τον παρακάτω ορισμό υπολογιζόμενης στήλης που προστέθηκε στον πίνακα υποκατηγορίας
Subcategory Sales Rank =
COUNTROWS(
FILTER(
Subcategory,
EARLIER(Subcategory[Subcategory Sales]) < Subcategory[Subcategory Sales]
)
) + 1
Η συνάρτηση EARLIER χρησιμοποιείται για να αναφερθεί στη στήλη Πωλήσεις υποκατηγορίας valueστο τρέχον περιβάλλον γραμμής.
Ο ορισμός υπολογιζόμενης στήλης μπορεί να βελτιωθεί χρησιμοποιώντας μια μεταβλητή αντί για τη συνάρτηση EARLIER. Η μεταβλητή CurrentSubcategorySales
Subcategory Sales Rank =
VAR CurrentSubcategorySales = Subcategory[Subcategory Sales]
RETURN
COUNTROWS(
FILTER(
Subcategory,
CurrentSubcategorySales < Subcategory[Subcategory Sales]
)
) + 1
Related περιεχομένου
- άρθρο VARDAX
- pathεκμάθησης: Χρήση DAX στοPower BI Desktop
- Ερωτήσεις? Δοκιμάστε να ρωτήσετε το κοινότητας του Power BI