Χρήση συναρτήσεων χρονικής ευφυΐας DAX
Το DAX περιλαμβάνει πολλές συναρτήσεις χρονικής ευφυΐας για την απλοποίηση της εργασίας τροποποίησης του περιβάλλοντος φίλτρου ημερομηνίας. Θα μπορούσατε να συντάξετε πολλούς από αυτούς τους τύπους ευφυΐας χρησιμοποιώντας μια CALCULATE
συνάρτηση που τροποποιεί φίλτρα ημερομηνίας, αλλά αυτό θα δημιουργούσε περισσότερη δουλειά.
Σημείωση
Πολλές συναρτήσεις χρονικής ευφυΐας DAX αφορούν τυπικές χρονικές περιόδους, συγκεκριμένα έτη, τρίμηνα και μήνες. Εάν έχετε ασυνήθιστες χρονικές περιόδους (για παράδειγμα, οικονομικούς μήνες που ξεκινούν στα μέσα του ημερολογιακού μήνα) ή χρειάζεται να εργαστείτε με εβδομάδες ή χρονικές περιόδους (ώρες, λεπτά και ούτω καθεξής), οι συναρτήσεις χρονικής ευφυΐας DAX δεν θα είναι χρήσιμες. Αντί για αυτό, θα χρειαστεί να χρησιμοποιήσετε τη CALCULATE
συνάρτηση και να μεταβιβάσετε φίλτρα ημερομηνίας ή ώρας που έχουν συνταθεί με το χέρι.
Απαίτηση πίνακα ημερομηνιών
Για να εργαστείτε με συναρτήσεις DAX χρονικής ευφυΐας, χρειάζεται να ικανοποιήσετε την απαίτηση μοντέλου για παρουσίαση τουλάχιστον ενός πίνακα ημερομηνιών στο μοντέλο σας. Ένας πίνακας ημερομηνιών είναι ένας πίνακας που ικανοποιεί τις ακόλουθες απαιτήσεις:
- Πρέπει να έχει μια στήλη τύπου δεδομένων (ή ημερομηνία/ώρα), γνωστή ως στήλη ημερομηνίας.
- Η στήλη ημερομηνιών πρέπει να περιέχει μοναδικές τιμές.
- Η στήλη ημερομηνιών δεν πρέπει να περιέχει ΚΕΝΑ.
- Στη στήλη ημερομηνιών δεν πρέπει να απουσιάζουν ημερομηνίες.
- Η στήλη ημερομηνιών πρέπει να εκτείνεται σε ολόκληρα έτη. Ένα έτος δεν είναι απαραίτητα ένα ημερολογιακό έτος (Ιανουάριος-Δεκέμβριος).
- Ο πίνακας ημερομηνιών πρέπει να υποδεικνύεται ως πίνακας ημερομηνιών.
Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο Δημιουργία πινάκων ημερομηνιών στο Power BI Desktop.
Συνόψεις σε βάθος χρόνου
Μία ομάδα συναρτήσεων χρονικής ευφυΐας DAX αφορά συνόψεις σε βάθος χρόνου:
-
DATESYTD
- Επιστρέφει έναν πίνακα μίας στήλης που περιέχει ημερομηνίες για το έτος έως σήμερα (YTD) στο τρέχον περιβάλλον φίλτρου. Αυτή η ομάδα περιλαμβάνει επίσης τιςDATESMTD
συναρτήσεις DAX καιDATESQTD
για μήνα έως σήμερα (MTD) και τρίμηνο έως σήμερα (QTD). Μπορείτε να διαβιβάσετε αυτές τις συναρτήσεις ως φίλτρα στηCALCULATE
συνάρτηση DAX. -
TOTALYTD
- Αξιολογεί μια παράσταση για YTD στο τρέχον περιβάλλον φίλτρου. Περιλαμβάνονται επίσης οι ισοδύναμες συναρτήσειςTOTALQTD
TOTALMTD
DAX QTD και MTD DAX. -
DATESBETWEEN
- Επιστρέφει έναν πίνακα που περιέχει μια στήλη ημερομηνιών που ξεκινά με μια δεδομένη ημερομηνία έναρξης και συνεχίζει μέχρι μια δεδομένη ημερομηνία λήξης. -
DATESINPERIOD
- Επιστρέφει έναν πίνακα που περιέχει μια στήλη ημερομηνιών που ξεκινά με μια δεδομένη ημερομηνία έναρξης και συνεχίζει για τον καθορισμένο αριθμό διαστημάτων.
Σημείωση
Παρόλο που η TOTALYTD
συνάρτηση είναι απλή στη χρήση, περιορίσατε τη μεταβίβαση μιας παράστασης φίλτρου. Εάν θέλετε να εφαρμόσετε πολλές παραστάσεις φίλτρου, χρησιμοποιήστε τη CALCULATE
συνάρτηση και, στη συνέχεια, μεταβιβάστε τη DATESYTD
συνάρτηση ως μία από τις παραστάσεις φίλτρου.
Στο παρακάτω παράδειγμα, θα δημιουργήσετε τον πρώτο σας υπολογισμό χρονικής ευφυΐας που θα χρησιμοποιήσει τη συνάρτηση TOTALYTD. Η σύνταξη έχει ως εξής:
TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])
Η συνάρτηση απαιτεί μια παράσταση και, όπως συνηθίζεται σε όλες τις συναρτήσεις χρονικής ευφυΐας, μια αναφορά στη στήλη ημερομηνίας ενός επισημασμένου πίνακα ημερομηνιών. Προαιρετικά, μπορεί να μεταβιβαστεί μια μοναδική παράσταση φίλτρου ή η ημερομηνία λήξης έτους (απαιτείται μόνο όταν το έτος δεν ολοκληρώνεται στις 31 Δεκεμβρίου).
Κάντε λήψη και ανοίξτε το αρχείο Adventure Works DW 2020 M07.pbix. Στη συνέχεια, προσθέστε τον παρακάτω ορισμό μέτρησης στον πίνακα Πωλήσεις που υπολογίζει έσοδα έτους έως σήμερα. Μορφοποιήστε τη μέτρηση ως νόμισμα με δύο δεκαδικά ψηφία.
Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")
Η τιμή "6-30"
ημερομηνίας λήξης έτους αντιπροσωπεύει τις 30 Ιουνίου.
Στη Σελίδα 1 της αναφοράς, προσθέστε τη μέτρηση Έσοδα YTD στην απεικόνιση πίνακα. Παρατηρήστε ότι παράγει μια σύνοψη των ποσών εσόδων από την αρχή του έτους έως τον φιλτραρισμένο μήνα.
Συγκρίσεις σε βάθος χρόνου
Μια άλλη ομάδα των συναρτήσεων χρονικής ευφυΐας DAX αφορά περιόδους χρονικής μετατόπισης:
-
DATEADD
- Επιστρέφει έναν πίνακα που περιέχει μια στήλη ημερομηνιών, μετατοπισμένη είτε προς τα εμπρός, είτε προς τα πίσω στον χρόνο, κατά τον καθορισμένο αριθμό διαστημάτων από τις ημερομηνίες στο τρέχον περιβάλλον φίλτρου. -
PARALLELPERIOD
- Επιστρέφει έναν πίνακα που περιέχει μια στήλη ημερομηνιών που αντιπροσωπεύει μια περίοδο παράλληλη με τις ημερομηνίες στην καθορισμένη στήλη ημερομηνιών, στο τρέχον περιβάλλον φίλτρου, με τις ημερομηνίες μετατοπιζόμενες κατά έναν αριθμό διαστημάτων είτε προς τα εμπρός είτε προς τα πίσω στο χρόνο. -
SAMEPERIODLASTYEAR
- Επιστρέφει έναν πίνακα που περιέχει μια στήλη ημερομηνιών που μετατοπίζονται ένα έτος πίσω στο χρόνο από τις ημερομηνίες στην καθορισμένη στήλη ημερομηνιών, στο τρέχον περιβάλλον φίλτρου. - Πολλές βοηθητικές συναρτήσεις DAX για την πλοήγηση πίσω ή εμπρός για συγκεκριμένες χρονικές περιόδους και όλες επιστρέφουν έναν πίνακα ημερομηνιών. Αυτές οι βοηθητικές συναρτήσεις περιλαμβάνουν
NEXTDAY
τις ,NEXTMONTH
,NEXTQUARTER
,NEXTYEAR
καιPREVIOUSDAY
,PREVIOUSMONTH
,PREVIOUSQUARTER
καιPREVIOUSYEAR
.
Τώρα, θα προσθέσετε μια μέτρηση στον πίνακα Πωλήσεις που υπολογίζει τα έσοδα για το προηγούμενο έτος χρησιμοποιώντας τη SAMEPERIODLASTYEAR
συνάρτηση. Μορφοποιήστε τη μέτρηση ως νόμισμα με δύο δεκαδικά ψηφία.
Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
RevenuePriorYear
Προσθέστε τη μέτρηση Έσοδα ΠΕ στην απεικόνιση πίνακα. Παρατηρήστε ότι παράγει αποτελέσματα που είναι όμοια με τα ποσά εσόδων του προηγούμενου έτους.
Στη συνέχεια, θα τροποποιήσετε τη μέτρηση μετονομάζοντας τη σε Έσοδα YoY % και, στη συνέχεια, ενημερώνοντας τον RETURN
όρο για να υπολογίσετε την αναλογία αλλαγής. Βεβαιωθείτε ότι έχετε αλλάξει τη μορφή σε ένα ποσοστό με δύο δεκαδικά ψηφία.
Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
DIVIDE(
[Revenue] - RevenuePriorYear,
RevenuePriorYear
)
Παρατηρήστε ότι η μέτρηση Έσοδα YoY % παράγει μια αναλογία του συντελεστή μεταβολής στα μηνιαία έσοδα του προηγούμενου έτους. Για παράδειγμα, ο Ιούλιος 2018 αντιπροσωπεύει μια αύξηση 106,53 τοις εκατό επί των μηνιαίων εσόδων του προηγούμενου έτους και ο Νοέμβριος 2018 αντιπροσωπεύει μια μείωση 24,22 τοις εκατό επί των μηνιαίων εσόδων του προηγούμενου έτους.
Σημείωση
Η μέτρηση Έσοδα YoY % επιδεικνύει μια καλή χρήση των μεταβλητών DAX. Η μέτρηση βελτιώνει την αναγνωσιμότητα του τύπου και σας επιτρέπει να εκτελέσετε δοκιμή μονάδων σε τμήμα της λογικής μέτρησης (επιστρέφοντας τη μεταβλητή τιμή RevenuePriorYear). Επιπλέον, η μέτρηση είναι ένας βέλτιστος τύπος καθώς δεν χρειάζεται να ανακτήσει τη τιμή εσόδων του προηγούμενου έτους δύο φορές. Έχοντας αποθηκεύσει τη μεταβλητή μία φορά σε μια μεταβλητή, ο RETURN
όρος χρησιμοποιείται στην τιμή μεταβλητής δύο φορές.