Χρήση συναρτήσεων χρονικής ευφυΐας DAX

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

Το DAX περιλαμβάνει πολλές συναρτήσεις χρονικής ευφυΐας για την απλοποίηση της εργασίας τροποποίησης του περιβάλλοντος φίλτρου ημερομηνίας. Θα μπορούσατε να συντάξετε πολλούς από αυτούς τους τύπους ευφυΐας χρησιμοποιώντας μια CALCULATE συνάρτηση που τροποποιεί φίλτρα ημερομηνίας, αλλά αυτό θα δημιουργούσε περισσότερη δουλειά.

Σημείωση

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

Απαίτηση πίνακα ημερομηνιών

Για να εργαστείτε με συναρτήσεις DAX χρονικής ευφυΐας, χρειάζεται να ικανοποιήσετε την απαίτηση μοντέλου για παρουσίαση τουλάχιστον ενός πίνακα ημερομηνιών στο μοντέλο σας. Ένας πίνακας ημερομηνιών είναι ένας πίνακας που ικανοποιεί τις ακόλουθες απαιτήσεις:

  • Πρέπει να έχει μια στήλη τύπου δεδομένων (ή ημερομηνία/ώρα), γνωστή ως στήλη ημερομηνίας.
  • Η στήλη ημερομηνιών πρέπει να περιέχει μοναδικές τιμές.
  • Η στήλη ημερομηνιών δεν πρέπει να περιέχει ΚΕΝΑ.
  • Στη στήλη ημερομηνιών δεν πρέπει να απουσιάζουν ημερομηνίες.
  • Η στήλη ημερομηνιών πρέπει να εκτείνεται σε ολόκληρα έτη. Ένα έτος δεν είναι απαραίτητα ένα ημερολογιακό έτος (Ιανουάριος-Δεκέμβριος).
  • Ο πίνακας ημερομηνιών πρέπει να υποδεικνύεται ως πίνακας ημερομηνιών.

Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο Δημιουργία πινάκων ημερομηνιών στο Power BI Desktop.

Συνόψεις σε βάθος χρόνου

Μία ομάδα συναρτήσεων χρονικής ευφυΐας DAX αφορά συνόψεις σε βάθος χρόνου:

  • DATESYTD - Επιστρέφει έναν πίνακα μίας στήλης που περιέχει ημερομηνίες για το έτος έως σήμερα (YTD) στο τρέχον περιβάλλον φίλτρου. Αυτή η ομάδα περιλαμβάνει επίσης τις DATESMTD συναρτήσεις DAX και DATESQTD για μήνα έως σήμερα (MTD) και τρίμηνο έως σήμερα (QTD). Μπορείτε να διαβιβάσετε αυτές τις συναρτήσεις ως φίλτρα στη CALCULATE συνάρτηση DAX.
  • TOTALYTD - Αξιολογεί μια παράσταση για YTD στο τρέχον περιβάλλον φίλτρου. Περιλαμβάνονται επίσης οι ισοδύναμες συναρτήσεις TOTALQTDTOTALMTD 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 όρος χρησιμοποιείται στην τιμή μεταβλητής δύο φορές.