Κοινοποίηση μέσω


Υλοποίηση υπολογισμών βάσει χρόνου στο Power BI

Το Power BI προσφέρει πολλά εργαλεία για την εκτέλεση υπολογισμών βάσει χρόνου, οι οποίοι βασίζονται είτε σε αυτόματους πίνακες ημερομηνιών είτε σε πίνακες ημερομηνιών που προσθέτετε.

Συνιστούμε τη χρήση χρονικής ευφυΐας βάσει ημερολογίου (προεπισκόπηση), επειδή παρέχει τις καλύτερες επιδόσεις και το υψηλότερο εύρος ευελιξίας για την κάλυψη οποιουδήποτε ημερολογίου.

Αυτός ο πίνακας συγκρίνει τα τρία εργαλεία που παρέχονται:

Εργαλείο Απαιτείται προσπάθεια εγκατάστασης Ευκολία διαχείρισης Ευκαμψία Σημειώσεις
Αυτόματη ημερομηνία/ώρα σχεδόν μηδέν σκληρός χαμηλός Αυξάνει το μέγεθος του μοντέλου λόγω της δημιουργίας πολλών κρυφών πινάκων ημερομηνιών
Κλασική ευφυΐα χρόνου Μέτριος εύκολος χαμηλός Απαιτεί τη δημιουργία πίνακα ημερομηνιών, υποθέτει Γρηγοριανό ή μετατοπισμένο Γρηγοριανό ημερολόγιο, υποφέρει από προβλήματα απόδοσης σε ορισμένα συγκεκριμένα σενάρια
Ευφυΐα χρόνου βάσει ημερολογίου ψηλός Μέτριος ψηλός Συνιστάται η δημιουργία πίνακα ημερομηνιών, υψηλότερη ευελιξία, βέλτιστες επιδόσεις, αλλά αυξημένο κόστος εγκατάστασης

Σημείωμα

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

Αυτόματη ημερομηνία/ώρα

Η δυνατότητα αυτόματης ημερομηνίας/ώρας δημιουργεί αυτόματα κρυφούς πίνακες ημερομηνιών για κάθε πεδίο ημερομηνίας στο μοντέλο δεδομένων σας. Για περισσότερες πληροφορίες σχετικά με αυτήν την αυτόματη συμπεριφορά, ανατρέξτε στο θέμα Εφαρμογή αυτόματης ημερομηνίας/ώρας στο Power BI Desktop.

Σημείωμα

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

Προσθήκη πίνακα ημερομηνιών

Για τα περισσότερα μοντέλα, συνιστάται να προσθέσετε έναν πίνακα ημερομηνιών (ή περισσότερους σε ορισμένα σενάρια). Πολλοί αναλυτές δεδομένων προτιμούν να δημιουργούν τους δικούς τους πίνακες ημερομηνιών, κάτι που είναι εντάξει.

Υπάρχουν πολλοί τρόποι δημιουργίας ενός τέτοιου πίνακα, όπως:

Ποια επιλογή είναι η καλύτερη για εσάς εξαρτάται από διάφορους παράγοντες και ξεφεύγει από το πεδίο εφαρμογής αυτού του σεμιναρίου.

Εργασία με υπολογισμούς βάσει χρόνου

Υποθέτοντας ότι δεν χρησιμοποιείτε αυτόματη ημερομηνία/ώρα, υπάρχουν δύο εναλλακτικοί τρόποι εργασίας με τις συναρτήσεις χρονικής ευφυΐας στο Power BI για την εκτέλεση υπολογισμών βάσει χρόνου:

  • Κλασική ευφυΐα χρόνου. Η πιο εύκολη επιλογή και λειτουργεί εξαιρετικά για Γρηγοριανά ή μετατοπισμένα Γρηγοριανά ημερολόγια, αλλά έχει περιορισμένη ευελιξία για ημερολόγια που έχουν διαφορετική δομή ή για υπολογισμούς βάσει εβδομάδας.
  • Χρονική ευφυΐα βάσει ημερολογίου (έκδοση προεπισκόπησης). Νεότερη επιλογή, αλλά απαιτεί λίγο περισσότερη δουλειά για τη ρύθμιση. Ωστόσο, σας δίνει επίσης καλύτερη απόδοση, μεγαλύτερη ευελιξία στην εργασία με μη Γρηγοριανά ημερολόγια και τη δυνατότητα να εκτελείτε υπολογισμούς βάσει εβδομάδας.

Σημείωμα

Πρέπει να ορίσετε τον πίνακά σας ως πίνακα ημερομηνιών για συγκεκριμένα σενάρια.

Κλασική ευφυΐα χρόνου

Αυτή η επιλογή απαιτεί να έχετε έναν πίνακα ημερομηνιών στο μοντέλο σας και να τον ορίσετε ανάλογα. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε τις συναρτήσεις χρονικής ευφυΐας και να ανατρέξετε στον πίνακα ημερομηνιών σας. Για παράδειγμα, εάν έχετε έναν πίνακα ημερομηνιών που ονομάζεται Ημερομηνία στο μοντέλο σας, τον οποίο ορίζετε ως πίνακα ημερομηνιών, ο οποίος περιέχει μια στήλη Ημερομηνία, τότε μπορείτε να χρησιμοποιήσετε:

SAMEPERIODLASTYEAR ( 'Date'[Date] )

Αν και αυτή είναι μια γρήγορη και εύκολη προσέγγιση, υπάρχουν πολλά μειονεκτήματα σε σύγκριση με την προσέγγιση που βασίζεται στο ημερολόγιο:

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

Σημείωμα

Σας συνιστούμε να χρησιμοποιήσετε τη βελτιωμένη προσέγγιση που βασίζεται στο ημερολόγιο .

Χρονική ευφυΐα βάσει ημερολογίου (έκδοση προεπισκόπησης)

Τα ημερολόγια είναι ορισμοί μετα-δεδομένων που προστίθενται σε έναν πίνακα για να υποδείξουν ποιες στήλες από αυτόν τον πίνακα αντιπροσωπεύουν ποια χαρακτηριστικά του χρόνου. Μπορείτε να ορίσετε ένα ή περισσότερα ημερολόγια σε οποιονδήποτε πίνακα στο μοντέλο σας. Αφού ορίσετε το ημερολόγιο στο μοντέλο σας, μπορείτε να ανατρέξετε σε αυτό στις συναρτήσεις χρονικής ευφυΐας. Για παράδειγμα, δείτε πώς μπορείτε να υπολογίσετε ένα συνολικό έτος μέχρι σήμερα των πωλήσεων χρησιμοποιώντας ένα καθορισμένο οικονομικό ημερολόγιο:

TOTALYTD ( [Sales], 'Fiscal Calendar' )

Πλεονεκτήματα της χρονικής ευφυΐας βάσει ημερολογίου

Τα κύρια οφέλη της ευφυΐας χρόνου βάσει ημερολογίου είναι:

Λειτουργεί με οποιοδήποτε ημερολόγιο

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

  • Γρηγοριανό
  • Μετατοπισμένο Γρηγοριανό
  • Λιανικό εμπόριο (445, 454, 544 μοτίβα)
  • 13 μήνες
  • Σεληνιακός

Οι δυνατότητες είναι απεριόριστες, καθώς δεν υπάρχει ενσωματωμένη υπόθεση από το Power BI σχετικά με τον τρόπο δομής του ημερολογίου σας. Η ευφυΐα χρόνου βάσει ημερολογίου δεν κάνει υποθέσεις σχετικά με τις υποκείμενες ημερομηνίες. Όλοι οι υπολογισμοί χρησιμοποιούν τα υποκείμενα δεδομένα ακριβώς as-is.

Αραιές ημερομηνίες

Η κλασική ευφυΐα ώρας απαιτεί η στήλη ημερομηνιών που παρέχεται να είναι πλήρης - εάν λείπουν ημερομηνίες μεταξύ της πρώτης και της τελευταίας ημερομηνίας, εμφανίζεται σφάλμα. Οι συναρτήσεις χρονικής ευφυΐας που βασίζονται σε ημερολόγιο δεν έχουν τέτοια απαίτηση. Αντίθετα, λειτουργούν στις ημερομηνίες as-is. Παρόλο που συνιστούμε να έχετε έναν πλήρη και αποκλειστικό πίνακα ημερολογίου, δεν απαιτείται πλέον να τον έχετε. Για παράδειγμα, εάν όλα τα καταστήματα λιανικής σας είναι κλειστά το Σαββατοκύριακο, μπορείτε να παραλείψετε τις ημέρες του Σαββατοκύριακου, καθώς δεν έχουν εκπτώσεις. Υποθέτοντας ότι το Σαββατοκύριακο σας είναι Σάββατο και Κυριακή, μπορείτε τώρα να το χρησιμοποιήσετε PREVIOUSDAY με ένα ημερολόγιο που βασίζεται σε έναν πίνακα που δεν έχει καταχωρήσεις για το Σαββατοκύριακο για να μεταβείτε από τη Δευτέρα κατευθείαν στην Παρασκευή.

Υπολογισμοί βάσει εβδομάδας

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

TOTALWTD ( Expr, CalendarName )

Βελτιώσεις απόδοσης

Ορισμένα σενάρια ενδέχεται να παρουσιάζουν βελτιωμένη απόδοση κατά τη σύγκριση μιας συνάρτησης χρονικής ευφυΐας που βασίζεται σε ημερολόγιο με την κλασική αντίστοιχη. Για παράδειγμα, μια απεικόνιση που ομαδοποιείται κατά εβδομάδα και εκτελεί έναν υπολογισμό από το έτος έως την ημερομηνία χρησιμοποιώντας TOTALYTD ( ..., CalendarName ) θα πρέπει γενικά να εκτελείται πιο γρήγορα από ό,τι αν χρησιμοποιούνταν το κλασικό αντίστοιχο, TOTALYTD ( ..., TableName[DateColumnName] ), . Για πληροφορίες σχετικά με το γιατί μπορεί να συμβεί αυτό, ανατρέξτε στην ενότητα Εκκαθάριση περιβάλλοντος .

Ενεργοποίηση της βελτιωμένης προεπισκόπησης DAX Time Intelligence

Για να ξεκινήσετε, πρέπει πρώτα να ενεργοποιήσετε τη δυνατότητα προεπισκόπησης βελτιωμένης χρονικής ευφυΐας DAX .

  1. Στο Power BI Desktop, μεταβείτε στις Επιλογές αρχείων > και ρυθμίσεις > Επιλογές > Δυνατότητες προεπισκόπησης.
  2. Επιλέξτε την προεπισκόπηση βελτιωμένης χρονικής ευφυΐας DAX .
  3. Επιλέξτε ΟΚ
  4. Επανεκκίνηση του Power BI Desktop

Διαχείριση ημερολογίων

Για να διαχειριστείτε ένα ημερολόγιο, κάντε δεξί κλικ στον πίνακα που περιέχει το ημερολόγιο ή στον οποίο θέλετε να ορίσετε το ημερολόγιο και επιλέξτε Επιλογές ημερολογίου ή επιλέξτε Επιλογές ημερολογίου στην κορδέλα Εργαλεία πίνακα μετά την επιλογή του πίνακα:

Στιγμιότυπο οθόνης που εμφανίζει τα σημεία εισόδου για να ανοίξετε τις Επιλογές ημερολογίου σε έναν πίνακα.

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

Τα ημερολόγια εμφανίζονται επίσης στην εξερεύνηση μοντέλων κάτω από τον πίνακα στον οποίο ορίζονται:

Στιγμιότυπο οθόνης που εμφανίζει την εξερεύνηση μοντέλων για ένα μοντέλο σημασιολογίας. Ο κόμβος του πίνακα ημερομηνιών αναπτύσσεται και τα ημερολόγια επισημαίνονται.

Η οθόνη επιλογών ημερολογίου

Η οθόνη επιλογών ημερολογίου εμφανίζει τα ημερολόγια που ορίζονται στον επιλεγμένο πίνακα. Εδώ μπορείτε:

  • δημιουργήστε ένα νέο ημερολόγιο επιλέγοντας Νέο ημερολόγιο
  • επεξεργαστείτε ένα υπάρχον ημερολόγιο επιλέγοντας Επεξεργασία
  • να διαγράψετε ένα υπάρχον ημερολόγιο επιλέγοντας Διαγραφή
  • ορίστε τον πίνακα ως πίνακα ημερομηνιών επιλέγοντας Σήμανση ως πίνακα ημερομηνιών

Στιγμιότυπο οθόνης που εμφανίζει τις Επιλογές ημερολογίου σε έναν πίνακα.

Αντιστοίχιση κατηγοριών στηλών

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

Στιγμιότυπο οθόνης που δείχνει την οθόνη δημιουργίας και επεξεργασίας ημερολογίου.

Διαθέσιμες κατηγορίες στηλών

Ο παρακάτω πίνακας εμφανίζει τις κατηγορίες που είναι διαθέσιμες. Ο πίνακας δίνει επίσης παραδείγματα τιμών και πληθικοτήτων για τα Γρηγοριανά ημερολόγια.

Οι κατηγορίες χωρίζονται σε δύο ομάδες:

  • Πλήρης. Τα δεδομένα σε στήλες που έχουν αντιστοιχιστεί σε πλήρεις κατηγορίες είναι αρκετά για τον μοναδικό προσδιορισμό της χρονικής περιόδου.
  • Μερικός. Τα δεδομένα σε στήλες που έχουν αντιστοιχιστεί σε Μερικές κατηγορίες δεν επαρκούν για τον μοναδικό προσδιορισμό της χρονικής περιόδου.
Κατηγορία Περιγραφή Τύπος Παράδειγμα πληθικότητας σε Γρηγοριανό ημερολόγιο Παράδειγμα τιμών στηλών σε Γρηγοριανό ημερολόγιο
Year Το έτος Complete Y = αριθμός ετών 2024, 2025
Τρίμηνο Το τρίμηνο συμπεριλαμβανομένου του έτους Complete 4*Y 1ο τρίμηνο 2024, 2ο τρίμηνο 2025
Τρίμηνο του έτους Το τρίμηνο του έτους Partial 4 Έτος Τρίμηνο 1, YQ1, Q1, Τρίμηνο 2
Month Ο μήνας συμπεριλαμβανομένου του έτους Complete 12*Y ≤ value ≤ 13*Y Ιανουάριος 2023, 2024 Φεβ
Μήνας του έτους Ο μήνας του χρόνου Partial 12 Ιανουάριος, Έτος Μήνας 11, YM11, M11, 11
Μήνας τριμήνου Ο μήνας του τριμήνου Partial 3 1, QM2
Week Η εβδομάδα συμπεριλαμβανομένου του έτους Complete 52 ≤ value ≤ 53 Εβδομάδα 50 2023, W50-2023, 2023-W50
Εβδομάδα του χρόνου Η εβδομάδα του χρόνου Partial 52 Εβδομάδα 50, W50, 50
Εβδομάδα Τριμήνου Η εβδομάδα του τριμήνου Partial 13 Τρίμηνο Εβδομάδα 10, QW10, 10
Εβδομάδα του μήνα Η εβδομάδα του μήνα Partial 5 Μήνας Εβδομάδα 2, MW2, 2
Ημερομηνία Η ημερομηνία Complete 365*Y ≤ value ≤ 366*Y 12/31/2025
Ημέρα του χρόνου Η μέρα του χρόνου Partial 365 ≤ value ≤366 365, Δ1
Ημέρα Τριμήνου Η ημέρα του τριμήνου Partial 92 10η ημέρα τριμήνου, QD2, 50
Ημέρα του μήνα Η ημέρα του μήνα Partial 31 Μήνας Ημέρα 30, MD10, 30
Ημέρα της εβδομάδας Η ημέρα της εβδομάδας Partial 7 Εβδομάδα Ημέρα 5, WD5, 5

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

Σημείωμα

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

Σημείωμα

Συνιστούμε να συσχετίσετε μόνο τις στήλες στο ημερολόγιό σας που θέλετε να χρησιμοποιήσετε στους υπολογισμούς χρονικής ευφυΐας.

Κύριες έναντι συσχετισμένων στηλών

Η κύρια στήλη απαιτείται για κάθε κατηγορία. Κάθε φορά που αυτή η στήλη ή οποιεσδήποτε συσχετισμένες στήλες που έχουν αντιστοιχιστεί στην ίδια κατηγορία στο ημερολόγιο αναφοράς βρίσκονται στο περιβάλλον ή η κατηγορία απαιτείται για την εκτέλεση ενός υπολογισμού, το Power BI χρησιμοποιεί την κύρια στήλη. Επιπλέον, οι κύριες στήλες χρησιμοποιούνται για ταξινόμηση. Εάν οι τιμές στην κύρια στήλη δεν επιτρέπουν την αναμενόμενη ταξινόμησή της, μπορείτε είτε να ρυθμίσετε τις παραμέτρους της κύριας στήλης ώστε να ταξινομείται κατά άλλη στήλη είτε να χρησιμοποιήσετε μια άλλη στήλη και να ορίσετε την αρχική στήλη ως συσχετισμένη στήλη. Για παράδειγμα, μια στήλη με δεδομένα κειμένου που περιέχουν αριθμό μήνα και έτος σε μορφή mm-yyyy (δηλαδή, 01-2024, , 02-2024και ούτω καθεξής) δεν θα ταξινομηθεί σωστά σε πολλά έτη, αλλά μια στήλη που χρησιμοποιεί τη yyyy-mm μορφή:

Στιγμιότυπο οθόνης που εμφανίζει δύο πίνακες. Κάθε πίνακας έχει μία στήλη. Ο πρώτος πίνακας περιέχει μια στήλη που περιέχει πληροφορίες για τον μήνα και το έτος σε μορφή μμ-εεεε και ο δεύτερος περιέχει τις ίδιες πληροφορίες σε μορφή εεεε-μμ. Η στήλη που περιέχει τα δεδομένα μορφής μμ-εεεε δεν έχει ταξινομηθεί σωστά.

Μπορείτε να αντιστοιχίσετε μηδέν ή περισσότερες συσχετισμένες στήλες σε μια κατηγορία.

Validation

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

Σημείωμα

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

Επικυρώσεις σε πραγματικό χρόνο

Οι επικυρώσεις σε πραγματικό χρόνο που πραγματοποιούνται στα ημερολόγια είναι:

  • Μοναδικό όνομα ημερολογίου. Κάθε ημερολόγιο πρέπει να έχει ένα μοναδικό όνομα στο σημασιολογικό μοντέλο.
  • Ενιαία συσχέτιση ανά ημερολόγιο. Μια στήλη δεν μπορεί να ανήκει σε περισσότερες από μία κατηγορίες στο ίδιο ημερολόγιο.
  • Μοναδικότητα περιόδου. Οι εκχωρημένες κατηγορίες θα πρέπει να προσδιορίζουν μοναδικά την περίοδο.
  • Συνεπής κατηγοριοποίηση. Αυτό εξασφαλίζει ότι οι στήλες συσχετίζονται με την ίδια κατηγορία σε όλα τα ημερολόγια.

Μοναδικότητα περιόδου

Θα πρέπει πάντα να υπάρχει μια διαδρομή για τον μοναδικό προσδιορισμό της περιόδου για τις εκχωρημένες κατηγορίες.

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

Στιγμιότυπο οθόνης που δείχνει την οθόνη δημιουργίας και επεξεργασίας ημερολογίου με σφάλμα επικύρωσης σε πραγματικό χρόνο.

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

  • Week
  • Εβδομάδα του Έτους, Έτος
  • Εβδομάδα τριμήνου, τριμήνου
  • Εβδομάδα τριμήνου, τρίμηνο έτους, έτος
  • Εβδομάδα του μήνα, μήνας
  • Εβδομάδα του μήνα, μήνας του έτους, έτος
  • Εβδομάδα του μήνα, μήνας τριμήνου, τρίμηνο
  • Εβδομάδα του μήνα, Μήνας τριμήνου, Τρίμηνο του έτους, Έτος

Συνεπής κατηγοριοποίηση

Οι στήλες πρέπει να έχουν μια συνεπή κατηγορία σε όλα τα ημερολόγια. Δεν μπορείτε να αντιστοιχίσετε την ίδια στήλη σε διαφορετικές κατηγορίες, όπως Έτος, Τρίμηνο του έτους ή που σχετίζονται με το χρόνο σε ξεχωριστά ημερολόγια.

Επικυρώσεις εκτός σύνδεσης

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

Στιγμιότυπο οθόνης που δείχνει την οθόνη δημιουργίας και επεξεργασίας ημερολογίου. Το κουμπί Επικύρωση δεδομένων επισημαίνεται.

Οι επικυρώσεις εκτός σύνδεσης ελέγχουν τους ακόλουθους κανόνες και επιστρέφουν μια προειδοποίηση εάν κάποιοι κανόνες ακυρωθούν στο ημερολόγιό σας:

  • Μια στήλη που σχετίζεται με μια κατηγορία δεν έχει κενές τιμές.
  • Οι κατηγορίες υψηλότερου επιπέδου και χαμηλότερου επιπέδου έχουν αναλογία πληθικότητας ένα προς πολλά. Για παράδειγμα, οι στήλες που σχετίζονται με την κατηγορία Έτος θα πρέπει να έχουν πληθικότητα ένα προς πολλά με στήλες που σχετίζονται με την κατηγορία Μήνας.
  • Οι στήλες που σχετίζονται με κατηγορίες στο ίδιο επίπεδο έχουν λόγο πληθικότητας ένα προς ένα. Για παράδειγμα, οι στήλες που σχετίζονται με την κατηγορία "Μήνας" θα πρέπει να έχουν πληθικότητα "ένα προς ένα" με τους συνδυασμούς των στηλών που σχετίζονται με τις κατηγορίες "Μήνας του έτους" και "Έτος".
  • Οι κύριες και οι συσχετισμένες στήλες που έχουν εκχωρηθεί στην ίδια κατηγορία έχουν λόγο πληθικότητας ένα προς ένα. Για παράδειγμα, όταν εκχωρείται στην κατηγορία Month, μια κύρια στήλη Month και μια συσχετισμένη στήλη EnglishMonthName θα πρέπει να έχουν πληθικότητα ένα προς ένα.

Εργασία με ημερολόγια

Μόλις οριστεί ένα ημερολόγιο, μπορείτε να ανατρέξετε σε αυτό στις συναρτήσεις χρονικής ευφυΐας. Για παράδειγμα, η ακόλουθη μέτρηση υπολογίζει μια συνολική τιμή από μήνα σε ημερομηνία της Συνολικής ποσότητας σε σχέση με το ημερολόγιο ISO-454 :

Total Quantity MTD ISO-454 = TOTALMTD ( [Total Quantity], 'ISO-454' )

Εάν το ημερολόγιο δεν έχει οριστεί και επιστραφεί σφάλμα:

Στιγμιότυπο οθόνης που εμφανίζει μια μέτρηση χρησιμοποιώντας τη TOTALMTD συνάρτηση με μια παράμετρο ημερολογίου σε ένα ανύπαρκτο ημερολόγιο.

Ακόμα κι αν το ημερολόγιο έχει οριστεί, ωστόσο, μια μέτρηση μπορεί να επιστρέψει ένα σφάλμα. Αυτό συμβαίνει εάν η συνάρτηση που χρησιμοποιείται αναμένει να υπάρχει μια κατηγορία στο ημερολόγιο και το ημερολόγιο δεν έχει αυτήν την κατηγορία. Για παράδειγμα, TOTALWTD αναμένει να υπάρχουν συγκεκριμένες κατηγορίες στο ημερολόγιο. Εάν δεν είναι, επιστρέφεται σφάλμα:

Στιγμιότυπο οθόνης που εμφανίζει μια μέτρηση χρησιμοποιώντας τη συνάρτηση με έγκυρη TOTALWTD αναφορά ημερολογίου που δεν ορίζει τις απαιτούμενες κατηγορίες.

Συναρτήσεις χρονικής ευφυΐας και απαιτούμενες κατηγορίες

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

Σημείωμα

Για ορισμένες συναρτήσεις το όνομά τους είναι ενδεικτικό του επιπέδου που λειτουργεί ο υπολογισμός (για παράδειγμα, TOTALYTD), ενώ για άλλες εξαρτάται από τις παραμέτρους και το περιβάλλον (για παράδειγμα, DATEADD).

Εκκαθάριση πλαισίου

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

Ορισμός ημερολογίου

Έχουμε ένα απλό Γρηγοριανό ημερολόγιο που επισημαίνει τρεις κατηγορίες, που ορίζονται ως:

Κατηγορία Κύρια στήλη
Year Year
Μήνας του έτους ΜήναςΤουΈτους
Τρίμηνο Τρίμηνο

Ορισμοί μετρήσεων

Ορίζονται δύο βασικά μέτρα: ένα για τον υπολογισμό των συνολικών πωλήσεων και ένα άλλο για τον υπολογισμό των συνολικών πωλήσεων από το προηγούμενο τρίμηνο:

[TotalSales] = CALCULATE ( SUM( FactInternetSales[SalesAmount] ) )
[LastQuarterSales] = CALCULATE ( [TotalSales], DATEADD( GregorianCalendar, -1, QUARTER ) )

Παράδειγμα: Πώς λειτουργεί η συμφραζόμενη εκκαθάριση

Η απεικόνιση του πίνακά μας περιηγείται σε υποδιαίρεση ενός μήνα χρησιμοποιώντας τις στήλες Year και MonthOfYear :

Year ΜήναςΤουΈτους ΣύνολοΠωλήσεων Πωλήσεις τελευταίου τριμήνου
2011 1 10
2011 2 20
2011 3 30
2011 4 40 10
2011 5 50 20

Σε αυτόν τον πίνακα, η έντονη γραμμή περιηγείται σε επίπεδο μήνα, για το μήνα Απρίλιο 2011. Έτσι, όλες οι μετρήσεις σε αυτήν τη σειρά θα αξιολογηθούν στο περιβάλλον φίλτρου [Έτος] == 2011 και [ΜήναςΤουΈτους] == 4.
Όπως αναμενόταν, το TotalSales εδώ υπολογίζεται ως οι συνολικές πωλήσεις για τον Απρίλιο του 2011.

Το LastQuarterSales υπολογίζει ομοίως το TotalSales, αλλά του δίνεται ένα επιπλέον φίλτρο που παρέχεται από τη συνάρτηση που βασίζεται στο DATEADD ημερολόγιο. Για αυτή τη σειρά, DATEADD θα είχε ένα αρχικό σημείο εκκίνησης τον Απρίλιο του 2011 και θα έδινε το χρονικό σημείο που είναι ακριβώς πριν από ένα τρίμηνο: τον Ιανουάριο του 2011. Ως αποτέλεσμα, μπορεί κανείς να περιμένει ότι αυτό το TotalSales θα υπολογιστεί στα ακόλουθα δύο περιβάλλοντα φίλτρου:

  • Παρέχεται από τις στήλες περιήγησης της τρέχουσας γραμμής: { [Year] == 2011, [MonthOfYear] == 4 } (Ισοδύναμα, Απρίλιος 2011)
  • Παρέχεται από το DATEADD φίλτρο: { [Year] == 2011, [MonthOfYear] == 1 } (Ισοδύναμα, Ιανουάριος 2011)

Σαφώς, αυτά τα δύο περιβάλλοντα φίλτρων θα έρχονται σε διένεξη - δεν μπορούμε να αξιολογήσουμε τις συνολικές πωλήσεις δεδομένου του τρέχοντος μήνα τόσο ως Ιανουάριος 2011 όσο και ως Απρίλιος 2011. Μια τέτοια διασταύρωση δεν θα απέφερε αποτελέσματα. Ωστόσο, αυτό δεν συμβαίνει. Αντίθετα, με βάση τον ορισμό του ημερολογίου, οι συναρτήσεις χρονικής ευφυΐας βάσει ημερολογίου προσδιορίζουν τις στήλες των κατηγοριών που ενδέχεται να οδηγήσουν σε διενέξεις, ακολουθώντας τη λειτουργία ώρας που εκτελεί η συνάρτηση. Σε αυτή την περίπτωση, DATEADD εκτελεί μια μετατόπιση σε επίπεδο τριμήνου . Η συνάρτηση προσδιορίζει ότι και οι δύο κατηγορίες Έτος και Μήνας του Έτους ενδέχεται να αλλάξουν ως αποτέλεσμα μιας αλλαγής στις στήλες της κατηγορίας Τρίμηνο . Έτσι, η συνάρτηση διαγράφει το περιβάλλον φίλτρου σε όλες ( τόσο τις κύριες όσο και τις συσχετισμένες) στήλες που έχουν επισημανθεί σε αυτές τις κατηγορίες.

Με άλλα λόγια, μπορούμε να πούμε ότι οι κατηγορίες Έτος και Μήνας του Έτους είναι εξαρτήσεις της κατηγορίας Τρίμηνο . Αντίθετα, μπορούμε να πούμε ότι η κατηγορία Τρίμηνο εξαρτάται από τις κατηγορίες Έτος και Μήνας του Έτους .

Πώς λειτουργεί η εκκαθάριση πλαισίου

Διάγραμμα δομής πλέγματος όλων των ημερολογιακών κατηγοριών.

Αυτό το διάγραμμα παρέχεται για την καλύτερη απεικόνιση των εξαρτήσεων μεταξύ των διαφορετικών χρονικών κατηγοριών. Κάθε κατηγορία σε αυτό το πλέγμα αντιπροσωπεύει όλες τις στήλες (κύριες και συσχετισμένες) που έχουν επισημανθεί σε αυτήν την κατηγορία. Οι κατηγορίες συνδέονται με τις εξαρτήσεις τους μέσω βελών. Για παράδειγμα, ο "Μήνας" εξαρτάται από το "Έτος", το "Τρίμηνο του έτους", το "Μήνα τριμήνου", το "Τρίμηνο" και το "Μήνα του έτους".

Όταν το περιβάλλον έχει οριστεί σε μια στήλη ή στη συσχετισμένη ταξινόμηση κατά στήλη που έχει επισημανθεί σε ένα ημερολόγιο, το προηγούμενο περιβάλλον φίλτρου καταργείται στο:

  1. Όλες οι εξαρτήσεις κατηγοριών του X. Αυτό μπορεί να θεωρηθεί ως όλες οι κατηγορίες πάνω από το Χ.
  2. Όλες οι κατηγορίες εξαρτώνται τόσο από το Χ όσο και από τις εξαρτήσεις του (δηλαδή, από το 1. παραπάνω). Αυτό μπορεί να θεωρηθεί ως όλες οι κατηγορίες κάτω από το Χ και όλες οι κατηγορίες στο 1 παραπάνω.

Σημείωμα

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

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

Συμπεριφορά μεταξύ ημερολογίων

Εάν υπάρχουν πολλά ημερολόγια που έχουν οριστεί στον ίδιο πίνακα, αυτές οι διαδικασίες ολοκληρώνονται για κάθε ημερολόγιο που ορίζεται στον πίνακα. Αυτό περιλαμβάνει την παρατήρηση σχετικά με την εκκαθάριση περιβάλλοντος των στηλών που σχετίζονται με το χρόνο. Με άλλα λόγια, ας υποθέσουμε ότι ένας πίνακας ορίζει τρία ημερολόγια: Ημερολόγιο1, Ημερολόγιο2 και Ημερολόγιο3. Εάν το περιβάλλον φίλτρου έχει οριστεί στην κατηγορία "X" στο Ημερολόγιο1, οι παραπάνω διαδικασίες εκτελούνται και στα τρία ημερολόγια.

Παράδειγμα: Σετ φίλτρων στο "Quarter"

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

  1. Πρώτον, θα ληφθούν υπόψη όλες οι εξαρτήσεις της κατηγορίας "Quarter".

    Παράδειγμα συμπεριφοράς εκκαθάρισης περιβάλλοντος φιλτραρίσματος ξεκινώντας από την κατηγορία Τρίμηνο: Εξαρτήσεις.

  2. Στη συνέχεια, θα ληφθούν υπόψη όλα τα εξαρτώμενα μέλη του "Quarter" και οι εξαρτήσεις του.

    Παράδειγμα συμπεριφοράς εκκαθάρισης περιβάλλοντος φίλτρου ξεκινώντας από την κατηγορία Τρίμηνο: Εξαρτώμενα.

  3. Τέλος, το τελικό αποτέλεσμα θα ήταν το εξής. Όλες οι κατηγορίες κόκκινου χρώματος θα καταργηθούν από το προηγούμενο περιβάλλον φίλτρου και το νέο περιβάλλον θα οριστεί στο Quarter.

    Παράδειγμα συμπεριφοράς εκκαθάρισης περιβάλλοντος φίλτρου ξεκινώντας από την κατηγορία Τρίμηνο: Αποτελέσματα

Σενάριο TMDL για ημερολόγια

createOrReplace

	table Date
		lineageTag: xyz

		column Date
			dataType: dateTime
			formatString: Long Date
			lineageTag: abc
			summarizeBy: none
			sourceColumn: Date

        column Year
			dataType: string
			lineageTag: abc
			summarizeBy: none
			sourceColumn: Year

			annotation SummarizationSetBy = Automatic
        
        column Month
			dataType: string
			lineageTag: def
			summarizeBy: none
			sourceColumn: Month

			annotation SummarizationSetBy = Automatic

        column MonthName
			dataType: string
			lineageTag: ghi
			summarizeBy: none
			sourceColumn: MonthName
			sortByColumn: SortByMonth

			changedProperty = SortByColumn

			annotation SummarizationSetBy = Automatic

        column DutchMonthName
			dataType: string
			lineageTag: jkl
			summarizeBy: none
			sourceColumn: DutchMonthName

			annotation SummarizationSetBy = Automatic

        column 'Holiday Name'
			dataType: string
			lineageTag: mno
			summarizeBy: none
			sourceColumn: Holiday Name

			annotation SummarizationSetBy = Automatic
        
        column IsWorkingDay
			dataType: string
			lineageTag: pqr
			summarizeBy: none
			sourceColumn: IsWorkingDay

			annotation SummarizationSetBy = Automatic
		...	
		
		calendar 'Demo Calendar'
			lineageTag: def

			calendarColumnGroup = year
				primaryColumn: Year

			calendarColumnGroup = month
				primaryColumn: Month
				associatedColumn: DutchMonthName
				associatedColumn: MonthName
			
			calendarColumnGroup
                column: 'Holiday Name'
                column: isWorkingDay

Σημείωμα

Παρατηρήστε ότι εάν δεν καθορίσετε καμία κατηγορία για το calendarColumnGroup στο TMDL, οι στήλες επισημαίνονται ως σχετιζόμενες με το χρόνο. Σε αυτό το παράδειγμα, το Όνομα αργίας και το isWorkDay είναι στήλες που σχετίζονται με το χρόνο στο Ημερολόγιο επίδειξης.

Βάλτε τα όλα μαζί: Παραδείγματα χρονικής μετατόπισης

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

  • Διορθώθηκε. Οι συναρτήσεις αυτής της ομάδας είναι DATEADD και SAMEPERIODLASTYEAR. Αυτές οι συναρτήσεις επιτρέπουν μόνο πλευρικές χρονικές μετατοπίσεις και δεν επιστρέφουν τιμές από διαφορετικό επίπεδο λεπτομέρειας.
  • Ευέλικτο. Αυτή η ομάδα περιέχει όλες τις άλλες λειτουργίες χρονικής νοημοσύνης. Αυτές οι λειτουργίες επιτρέπουν ιεραρχικές χρονικές μετατοπίσεις και ανάλογα με τη ρύθμιση του ημερολογίου μπορούν να επιστρέψουν αποτελέσματα από διαφορετικό επίπεδο λεπτομέρειας.

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

Πίνακες και σχέσεις

Για αυτό το παράδειγμα, έχουμε το ακόλουθο απλό μοντέλο δεδομένων:

Table Columns
Ημερομηνία Έτος, Εργάσιμη Ημέρα, Ημερομηνία
Πωλήσεις Κλειδί παραγγελίας, Ποσότητα, Ημερομηνία παραγγελίας

Ακολουθούν ορισμένα παραδείγματα γραμμών στον πίνακα "Ημερομηνίες ": Στιγμιότυπο οθόνης που εμφανίζει τις πρώτες 14 γραμμές του παραδείγματος πίνακα

Ακολουθούν ορισμένα παραδείγματα γραμμών στον πίνακα "Πωλήσεις ": Στιγμιότυπο οθόνης που εμφανίζει τις πρώτες εννέα γραμμές του παραδείγματος πίνακα

Οι πίνακες "Πωλήσεις" και "Ημερομηνίες" σχετίζονται με τις επιλογές "Ημερομηνία_παραγγελίας" και "Ημερομηνία".

Στιγμιότυπο οθόνης που εμφανίζει την προβολή μοντέλου για το παράδειγμα μοντέλου. Εμφανίζει τον πίνακα

Ημερολόγια

Στον πίνακα Date , ορίσαμε ημερολόγια με αυτές τις αντιστοιχίσεις:

ΌνομαΗμερολογίου Κατηγορία Κύρια στήλη
Γρηγοριανό Year Year
Ημερομηνία Ημερομηνία
ΓρηγοριανόΜεΕργάσιμηΗμέρα Year Year
Ημερομηνία Ημερομηνία
Σχετικά με το χρόνο ΕίναιΕργάσιμη Ημέρα

Ο αντίστοιχος ορισμός TMDL αυτών των δύο ημερολογίων είναι:

ref table Date
    calendar 'Gregorian'
        lineageTag: xyz
    
        calendarColumnGroup = year
    	    primaryColumn: Year
    
    	calendarColumnGroup = date
    		primaryColumn: Date
    
    calendar 'GregorianWithWorkingDay'
    	lineageTag: dc4fc383-1661-4112-8afb-930d324fbb6e
    
    	calendarColumnGroup = year
    		primaryColumn: Year
    
    	calendarColumnGroup = date
    		primaryColumn: Date
    
    	calendarColumnGroup
    		column: IsWorkingDay   

Μετρήσεις

Στον πίνακα Πωλήσεις , ορίζουμε τις ακόλουθες μετρήσεις:

Total Quantity = SUM ( 'Sales'[Order Quantity] )

OneYearAgoQuantity =
CALCULATE ( [Total Quantity], DATEADD ( 'Gregorian', -1, YEAR ) )

OneYearAgoQuantityTimeRelated =
CALCULATE ( [Total Quantity], DATEADD ( 'GregorianWithWorkingDay', -1, YEAR ) )

FullLastYearQuantity =
CALCULATE ( [Total Quantity], PARALLELPERIOD ( 'Gregorian', -1, YEAR ) )

FullLastYearQuantityTimeRelated =
CALCULATE ( [Total Quantity], PARALLELPERIOD ( 'GregorianWithWorkingDay', -1, YEAR )
)

Παράδειγμα πλευρικής μετατόπισης

Ας δημιουργήσουμε μια απεικόνιση που εμφανίζει Year, MonthOfYear, IsWorkingDay, Total Quantity, OneYearAgoQuantity και OneYearAgoQuantityTimeRelated για το 2024 και το 2025:

Στιγμιότυπο οθόνης που εμφανίζει μια απεικόνιση πίνακα που εμφανίζει τα στοιχεία Year, IsWorkDay, Total quantity, OneYearAgoQuantity και OneYearAgoQuantityTimeRelated. Οι τιμές για OneYearAgoQuantity και OneYearAgoQuantityTimeRelated για το 2025 συμφωνούν με τις τιμές για το 2024 για τις ίδιες τιμές IsWorkingDay.

Όλες οι τιμές για OneYearAgoQuantity και OneYearAgoQuantityTimeRelated για το 2025 συμφωνούν με τη Συνολική ποσότητα από ακριβώς ένα έτος πριν (2024), για την ίδια τιμή IsWorkingDay .

Αυτό δείχνει ότι DATEADD διατηρεί το περιβάλλον σε οποιαδήποτε στήλη στον πίνακα "Ημερομηνία" που περιέχει το ημερολόγιο που χρησιμοποιείται, ανεξάρτητα από το αν δεν έχει ετικέτα ή αν έχει επισημανθεί ως σχετιζόμενο με την ώρα σε αυτό το ημερολόγιο. Δεδομένου ότι στους ορισμούς των μετρήσεών μας δώσαμε DATEADD οδηγίες να μετατοπιστεί προς τα πίσω κατά ένα έτος, η μόνη στήλη της οποίας το περιβάλλον μετατοπίστηκε ήταν η στήλη που σχετίζεται με την κατηγορία Έτος. Το αν η στήλη IsWorkingDay επισημάνθηκε στο ημερολόγιο ως σχετιζόμενη με το χρόνο ή δεν επισημάνθηκε καθόλου, δεν άλλαξε το αποτέλεσμα. Η μόνη άλλη συνάρτηση που παρουσιάζει αυτή τη συμπεριφορά είναι SAMEPERIODLASTYEAR.

Παράδειγμα ιεραρχικής μετατόπισης

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

Για αυτό, θα δημιουργήσουμε ξανά την ίδια απεικόνιση όπως στο προηγούμενο παράδειγμα, αλλά αυτή τη φορά θα χρησιμοποιήσουμε τις μετρήσεις FullLastYearQuantity και FullLastYearQuantityTimeRelated: Στιγμιότυπο οθόνης που εμφανίζει μια απεικόνιση πίνακα που εμφανίζει Year, IsWorkingDay, Total Quantity, FullLastYearQuantity και FullLastYearQuantityTimeRelated. Οι τιμές για το FullLastYearQuantity 2025 συμφωνούν με τις τιμές για το 2024 για τις ίδιες τιμές IsWorkingDay, αλλά οι τιμές για το FullLastYearQuantityTimeRelated είναι ίσες με τη συνολική τιμή ποσότητας ανεξάρτητα από τις τιμές IsWorkingDay.

Αυτό δείχνει ότι διατηρεί το περιβάλλον για τις στήλες που δεν έχουν επισημανθεί στο ημερολόγιο, αλλά διαγράφει το περιβάλλον για εκείνες που PARALLELPERIOD έχουν επισημανθεί ως σχετιζόμενες με το χρόνο. Το FullLastYearQuantity χρησιμοποίησε το Γρηγοριανό ημερολόγιο όπου το IsWorkingDay δεν είχε επισημανθεί στο ημερολόγιο, ενώ το FullLastYearQuantityTimeRelated χρησιμοποίησε το ημερολόγιο GregorianWithWorkingDay όπου το IsWorkingDay επισημάνθηκε ως σχετικό με το χρόνο. Η νοημοσύνη όλων των εποχών λειτουργεί εκτός από DATEADDSAMEPERIODLASTYEAR και συμπεριφέρεται με αυτόν τον τρόπο.

Μπόνους: Εάν θέλετε πραγματικά να αναγκάσετε αυτές τις συναρτήσεις να διατηρήσουν το πλαίσιο και για στήλες που σχετίζονται με το χρόνο, μπορείτε να χρησιμοποιήσετε το VALUES:

FullLastYearQuantityTimeRelatedOverride =
CALCULATE ( [Total Quantity], PARALLELPERIOD ( 'GregorianWithWorkingDay', -1, YEAR ), VALUES('Date'[IsWorkingDay]) )

Σε αυτήν την περίπτωση, FullLastYearQuantityTimeRelatedOverride επιστρέφει τα ίδια αποτελέσματα με FullLastYearQuantityτο .

Συμπέρασμα

Το παραπάνω περίπλοκο παράδειγμα δείχνει ότι διαφορετικές συναρτήσεις χρονικής ευφυΐας συμπεριφέρονται διαφορετικά ανάλογα με το αν οι στήλες επισημαίνονται ως σχετιζόμενες με το χρόνο στο ημερολόγιο. DATEADD και SAMEPERIODLASTYEAR εκτελέστε μόνο πλευρικές χρονικές μετατοπίσεις. Όλες οι άλλες λειτουργίες χρονικής νοημοσύνης επιτρέπουν ιεραρχικές χρονικές μετατοπίσεις.

Χρήση DATEADD και DATESINPERIOD με ημερολόγια

Οι DATEADD συναρτήσεις και DATESINPERIOD έχουν συγκεκριμένες παραμέτρους που επιτρέπουν λεπτομερή έλεγχο του τρόπου εκτέλεσης των μετατοπίσεων όταν η επιλογή είναι σε πιο λεπτομερές επίπεδο από το επίπεδο μετατόπισης που υποδεικνύεται από interval την παράμετρο. Αυτό συμβαίνει, για παράδειγμα, εάν εμφανίζετε δεδομένα σε επίπεδο ημερομηνίας, αλλά ορίζετε την interval παράμετρο σε αυτές τις συναρτήσεις σε MONTH. Για παράδειγμα, σε ένα Γρηγοριανό ημερολόγιο, όταν η μετατόπιση μιας περιόδου που εκτείνεται από τις 3 έως τις 10 Μαρτίου κατά ένα μήνα θα έχει ως αποτέλεσμα από τις 3 έως τις 10 Απριλίου. Ωστόσο, δεδομένου ότι οι μήνες στα Γρηγοριανά ημερολόγια ποικίλλουν σε διάρκεια, αυτό μπορεί να οδηγήσει σε ασάφειες κατά τη μετατόπιση. Ακολουθούν παραδείγματα σεναρίων που βασίζονται σε Γρηγοριανό ημερολόγιο:

Μετάβαση από μικρότερο σε μεγαλύτερο χρονικό διάστημα

Για παράδειγμα, μετατόπιση προς τα εμπρός κατά ένα μήνα με μια επιλογή τον Φεβρουάριο, οπότε ο μήνας-στόχος είναι ο Μάρτιος. Μπορείτε να χρησιμοποιήσετε την extension παράμετρο on DATEADD για να επηρεάσετε τον τρόπο εκτέλεσης της μετατόπισης:

Τιμή παραμέτρου επέκτασης Περιγραφή Result
precise Αυτό διατηρεί αυστηρά το αρχικό εύρος ημερομηνιών. Οι 25-28 Φεβρουαρίου μετατοπίζονται στις 25-28 Μαρτίου.
extended Επιτρέπει την επέκταση του παραθύρου προς το τέλος του μήνα. Οι 25-28 Φεβρουαρίου μετατοπίζονται στις 25-31 Μαρτίου.
endaligned Ευθυγραμμίζει την ημερομηνία λήξης με το τέλος του μήνα προορισμού όταν η επιλογή φτάσει στο τέλος του μήνα της. διατηρεί κατά τα άλλα τις σχετικές θέσεις. Η 28η Φεβρουαρίου μετατοπίζεται στις 31 Μαρτίου, ενώ η 27η Φεβρουαρίου μετατοπίζεται στις 27 Μαρτίου.

Σημείωμα

Το DATESINPERIOD παρέχει μια endbehavior παράμετρο που προσφέρει τις precise επιλογές και endaligned .

Μετάβαση από μεγαλύτερη σε μικρότερη περίοδο

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

Μπορείτε να χρησιμοποιήσετε την truncation παράμετρο on DATEADD για να επηρεάσετε τον τρόπο εκτέλεσης της μετατόπισης:

Τιμή παραμέτρου περικοπής Περιγραφή Result
anchored Αγκυρώνει το αποτέλεσμα στην τελευταία έγκυρη ημερομηνία του μικρότερου μήνα. Η 31η Μαρτίου μετατοπίζεται στις 28 Φεβρουαρίου (ή 29 σε δίσεκτο έτος).
blank Όταν δεν υπάρχει μετατοπισμένη ημερομηνία, επιστρέψτε κενό. Η μετατόπιση της 31ης Μαρτίου ένα μήνα πίσω επιστρέφει κενή (αφού η 31η Φεβρουαρίου δεν υπάρχει).

Σημείωμα

Αυτή η παράμετρος δεν είναι διαθέσιμη για τη συνάρτηση DATEINPERIOD.

Ζητήματα για την εργασία με χρονική ευφυΐα βάσει ημερολογίου

  • Εκτέλεση υπολογισμού χρονικής ευφυΐας σε έναν πίνακα δεδομένων που ορίζει ένα ημερολόγιο και υπόκειται σε κανόνες ασφάλειας σε επίπεδο γραμμών (RLS) και μπορεί να οδηγήσει σε μη αναμενόμενα αποτελέσματα.
  • Η απόδοση αυτής της δυνατότητας προεπισκόπησης δεν είναι αντιπροσωπευτική του τελικού προϊόντος.
  • Δεν μπορείτε να συντάξετε ημερολόγια στην υπηρεσία Power BI ακόμα.
  • Δεν πρέπει να χρησιμοποιείτε αυτόματους πίνακες ημερομηνίας/ώρας με προσαρμοσμένα ημερολόγια.
  • Δεν μπορείτε να χρησιμοποιήσετε ημερολόγια με live συνδεδεμένα ή σύνθετα μοντέλα.
  • Συνιστούμε να συσχετίσετε μόνο τις στήλες στο ημερολόγιό σας που θέλετε να χρησιμοποιήσετε στους υπολογισμούς χρονικής ευφυΐας.
  • Τα ημερολόγια υπόκεινται σε επικυρώσεις τόσο σε πραγματικό χρόνο όσο και εκτός σύνδεσης . Μπορείτε να αποθηκεύσετε το ημερολόγιό σας παρά τα σφάλματα επικύρωσης εκτός σύνδεσης, αλλά συνιστάται η επίλυσή τους πρώτα. Οι αποτυχίες επικύρωσης σε πραγματικό χρόνο πρέπει να διορθωθούν για αποθήκευση.
  • Κάθε ημερολόγιο πρέπει να έχει ένα μοναδικό όνομα στο μοντέλο δεδομένων
  • Ένας πίνακας μπορεί να περιέχει πολλά ημερολόγια
  • Ο πίνακας που περιέχει το ημερολόγιο πρέπει να έχει λιγότερες από 200 στήλες. Αν ο πίνακας περιέχει περισσότερες από 20.000 γραμμές, οι επικυρώσεις δεν θα είναι διαθέσιμες, αλλά μπορείτε να προσθέσετε ένα ημερολόγιο.
  • Ένα ημερολόγιο πρέπει να αντιστοιχίζει τουλάχιστον μία κύρια στήλη σε μια κατηγορία
  • Ένα ημερολόγιο μπορεί να αντιστοιχίσει μόνο στήλες από τον δικό του πίνακα σε κατηγορίες
  • Κάθε κατηγορία πρέπει να έχει μια κύρια στήλη και μπορεί να έχει εκχωρημένες μηδέν ή περισσότερες συσχετισμένες στήλες
  • DATEADD έχει νέες παραμέτρους για τον έλεγχο της συμπεριφοράς επέκτασης και επέκτασης, οι οποίες δεν αναγνωρίζονται στο IntelliSense.
  • Κάθε δεδομένη στήλη μπορεί να αντιστοιχιστεί μόνο σε μία κατηγορία
  • Δεν μπορείτε να ενσωματώσετε συναρτήσεις χρονικής ευφυΐας που χρησιμοποιούν ημερολόγια. Για παράδειγμα, η ακόλουθη δήλωση DAX δεν υποστηρίζεται:
ThisIsNotSupported = PREVIOUSDAY ( PREVIOUSMONTH( 'Calendar' ) )

Αντίθετα, μπορείτε να κάνετε:

ThisWorks = CALCULATETABLE ( PREVIOUSDAY ( 'Calendar' ), PREVIOUSMONTH( 'Calendar' ) )

Δημιουργία πίνακα ημερομηνιών με χρήση ενσωματωμένων εργαλείων

Τα παρακάτω παραδείγματα δημιουργούν έναν πίνακα ημερομηνιών από την 1η Ιανουαρίου 2010 έως την 31η Δεκεμβρίου 2030 χρησιμοποιώντας το Power Query M ή το DAX. Περιλαμβάνει τις ακόλουθες στήλες: Έτος, Αριθμός μήνα, Όνομα μήνα, Μήνας Έτος, Τρίμηνο, Τρίμηνο έτους, Ημέρα και Ημερομηνία.

Power Query M

let
    StartDate = #date(2010, 1, 1),
    EndDate = #date(2030, 12, 31),
    NumberOfDays = Duration.Days(EndDate - StartDate) + 1,
    DateList = List.Dates(StartDate, NumberOfDays, #duration(1,0,0,0)),
    DateTable = Table.FromList(DateList, Splitter.SplitByNothing(), {"Date"}),
    AddYear = Table.AddColumn(DateTable, "Year", each Date.Year([Date]), Int64.Type),
    AddMonthNumber = Table.AddColumn(AddYear, "Month Number", each Date.Month([Date]), Int64.Type),
    AddMonthName = Table.AddColumn(AddMonthNumber, "Month Name", each Date.ToText([Date], "MMMM"), type text),
    AddMonthYear = Table.AddColumn(AddMonthName, "Month Year", each Date.ToText([Date], "MMM yyyy"), type text),
    AddQuarter = Table.AddColumn(AddMonthYear, "Quarter", each "Q" & Text.From(Date.QuarterOfYear([Date])), type text),
    AddYearQuarter = Table.AddColumn(AddQuarter, "Year Quarter", each Text.From(Date.Year([Date])) & " Q" & Text.From(Date.QuarterOfYear([Date])), type text),
    AddDay = Table.AddColumn(AddYearQuarter, "Day", each Date.Day([Date]), Int64.Type)
in
    AddDay

DAX

DateTable =
ADDCOLUMNS (
    CALENDAR ( DATE ( 2010, 1, 1 ), DATE ( 2030, 12, 31 ) ),
    "Year", YEAR ( [Date] ),
    "Month Number", MONTH ( [Date] ),
    "Month Name", FORMAT ( [Date], "MMMM" ),
    "Month Year", FORMAT ( [Date], "MMM YYYY" ),
    "Quarter", "Q" & FORMAT ( [Date], "Q" ),
    "Year Quarter",
        FORMAT ( [Date], "YYYY" ) & " Q"
            & FORMAT ( [Date], "Q" ),
    "Day", DAY ( [Date] ),
    "Date", [Date]
)

Για περισσότερες πληροφορίες και περισσότερες επιλογές, ανατρέξτε στο θέμα Πίνακες ημερομηνιών.

Για περισσότερες πληροφορίες σχετικά με αυτό το άρθρο, ανατρέξτε στους παρακάτω πόρους: