Χρήση μεταβλητών για τη βελτίωση επιδόσεων και την επίλυση προβλημάτων

Ολοκληρώθηκε

Μπορείτε να χρησιμοποιήσετε μεταβλητές στους τύπους DAX σας ώστε να σας βοηθήσουν να συντάσσετε λιγότερο σύνθετους και αποτελεσματικότερους υπολογισμούς. Οι μεταβλητές δεν χρησιμοποιούνται αρκετά από προγραμματιστές που μόλις ξεκινούν με το Power BI Desktop, όμως είναι αποτελεσματικές και θα πρέπει να τις χρησιμοποιείτε από προεπιλογή όταν δημιουργείτε μετρήσεις.

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

Η χρήση μεταβλητών στο μοντέλο σημασιολογίας σας παρέχει τα εξής πλεονεκτήματα:

  • Βελτιωμένες επιδόσεις - Οι μεταβλητές μπορούν να καταστήσουν τις μετρήσεις πιο αποτελεσματικές καθώς καταργούν την ανάγκη να αξιολογεί το Power BI την ίδια παράσταση πολλές φορές. Μπορείτε να επιτύχετε τα ίδια αποτελέσματα σε ένα ερώτημα σε περίπου μισό από τον αρχικό χρόνο επεξεργασίας.

  • Βελτιωμένη αναγνωσιμότητα - Οι μεταβλητές έχουν σύντομα, αυτονόητα ονόματα και χρησιμοποιούνται αντί για μια ασαφή παράσταση πολλών λέξεων. Μπορεί να βρείτε την ανάγνωση και κατανόηση των τύπων ευκολότερη όταν χρησιμοποιούνται μεταβλητές.

  • Απλοποιημένος εντοπισμός σφαλμάτων - Μπορείτε να χρησιμοποιήσετε μεταβλητές για τον εντοπισμό σφαλμάτων και τη δοκιμή παραστάσεων, το οποίο μπορεί να είναι χρήσιμο κατά την επίλυση προβλημάτων.

  • Μειωμένη πολυπλοκότητα - Οι μεταβλητές δεν απαιτούν τη χρήση των συναρτήσεων DAX EARLIER ή EARLIEST, που μπορεί να είναι δυσνόητες. Αυτές οι συναρτήσεις ήταν υποχρεωτικές πριν την παρουσίαση των μεταβλητών και είχαν συνταχθεί με σύνθετες παραστάσεις που παρουσίασαν νέα περιβάλλοντα φίλτρων. Τώρα που μπορείτε να χρησιμοποιήσετε μεταβλητές αντί για αυτές τις συναρτήσεις, μπορείτε να συντάξετε λιγότερο σύνθετους τύπους.

Χρήση μεταβλητών για τη βελτίωση των επιδόσεων

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

Η δεύτερη γραμμή του πίνακα εμφανίζει τον βελτιωμένο ορισμό μέτρησης. Αυτός ο ορισμός χρησιμοποιεί τη λέξη-κλειδί VAR για να παρουσιάσει μια μεταβλητή με την ονομασία SalesPriorYear και χρησιμοποιεί μια παράσταση για να αναθέσει το αποτέλεσμα "ίδια περίοδος προηγούμενου έτους" σε αυτήν τη νέα μεταβλητή. Έπειτα, χρησιμοποιεί τη μεταβλητή δύο φορές στην παράσταση DIVIDE.

Χωρίς μεταβλητή

Sales YoY Growth =
DIVIDE (
    ( [Sales] - CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) ) ),
    CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
)

Με μεταβλητή

Sales YoY Growth =
VAR SalesPriorYear =
    CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
VAR SalesVariance =
    DIVIDE ( ( [Sales] - SalesPriorYear ), SalesPriorYear )
RETURN
    SalesVariance

Στον πρώτο ορισμό μέτρησης στον πίνακα, ο τύπος είναι αναποτελεσματικός καθώς απαιτεί από το Power BI να αξιολογήσει την ίδια παράσταση δύο φορές. Ο δεύτερος ορισμός είναι πιο αποτελεσματικός καθώς, λόγω της μεταβλητής, το Power BI χρειάζεται μόνο να αξιολογήσει την παράσταση PARALLELPERIOD μία φορά.

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

Χρήση μεταβλητών για τη βελτίωση της αναγνωσιμότητας

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

Όταν χρησιμοποιείτε μεταβλητές, συνιστάται να χρησιμοποιείτε περιγραφικά ονόματα για τις μεταβλητές. Στο προηγούμενο παράδειγμα, η μεταβλητή ονομάζεται SalesPriorYear, που δηλώνει με σαφήνεια τι υπολογίζει η μεταβλητή. Εξετάστε το αποτέλεσμα της χρήσης μιας μεταβλητής που ονομαζόταν X, temp ή variable1. Ο σκοπός της μεταβλητής δεν ήταν καθόλου σαφής.

Η χρήση ξεκάθαρα, συνοπτικά, ουσιαστικά ονόματα θα βοηθήσει να κατανοήσετε ευκολότερα όσα επιχειρείτε να υπολογίσετε και θα είναι αρκετά πιο απλό για τους άλλους προγραμματιστές να διατηρήσουν την αναφορά στο μέλλον.

Χρήση μεταβλητών για την επίλυση προβλημάτων πολλών βημάτων

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

Στο παρακάτω παράδειγμα, δοκιμάζετε μια παράσταση που έχει ανατεθεί σε μια μεταβλητή. Για να εντοπίσετε σφάλματα, ξαναγράφετε προσωρινά την παράσταση RETURN για να γράψετε στη μεταβλητή. Ο ορισμός μέτρησης επιστρέφει μόνο τη μεταβλητή SalesPriorYear , επειδή αυτή είναι η τιμή που ακολουθεί την παράσταση RETURN.

Sales YoY Growth % =
VAR SalesPriorYear =  CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesPriorYear% = DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)  
RETURN  SalesPriorYear%

Η παράσταση RETURN θα εμφανίσει μόνο την τιμή SalesPriorYear%. Αυτή η τεχνική σάς επιτρέπει να επαναφέρετε την παράσταση όταν ολοκληρώσετε τον εντοπισμό σφαλμάτων. Κάνει επίσης απλούστερη την κατανόηση των υπολογισμών χάρη στη μειωμένη πολυπλοκότητα του κωδικού DAX.