Μοντελοποίηση διαστάσεων στην Αποθήκη Microsoft Fabric: Πίνακες διαστάσεων
Ισχύει για:✅ Τελικό σημείο ανάλυσης SQL και Αποθήκη στο Microsoft Fabric
Σημείωμα
Αυτό το άρθρο αποτελεί μέρος της σειράς άρθρων Μοντελοποίηση διαστάσεων . Αυτή η σειρά εστιάζει σε οδηγίες και βέλτιστες πρακτικές σχεδίασης που σχετίζονται με τη μοντελοποίηση διαστάσεων στο Microsoft Fabric Warehouse.
Αυτό το άρθρο σάς παρέχει οδηγίες και βέλτιστες πρακτικές για τη σχεδίαση πινάκων διαστάσεων σε ένα διαστατικό μοντέλο. Παρέχει πρακτικές οδηγίες για την Warehouse στο Microsoft Fabric, η οποία είναι μια εμπειρία που υποστηρίζει πολλές δυνατότητες T-SQL, όπως η δημιουργία πινάκων και η διαχείριση δεδομένων σε πίνακες. Επομένως, έχετε τον πλήρη έλεγχο της δημιουργίας πινάκων μοντέλων διαστάσεων και της φόρτωσής τους με δεδομένα.
Σημείωμα
Σε αυτό το άρθρο, ο όρος αποθήκη δεδομένων αναφέρεται σε μια εταιρική αποθήκη δεδομένων, η οποία παρέχει ολοκληρωμένη ενοποίηση κρίσιμων δεδομένων σε ολόκληρο τον οργανισμό. Αντίθετα, η μεμονωμένη αποθήκη όρων αναφέρεται σε μια Αποθήκη Fabric, η οποία είναι μια προσφορά σχεσιακής βάσης δεδομένων λογισμικού ως υπηρεσίας (SaaS), την οποία μπορείτε να χρησιμοποιήσετε για να υλοποιήσετε μια αποθήκη δεδομένων. Για λόγους σαφήνειας, σε αυτό το άρθρο το τελευταίο αναφέρεται ως Fabric Warehouse.
Φιλοδώρημα
Εάν δεν είστε ικανοποιημένοι με τη μοντελοποίηση διαστάσεων, εξετάστε αυτή τη σειρά άρθρων το πρώτο σας βήμα. Δεν προορίζεται για να παρέχει μια πλήρη συζήτηση σχετικά με τη σχεδίαση μοντελοποίησης διαστάσεων. Για περισσότερες πληροφορίες, ανατρέξτε απευθείας σε ευρέως δημοσιευμένο περιεχόμενο, όπως το Κιτ εργαλείων αποθήκης δεδομένων: Ο απόλυτος οδηγός για τη μοντελοποίηση διαστάσεων (3η έκδοση, 2013) του Ralph Kimball και άλλους.
Σε ένα διαστατικό μοντέλο, ένας πίνακας διαστάσεων περιγράφει μια οντότητα που σχετίζεται με τις απαιτήσεις της επιχείρησής σας και της ανάλυσης. Σε γενικές γραμμές, οι πίνακες διαστάσεων αντιπροσωπεύουν τα πράγματα που μοντελοποιείτε. Μπορεί να είναι προϊόντα, άτομα, τοποθεσίες ή οποιαδήποτε άλλη έννοια, όπως ημερομηνία και ώρα. Για να προσδιορίσετε εύκολα πίνακες διαστάσεων, συνήθως προσθέτετε ένα πρόθεμα στα ονόματά d_
τους ή Dim_
.
Δομή πίνακα διαστάσεων
Για να περιγράψετε τη δομή ενός πίνακα διαστάσεων, εξετάστε το παρακάτω παράδειγμα ενός πίνακα διαστάσεων πωλητή με την ονομασία d_Salesperson
. Αυτό το παράδειγμα εφαρμόζει ορθές πρακτικές σχεδίασης. Καθεμία από τις ομάδες στηλών περιγράφεται στις παρακάτω ενότητες.
CREATE TABLE d_Salesperson
(
--Surrogate key
Salesperson_SK INT NOT NULL,
--Natural key(s)
EmployeeID VARCHAR(20) NOT NULL,
--Dimension attributes
FirstName VARCHAR(20) NOT NULL,
<…>
--Foreign key(s) to other dimensions
SalesRegion_FK INT NOT NULL,
<…>
--Historical tracking attributes (SCD type 2)
RecChangeDate_FK INT NOT NULL,
RecValidFromKey INT NOT NULL,
RecValidToKey INT NOT NULL,
RecReason VARCHAR(15) NOT NULL,
RecIsCurrent BIT NOT NULL,
--Audit attributes
AuditMissing BIT NOT NULL,
AuditIsInferred BIT NOT NULL,
AuditCreatedDate DATE NOT NULL,
AuditCreatedBy VARCHAR(15) NOT NULL,
AuditLastModifiedDate DATE NOT NULL,
AuditLastModifiedBy VARCHAR(15) NOT NULL
);
Υποκατάστατο κλειδί
Το δείγμα πίνακα διαστάσεων έχει ένα υποκατάστατο κλειδί, το οποίο ονομάζεται Salesperson_SK
. Ένα υποκατάστατο κλειδί είναι ένα μοναδικό αναγνωριστικό μίας στήλης που δημιουργείται και αποθηκεύεται στον πίνακα διαστάσεων. Είναι μια στήλη πρωτεύοντος κλειδιού που χρησιμοποιείται για να σχετίζεται με άλλους πίνακες στο διαστατικό μοντέλο.
Τα υποκατάστατα κλειδιά προσπαθούν να μονώσουν την αποθήκη δεδομένων από αλλαγές στα δεδομένα προέλευσης. Παρέχουν επίσης πολλά άλλα πλεονεκτήματα, τα οποία σας επιτρέπουν να κάνετε τα εξής:
- Ενοποίηση πολλαπλών προελεύσεων δεδομένων (αποφυγή σύγκρουσης διπλότυπων αναγνωριστικών).
- Ενοποιήστε τα φυσικά κλειδιά πολλών στηλών σε ένα πιο αποτελεσματικό κλειδί μίας στήλης.
- Παρακολουθήστε το ιστορικό διαστάσεων με τύπο διάστασης (SCD) αργής αλλαγής 2.
- Περιορίστε το πλάτος του πίνακα δεδομένων για βελτιστοποίηση χώρου αποθήκευσης (επιλέγοντας τον μικρότερο δυνατό τύπο δεδομένων ακέραιου).
Μια στήλη υποκατάστατου κλειδιού είναι μια συνιστώμενη πρακτική, ακόμα και όταν ένα φυσικό κλειδί (περιγράφεται στη συνέχεια) φαίνεται αποδεκτός υποψήφιος. Θα πρέπει επίσης να αποφύγετε την παροχή σημασία στις τιμές κλειδιού (εκτός από τα κλειδιά διαστάσεων ημερομηνίας και ώρας, όπως περιγράφεται αργότερα).
Φυσικά κλειδιά
Το δείγμα πίνακα διαστάσεων διαθέτει επίσης ένα φυσικό κλειδί, το οποίο ονομάζεται EmployeeID
. Ένα φυσικό κλειδί είναι το κλειδί που αποθηκεύεται στο σύστημα προέλευσης. Επιτρέπει τη συσχέτιση των δεδομένων διάστασης με το σύστημα προέλευσής τους, η οποία συνήθως γίνεται με μια διαδικασία εξαγωγής, φόρτωσης και μετασχηματισμού (ETL) για τη φόρτωση του πίνακα διαστάσεων. Ορισμένες φορές, ένα φυσικό κλειδί ονομάζεται επιχειρηματικό κλειδί και οι αξίες του μπορεί να έχουν νόημα για τους χρήστες επιχειρήσεων.
Ορισμένες φορές οι διαστάσεις δεν έχουν φυσικό κλειδί. Αυτό μπορεί να συμβαίνει για τη διάσταση ημερομηνίας ή τις διαστάσεις αναζήτησης ή όταν δημιουργείτε δεδομένα διαστάσεων κανονικοποιώντας ένα επίπεδο αρχείο.
Χαρακτηριστικά διάστασης
Ένα δείγμα πίνακα διαστάσεων έχει επίσης χαρακτηριστικά διάστασης, όπως η FirstName
στήλη. Τα χαρακτηριστικά διάστασης παρέχουν περιβάλλον στα αριθμητικά δεδομένα που είναι αποθηκευμένα σε σχετικούς πίνακες δεδομένων. Είναι συνήθως στήλες κειμένου που χρησιμοποιούνται σε ερωτήματα ανάλυσης για φιλτράρισμα και ομαδοποίηση (ανάλυση και ζάρια), αλλά όχι για να συγκεντρωθούν μόνοι τους. Ορισμένοι πίνακες διαστάσεων περιέχουν λίγα χαρακτηριστικά, ενώ άλλοι περιέχουν πολλά χαρακτηριστικά (όσα χρειάζονται για την υποστήριξη των απαιτήσεων ερωτήματος του διαστατικού μοντέλου).
Φιλοδώρημα
Ένας καλός τρόπος για να προσδιορίσετε ποιες διαστάσεις και χαρακτηριστικά χρειάζεστε είναι να βρείτε τα κατάλληλα άτομα και να υποβάλετε τις σωστές ερωτήσεις. Συγκεκριμένα, μείνετε σε εγρήγορση για την αναφορά της λέξης από. Για παράδειγμα, όταν κάποιος λέει ότι πρέπει να αναλύσει τις πωλήσεις κατά πωλητή, κατά μήνα και κατά κατηγορία προϊόντος, σας λέει ότι χρειάζονται διαστάσεις που έχουν αυτά τα χαρακτηριστικά.
Εάν σκοπεύετε να δημιουργήσετε ένα σημασιολογικό μοντέλο Direct Lake, θα πρέπει να συμπεριλάβετε όλες τις πιθανές στήλες που απαιτούνται για φιλτράρισμα και ομαδοποίηση ως χαρακτηριστικά διάστασης. Αυτό συμβαίνει επειδή τα σημασιολογικά μοντέλα Direct Lake δεν υποστηρίζουν υπολογιζόμενες στήλες.
Εξωτερικά κλειδιά
Το δείγμα πίνακα διαστάσεων διαθέτει επίσης ένα εξωτερικό κλειδί, το οποίο ονομάζεται SalesRegion_FK
. Άλλοι πίνακες διαστάσεων μπορούν να αναφέρουν ένα εξωτερικό κλειδί και η παρουσία τους σε έναν πίνακα διαστάσεων είναι μια ειδική περίπτωση. Υποδεικνύει ότι ο πίνακας σχετίζεται με έναν άλλο πίνακα διαστάσεων, που σημαίνει ότι μπορεί να αποτελεί μέρος μιας διάστασης snowflake ή ότι σχετίζεται με μια διάσταση εξωτερικού.
Η Fabric Warehouse υποστηρίζει περιορισμούς εξωτερικού κλειδιού, αλλά δεν είναι δυνατή η επιβολή τους. Επομένως, είναι σημαντικό η διαδικασία ETL να ελέγχει για την ακεραιότητα μεταξύ των σχετικών πινάκων κατά τη φόρτωση των δεδομένων.
Εξακολουθεί να είναι καλή ιδέα να δημιουργείτε εξωτερικά κλειδιά. Ένας καλός λόγος για να δημιουργήσετε αβίαστα εξωτερικά κλειδιά είναι για να επιτρέψετε στα εργαλεία μοντελοποίησης, όπως το Power BI Desktop, να εντοπίζουν και δημιουργούν αυτόματα σχέσεις μεταξύ πινάκων στο μοντέλο σημασιολογίας.
Χαρακτηριστικά παρακολούθησης ιστορικού
Το δείγμα πίνακα διαστάσεων διαθέτει επίσης διάφορα χαρακτηριστικά παρακολούθησης ιστορικού. Τα χαρακτηριστικά παρακολούθησης ιστορικού είναι προαιρετικά με βάση την ανάγκη σας να παρακολουθείτε συγκεκριμένες αλλαγές όπως εμφανίζονται στο σύστημα προέλευσης. Επιτρέπουν την αποθήκευση τιμών για την υποστήριξη του κύριου ρόλου μιας αποθήκης δεδομένων, ο οποίος είναι να περιγράψει με ακρίβεια το παρελθόν. Συγκεκριμένα, αυτά τα χαρακτηριστικά αποθηκεύουν περιβάλλον ιστορικού, καθώς η διαδικασία ETL φορτώνει νέα ή τροποποιημένα δεδομένα στη διάσταση.
Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Διαχείριση αλλαγών ιστορικού παρακάτω σε αυτό το άρθρο.
Χαρακτηριστικά ελέγχου
Το δείγμα πίνακα διαστάσεων διαθέτει επίσης διάφορα χαρακτηριστικά ελέγχου. Τα χαρακτηριστικά ελέγχου είναι προαιρετικά, αλλά συνιστώνται. Σας επιτρέπουν να παρακολουθείτε πότε και πώς δημιουργήθηκαν ή τροποποιήθηκαν οι εγγραφές διάστασης και μπορούν να περιλαμβάνουν διαγνωστικές ή πληροφορίες αντιμετώπισης προβλημάτων που προκύπτουν κατά τη διάρκεια διαδικασιών ETL. Για παράδειγμα, θα θέλετε να παρακολουθείτε ποιος (ή ποια διαδικασία) ενημέρωσε μια γραμμή και πότε. Τα χαρακτηριστικά ελέγχου μπορούν επίσης να βοηθήσουν στη διάγνωση ενός δύσκολου προβλήματος, όπως όταν μια διαδικασία ETL σταματά απροσδόκητα. Μπορούν επίσης να επισημάνουν τα μέλη διάστασης ως σφάλματα ή συνάγεται ότι μέλη.
Μέγεθος πίνακα διαστάσεων
Συχνά, οι πιο χρήσιμες και ευέλικτες διαστάσεις σε ένα διαστατικό μοντέλο είναι μεγάλες, ευρείες διαστάσεις. Είναι μεγάλες όσον αφορά τις γραμμές (πάνω από εκατομμύρια) και είναι μεγάλες όσον αφορά τον αριθμό των χαρακτηριστικών διάστασης (πιθανώς εκατοντάδες). Το μέγεθος δεν είναι τόσο σημαντικό (παρόλο που θα πρέπει να σχεδιάσετε και να βελτιστοποιήσετε για το μικρότερο δυνατό μέγεθος). Αυτό που έχει σημασία είναι ότι η διάσταση υποστηρίζει το απαιτούμενο φιλτράρισμα, ομαδοποίηση και ακριβή ανάλυση ιστορικού δεδομένων.
Οι μεγάλες διαστάσεις μπορεί να προέρχονται από πολλαπλά συστήματα προέλευσης. Στην περίπτωση αυτή, η επεξεργασία διάστασης πρέπει να συνδυάζει, να συγχωνεύει, να συγχωνεύει και να τυποποιεί τα δεδομένα. και να εκχωρήσει υποκατάστατα κλειδιά.
Συγκριτικά, ορισμένες διαστάσεις είναι πολύ μικρές. Μπορεί να αντιπροσωπεύουν πίνακες αναζήτησης που περιέχουν μόνο πολλές εγγραφές και χαρακτηριστικά. Συχνά αυτές οι μικρές διαστάσεις αποθηκεύουν τιμές κατηγοριών που σχετίζονται με συναλλαγές σε πίνακες δεδομένων και εφαρμόζονται ως διαστάσεις με υποκατάστατα κλειδιά για να σχετίζονται με τα αρχεία δεδομένων.
Φιλοδώρημα
Όταν έχετε πολλές μικρές διαστάσεις, εξετάστε το ενδεχόμενο να τις ενοποιήσετε σε μια ανεπιθύμητη διάσταση.
Έννοιες σχεδίασης διάστασης
Αυτή η ενότητα περιγράφει διάφορες έννοιες σχεδίασης διαστάσεων.
Κατάργηση κανονικοποίησης έναντι κανονικοποίησης
Σχεδόν πάντα οι πίνακες διαστάσεων πρέπει να αποκανονικοποιηθούν. Παρόλο που η κανονικοποίηση είναι ο όρος που χρησιμοποιείται για την περιγραφή δεδομένων που αποθηκεύονται με τρόπο που μειώνει τα επαναλαμβανόμενα δεδομένα, η αποκανονικοποίηση είναι ο όρος που χρησιμοποιείται για να καθοριστεί πού υπάρχουν προϋπάρχοντα πλεονάζοντα δεδομένα. Πλεονάζοντα δεδομένα υπάρχουν συνήθως λόγω του χώρου αποθήκευσης των ιεραρχιών (περιγράφεται αργότερα), δηλαδή οι ιεραρχίες ισοπεδώνονται. Για παράδειγμα, μια διάσταση προϊόντος θα μπορούσε να αποθηκεύσει την υποκατηγορία (και τα σχετικά χαρακτηριστικά της) και την κατηγορία (και τα σχετικά χαρακτηριστικά της).
Επειδή οι διαστάσεις είναι γενικά μικρές (σε σύγκριση με τους πίνακες δεδομένων), το κόστος αποθήκευσης πλεοναζόντων δεδομένων σχεδόν πάντα αντισταθμίζεται από τη βελτιωμένη απόδοση και χρηστικότητα του ερωτήματος.
Διαστάσεις snowflake
Μια εξαίρεση στην κατάργηση κανονικοποίησης είναι η σχεδίαση μιας διάστασης snowflake. Μια διάσταση snowflake κανονικοποιείται και αποθηκεύει τα δεδομένα διάστασης σε πολλούς σχετικούς πίνακες.
Το παρακάτω διάγραμμα απεικονίζει μια διάσταση snowflake που περιλαμβάνει τρεις σχετικούς πίνακες διαστάσεων: Product
, Subcategory
και Category
.
Εξετάστε το ενδεχόμενο να εφαρμόσετε μια διάσταση snowflake όταν:
- Η διάσταση είναι εξαιρετικά μεγάλη και το κόστος αποθήκευσης υπερτερεί της ανάγκης για υψηλές επιδόσεις ερωτημάτων. (Ωστόσο, επανεξεταζετε περιοδικά ότι αυτό εξακολουθεί να ισχύει.)
- Χρειάζεστε κλειδιά για να συσχετίσετε τη διάσταση με στοιχεία μεγαλύτερης λεπτομέρειας. Για παράδειγμα, ο πίνακας δεδομένων πωλήσεων αποθηκεύει γραμμές σε επίπεδο προϊόντος, αλλά ο πίνακας δεδομένων στόχος πωλήσεων αποθηκεύει γραμμές σε επίπεδο υποκατηγορίας.
- Πρέπει να παρακολουθείτε τις αλλαγές ιστορικού σε υψηλότερα επίπεδα υποδιαίρεσης.
Σημείωμα
Λάβετε υπόψη ότι μια ιεραρχία σε ένα σημασιολογικό μοντέλο Power BI μπορεί να βασίζεται μόνο σε στήλες από έναν μοναδικό πίνακα σημασιολογικών μοντέλων. Επομένως, μια διάσταση snowflake θα πρέπει να παρέχει ένα αποκανονικοποιημένο αποτέλεσμα χρησιμοποιώντας μια προβολή που ενώνει τους πίνακες snowflake μαζί.
Ιεραρχίες
Συνήθως, οι στήλες διαστάσεων παράγουν ιεραρχίες. Οι ιεραρχίες επιτρέπουν την εξερεύνηση δεδομένων σε διακριτά επίπεδα σύνοψης. Για παράδειγμα, η αρχική προβολή μιας απεικόνισης μήτρας μπορεί να εμφανίζει ετήσια πωλήσεις και ο καταναλωτής αναφοράς μπορεί να επιλέξει να κάνει λεπτομερή έρευνα για να αποκαλύψει πωλήσεις τριμήνου και μηνιαίων πωλήσεων.
Υπάρχουν τρεις τρόποι αποθήκευσης μιας ιεραρχίας σε μια διάσταση. Μπορείτε να χρησιμοποιήσετε:
- Στήλες από μια μοναδική, αποκανονικοποιημένη διάσταση.
- Μια διάσταση snowflake, η οποία αποτελείται από πολλούς σχετικούς πίνακες.
- Μια σχέση γονικού-θυγατρικού στοιχείου (αυτόματη αναφορά) σε μια διάσταση.
Οι ιεραρχίες μπορούν να είναι ισορροπημένες ή μη ισορροπημένες. Είναι επίσης σημαντικό να κατανοήσετε ότι ορισμένες ιεραρχίες είναι ακανόνιστες.
Ισορροπημένες ιεραρχίες
Οι ισορροπημένες ιεραρχίες είναι ο πιο συνηθισμένος τύπος ιεραρχίας. Μια ισορροπημένη ιεραρχία έχει τον ίδιο αριθμό επιπέδων. Ένα κοινό παράδειγμα μιας ισορροπημένης ιεραρχίας είναι μια ιεραρχία ημερολογίου σε μια διάσταση ημερομηνίας που περιλαμβάνει επίπεδα για έτος, τρίμηνο, μήνα και ημερομηνία.
Το παρακάτω διάγραμμα απεικονίζει μια ισορροπημένη ιεραρχία περιοχών πωλήσεων. Περιλαμβάνει δύο επίπεδα, τα οποία είναι η ομάδα περιοχών πωλήσεων και η περιοχή πωλήσεων.
Τα επίπεδα μιας ισορροπημένης ιεραρχίας βασίζονται είτε σε στήλες από μια μοναδική, αποκανονικοποιημένη διάσταση είτε από πίνακες που σχηματίζουν μια διάσταση snowflake. Όταν βασίζονται σε μια μοναδική, αποκανονικοποιημένη διάσταση, οι στήλες που αντιπροσωπεύουν τα υψηλότερα επίπεδα περιέχουν πλεονάζοντα δεδομένα.
Για ισορροπημένες ιεραρχίες, τα γεγονότα σχετίζονται πάντα με ένα ενιαίο επίπεδο της ιεραρχίας, το οποίο είναι συνήθως το χαμηλότερο επίπεδο. Με αυτόν τον τρόπο, τα δεδομένα μπορούν να συγκεντρωθούν (συναθροιστούν) στο υψηλότερο επίπεδο της ιεραρχίας. Τα γεγονότα μπορεί να σχετίζονται με οποιοδήποτε επίπεδο, το οποίο προσδιορίζεται από τη λεπτομέρεια του πίνακα δεδομένων. Για παράδειγμα, ο πίνακας δεδομένων πωλήσεων μπορεί να αποθηκευτεί στο επίπεδο ημερομηνίας, ενώ ο πίνακας δεδομένων στόχος πωλήσεων μπορεί να αποθηκευτεί στο επίπεδο του τριμήνου.
Μη ισορροπημένες ιεραρχίες
Οι μη ισορροπημένες ιεραρχίες είναι ένας λιγότερο συνηθισμένος τύπος ιεραρχίας. Μια μη ισορροπημένη ιεραρχία έχει επίπεδα που βασίζονται σε μια σχέση γονικού-θυγατρικού στοιχείου. Για αυτόν τον λόγο, ο αριθμός των επιπέδων σε μια μη ισορροπημένη ιεραρχία προσδιορίζεται από τις γραμμές διαστάσεων και όχι από συγκεκριμένες στήλες πίνακα διαστάσεων.
Ένα συνηθισμένο παράδειγμα μιας μη ισορροπημένης ιεραρχίας είναι μια ιεραρχία υπαλλήλων, όπου κάθε γραμμή σε μια διάσταση υπαλλήλου σχετίζεται με μια γραμμή διευθυντή αναφορών στον ίδιο πίνακα. Σε αυτή την περίπτωση, κάθε υπάλληλος μπορεί να είναι διευθυντής με τους υπαλλήλους που κάνουν αναφορές. Φυσικά, ορισμένοι κλάδοι της ιεραρχίας θα έχουν περισσότερα επίπεδα από άλλα.
Το παρακάτω διάγραμμα απεικονίζει μια μη ισορροπημένη ιεραρχία. Περιλαμβάνει τέσσερα επίπεδα και κάθε μέλος στην ιεραρχία είναι πωλητής. Παρατηρήστε ότι οι πωλητές έχουν διαφορετικό αριθμό προγόνων στην ιεραρχία σύμφωνα με τους πωλητές.
Άλλα συνήθη παραδείγματα μη ισορροπημένων ιεραρχιών περιλαμβάνουν τη χρέωση υλικών, τα μοντέλα ιδιοκτησίας εταιρείας και τη γενική λογιστική.
Για μη ισορροπημένες ιεραρχίες, τα γεγονότα σχετίζονται πάντα με τη διάσταση. Για παράδειγμα, τα στοιχεία πωλήσεων σχετίζονται με διαφορετικούς πωλητές, οι οποίοι έχουν διαφορετικές δομές αναφοράς. Ο πίνακας διαστάσεων θα έχει ένα υποκατάστατο κλειδί (ονομάζεται Salesperson_SK
) και μια ReportsTo_Salesperson_FK
στήλη εξωτερικού κλειδιού, η οποία αναφέρεται στη στήλη πρωτεύοντος κλειδιού. Κάθε πωλητής που δεν έχει κανέναν να διαχειριστεί δεν είναι απαραίτητα στο χαμηλότερο επίπεδο οποιασδήποτε διακλάδωσης της ιεραρχίας. Όταν δεν βρίσκονται στο χαμηλότερο επίπεδο, ένας πωλητής μπορεί να πωλεί προϊόντα και να έχει πωλητές που πωλούν επίσης προϊόντα. Επομένως, η συνάθροιση δεδομένων δεδομένων πρέπει να λαμβάνει υπόψη τον μεμονωμένο πωλητή και όλους τους απογόνους του.
Η υποβολή ερωτημάτων για γονικές-θυγατρικές ιεραρχίες μπορεί να είναι σύνθετη και αργή, ιδιαίτερα για μεγάλες διαστάσεις. Παρόλο που το σύστημα προέλευσης μπορεί να αποθηκεύει σχέσεις ως γονικό-θυγατρικό, συνιστούμε να εξομαλοποιήσετε την ιεραρχία. Σε αυτή την περίπτωση, η εξομάλυνση σημαίνει μετασχηματισμό και αποθήκευση των επιπέδων ιεραρχίας στη διάσταση ως στήλες.
Φιλοδώρημα
Εάν επιλέξετε να μην γίνει εξομάλυνση της ιεραρχίας, εξακολουθείτε να μπορείτε να δημιουργήσετε μια ιεραρχία που βασίζεται σε μια σχέση γονικού-θυγατρικού στοιχείου σε ένα σημασιολογικό μοντέλο Power BI. Ωστόσο, αυτή η προσέγγιση δεν συνιστάται για μεγάλες διαστάσεις. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Κατανόηση συναρτήσεων για ιεραρχίες γονικού-θυγατρικού στοιχείου στο DAX.
Ακανόνιστες ιεραρχίες
Ορισμένες φορές, μια ιεραρχία είναι ακανόνιστη , επειδή το γονικό στοιχείο ενός μέλους στην ιεραρχία υπάρχει σε ένα επίπεδο που δεν είναι αμέσως πάνω από αυτό. Σε αυτές τις περιπτώσεις, οι τιμές επιπέδου που λείπουν επαναλαμβάνουν την τιμή του γονικού στοιχείου.
Εξετάστε ένα παράδειγμα μιας ισορροπημένης ιεραρχίας γεωγραφικής τοποθεσίας. Υπάρχει μια ακανόνιστη ιεραρχία όταν μια χώρα/περιοχή δεν έχει πολιτείες ή επαρχίες. Για παράδειγμα, η Νέα Ζηλανδία δεν έχει ούτε πολιτείες ούτε επαρχίες. Επομένως, όταν εισάγετε τη γραμμή Νέα Ζηλανδία, θα πρέπει επίσης να αποθηκεύσετε την τιμή χώρας/περιοχής στη StateProvince
στήλη.
Το παρακάτω διάγραμμα απεικονίζει μια ακανόνιστη ιεραρχία γεωγραφικών περιοχών.
Διαχείριση αλλαγής ιστορικού
Όταν είναι απαραίτητο, η διαχείριση της αλλαγής ιστορικού μπορεί να γίνει με την υλοποίηση μιας διάστασης που αλλάζει αργά (SCD). Ένα SCD διατηρεί το ιστορικό περιβάλλον ως νέα ή τροποποιημένα δεδομένα, φορτώνεται σε αυτό.
Ακολουθούν οι πιο συνηθισμένοι τύποι SCD.
- Τύπος 1: Αντικαταστήστε το υπάρχον μέλος διάστασης.
- Τύπος 2: Εισαγάγετε ένα νέο μέλος διάστασης βάσει χρόνου.
- Τύπος 3: Παρακολουθήστε περιορισμένο ιστορικό με χαρακτηριστικά.
Είναι πιθανό μια διάσταση να υποστηρίζει αλλαγές τύπου SCD 1 και SCD τύπου 2.
Ο τύπος SCD 3 δεν χρησιμοποιείται συχνά, εν μέρει λόγω του γεγονότος ότι είναι δύσκολο να χρησιμοποιηθεί σε ένα μοντέλο σημασιολογίας. Εξετάστε προσεκτικά εάν μια προσέγγιση SCD τύπου 2 θα ταίριαζε καλύτερα.
Φιλοδώρημα
Εάν αναμένετε μια διάσταση που αλλάζει γρήγορα, η οποία είναι μια διάσταση που έχει ένα χαρακτηριστικό που αλλάζει συχνά, εξετάστε το ενδεχόμενο να προσθέσετε αυτό το χαρακτηριστικό στον πίνακα δεδομένων. Εάν το χαρακτηριστικό είναι αριθμητικό, όπως η τιμή προϊόντος, μπορείτε να το προσθέσετε ως μέτρηση στον πίνακα δεδομένων. Εάν το χαρακτηριστικό είναι μια τιμή κειμένου, μπορείτε να δημιουργήσετε μια διάσταση με βάση όλες τις τιμές κειμένου και να προσθέσετε το κλειδί διαστάσεών της στον πίνακα δεδομένων.
SCD τύπου 1
Οι αλλαγές τύπου SCD 1 αντικαθιστούν την υπάρχουσα γραμμή διαστάσεων, επειδή δεν χρειάζεται να παρακολουθείτε τις αλλαγές. Αυτός ο τύπος SCD μπορεί επίσης να χρησιμοποιηθεί για τη διόρθωση σφαλμάτων. Είναι ένας κοινός τύπος SCD και θα πρέπει να χρησιμοποιείται για τα πιο μεταβαλλόμενα χαρακτηριστικά, όπως το όνομα πελάτη, τη διεύθυνση ηλεκτρονικού ταχυδρομείου και άλλα.
Το παρακάτω διάγραμμα απεικονίζει την κατάσταση πριν και μετά ενός μέλους διάστασης πωλητή όπου έχει αλλάξει ο αριθμός τηλεφώνου του.
Αυτός ο τύπος SCD δεν διατηρεί την προοπτική ιστορικού, επειδή η υπάρχουσα γραμμή ενημερώνεται. Αυτό σημαίνει ότι αλλαγές τύπου SCD 1 μπορεί να οδηγήσουν σε διαφορετικές συναθροίσεις υψηλότερου επιπέδου. Για παράδειγμα, εάν ένας πωλητής αντιστοιχιστεί σε μια διαφορετική περιοχή πωλήσεων, μια αλλαγή τύπου SCD 1 θα αντικαταστήσει τη γραμμή διαστάσεων. Η συνάθροιση των ιστορικών αποτελεσμάτων πωλήσεων πωλητών στην περιοχή θα παράγει τότε ένα διαφορετικό αποτέλεσμα καθώς τώρα χρησιμοποιεί τη νέα τρέχουσα περιοχή πωλήσεων. Είναι σαν αυτός ο πωλητής να αντιστοιχιζόταν πάντα στη νέα περιοχή πωλήσεων.
SCD τύπου 2
Οι αλλαγές τύπου SCD 2 έχουν ως αποτέλεσμα νέες γραμμές που αντιπροσωπεύουν μια έκδοση με βάση τον χρόνο ενός μέλους διάστασης. Υπάρχει πάντα μια τρέχουσα γραμμή έκδοσης και απεικονίζει την κατάσταση του μέλους διάστασης στο σύστημα προέλευσης.
Τα χαρακτηριστικά παρακολούθησης ιστορικού στον πίνακα διαστάσεων αποθηκεύουν τιμές που επιτρέπουν την αναγνώριση της τρέχουσας έκδοσης (η τρέχουσα σημαία είναι TRUE
) και τη χρονική περίοδο εγκυρότητας. Ένα υποκατάστατο κλειδί απαιτείται επειδή θα υπάρχουν διπλότυπα φυσικά κλειδιά όταν αποθηκεύονται πολλές εκδόσεις.
Είναι ένας κοινός τύπος SCD, αλλά θα πρέπει να δεσμεύεται για χαρακτηριστικά που πρέπει να διατηρήσουν την προοπτική ιστορικού.
Για παράδειγμα, εάν ένας πωλητής αντιστοιχιστεί σε διαφορετική περιοχή πωλήσεων, μια αλλαγή τύπου SCD 2 περιλαμβάνει μια λειτουργία ενημέρωσης και μια λειτουργία εισαγωγής.
- Η λειτουργία ενημέρωσης αντικαθιστά την τρέχουσα έκδοση για να ορίσει τα χαρακτηριστικά παρακολούθησης ιστορικού. Συγκεκριμένα, η στήλη τελικής εγκυρότητας ορίζεται στην ημερομηνία επεξεργασίας ETL (ή μια κατάλληλη χρονική σήμανση στο σύστημα προέλευσης) και η τρέχουσα σημαία ορίζεται σε
FALSE
. - Η λειτουργία εισαγωγής προσθέτει μια νέα, τρέχουσα έκδοση, ορίζοντας τη στήλη εγκυρότητας έναρξης στην τιμή στήλης τελικής εγκυρότητας (χρησιμοποιείται για την ενημέρωση της προηγούμενης έκδοσης) και την τρέχουσα σημαία σε
TRUE
.
Είναι σημαντικό να κατανοήσετε ότι η υποδιαίρεση των σχετικών πινάκων δεδομένων δεν είναι σε επίπεδο πωλητή, αλλά σε επίπεδο έκδοσης πωλητή. Η συνάθροιση των ιστορικών αποτελεσμάτων πωλήσεών τους στην περιοχή θα παράγει σωστά αποτελέσματα, αλλά θα υπάρχουν δύο (ή περισσότερες) εκδόσεις μελών πωλητή για ανάλυση.
Το παρακάτω διάγραμμα απεικονίζει την κατάσταση πριν και μετά ενός μέλους διάστασης πωλητή όπου έχει αλλάξει η περιοχή πωλήσεών του. Επειδή ο οργανισμός θέλει να αναλύσει την προσπάθεια πωλητών σύμφωνα με την περιοχή στην οποία ανατίθενται, ενεργοποιεί μια αλλαγή τύπου SCD 2.
Φιλοδώρημα
Όταν ένας πίνακας διαστάσεων υποστηρίζει αλλαγές τύπου SCD 2, θα πρέπει να συμπεριλάβετε ένα χαρακτηριστικό ετικέτας που περιγράφει το μέλος και την έκδοση. Εξετάστε ένα παράδειγμα όταν ο πωλητής Lynn Tsoflias από την Adventure Works αλλάζει ανάθεση από την περιοχή πωλήσεων της Αυστραλίας στην περιοχή πωλήσεων του Ηνωμένου Βασιλείου. Το χαρακτηριστικό ετικέτας για την πρώτη έκδοση θα μπορούσε να διαβάσει "Lynn Tsoflias (Αυστραλία)" και το χαρακτηριστικό ετικέτας για τη νέα, τρέχουσα έκδοση θα μπορούσε να διαβάσει "Lynn Tsoflias (Ηνωμένο Βασίλειο)." Εάν είναι χρήσιμο, μπορεί να συμπεριλάβετε και τις ημερομηνίες εγκυρότητας στην ετικέτα.
Θα πρέπει να εξισορροπήσετε την ανάγκη για ιστορική ακρίβεια σε σχέση με τη χρηστικότητα και την αποτελεσματικότητα. Προσπαθήστε να αποφύγετε πάρα πολλές αλλαγές τύπου SCD 2 σε έναν πίνακα διαστάσεων, επειδή μπορεί να οδηγήσει σε έναν πολύ μεγάλο αριθμό εκδόσεων που μπορεί να δυσκολεύσει την κατανόηση από τους αναλυτές.
Επίσης, πάρα πολλές εκδόσεις μπορεί να υποδεικνύουν ότι ένα μεταβαλλόμενο χαρακτηριστικό μπορεί να αποθηκεύεται καλύτερα στον πίνακα δεδομένων. Επεκτείνοντας το προηγούμενο παράδειγμα, εάν οι αλλαγές στην περιοχή πωλήσεων ήταν συχνές, η περιοχή πωλήσεων θα μπορούσε να αποθηκευτεί ως κλειδί διάστασης στον πίνακα δεδομένων, αντί να υλοποιηθεί SCD τύπου 2.
Εξετάστε τα παρακάτω χαρακτηριστικά παρακολούθησης ιστορικού scd τύπου 2.
CREATE TABLE d_Salesperson
(
<…>
--Historical tracking attributes (SCD type 2)
RecChangeDate_FK INT NOT NULL,
RecValidFromKey INT NOT NULL,
RecValidToKey INT NOT NULL,
RecReason VARCHAR(15) NOT NULL,
RecIsCurrent BIT NOT NULL,
<…>
);
Ακολουθούν οι σκοποί των χαρακτηριστικών παρακολούθησης ιστορικού.
- Η
RecChangeDate_FK
στήλη αποθηκεύει την ημερομηνία έναρξης ισχύος της αλλαγής. Σας επιτρέπει να υποβάλετε ερωτήματα όταν πραγματοποιήθηκαν αλλαγές. - Οι
RecValidFromKey
στήλες καιRecValidToKey
αποθηκεύουν τις πραγματικές ημερομηνίες ισχύος της εγκυρότητας για τη γραμμή. Εξετάστε το ενδεχόμενο αποθήκευσης της παλαιότερης ημερομηνίας που βρέθηκε στη διάσταση ημερομηνίας γιαRecValidFromKey
αναπαράσταση της αρχικής έκδοσης και αποθήκευσης01/01/9999
για τηνRecValidToKey
τρέχουσα έκδοση. - Η
RecReason
στήλη είναι προαιρετική. Επιτρέπει την τεκμηρίωση της αιτίας για την εισαγωγή της έκδοσης. Μπορεί να κωδικοποιήσει τα χαρακτηριστικά που άλλαξαν ή μπορεί να είναι ένας κώδικας από το σύστημα προέλευσης που αναφέρει έναν συγκεκριμένο επιχειρηματικό λόγο. - Η
RecIsCurrent
στήλη επιτρέπει μόνο την ανάκτηση τρεχουσών εκδόσεων. Χρησιμοποιείται όταν η διαδικασία ETL αναζητά κλειδιά διαστάσεων κατά τη φόρτωση πινάκων δεδομένων.
Σημείωμα
Ορισμένα συστήματα προέλευσης δεν αποθηκεύουν αλλαγές ιστορικού, επομένως είναι σημαντικό η διάσταση να επεξεργάζεται τακτικά για τον εντοπισμό αλλαγών και την υλοποίηση νέων εκδόσεων. Με αυτόν τον τρόπο, μπορείτε να εντοπίσετε τις αλλαγές λίγο μετά την εμφάνιση και οι ημερομηνίες εγκυρότητας θα είναι ακριβείς.
SCD τύπου 3
Οι αλλαγές τύπου SCD 3 παρακολουθούν το περιορισμένο ιστορικό με χαρακτηριστικά. Αυτή η προσέγγιση μπορεί να είναι χρήσιμη όταν υπάρχει ανάγκη εγγραφής της τελευταίας αλλαγής ή ορισμένων από τις πιο πρόσφατες αλλαγές.
Αυτός ο τύπος SCD διατηρεί περιορισμένη ιστορική προοπτική. Μπορεί να είναι χρήσιμο όταν θα πρέπει να αποθηκεύονται μόνο οι αρχικές και οι τρέχουσες τιμές. Στην περίπτωση αυτή, δεν θα απαιτούνταν ενδιάμεσες αλλαγές.
Για παράδειγμα, εάν ένας πωλητής αντιστοιχιστεί σε μια διαφορετική περιοχή πωλήσεων, μια αλλαγή τύπου SCD 3 αντικαθιστά τη γραμμή διαστάσεων. Μια στήλη που αποθηκεύει συγκεκριμένα την προηγούμενη περιοχή πωλήσεων ορίζεται ως η προηγούμενη περιοχή πωλήσεων και η νέα περιοχή πωλήσεων ορίζεται ως η τρέχουσα περιοχή πωλήσεων.
Το παρακάτω διάγραμμα απεικονίζει την κατάσταση πριν και μετά ενός μέλους διάστασης πωλητή όπου έχει αλλάξει η περιοχή πωλήσεών του. Επειδή ο οργανισμός θέλει να προσδιορίσει οποιαδήποτε προηγούμενη ανάθεση περιοχής πωλήσεων, ενεργοποιεί μια αλλαγή τύπου SCD 3.
Μέλη ειδικής διάστασης
Μπορείτε να εισαγάγετε γραμμές σε μια διάσταση που αντιπροσωπεύει καταστάσεις που απουσιάζουν, είναι άγνωστο, Δ/Υ ή καταστάσεις σφάλματος. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε τις ακόλουθες τιμές υποκατάστατου κλειδιού.
Τιμή κλειδιού | Σκοπός |
---|---|
0 | Λείπει (δεν είναι διαθέσιμο στο σύστημα προέλευσης) |
-1 | Άγνωστος (αποτυχία αναζήτησης κατά τη φόρτωση ενός πίνακα δεδομένων) |
-2 | Δ/Υ (δεν υπάρχει) |
-3 | Σφάλμα |
Ημερολόγιο και ώρα
Σχεδόν χωρίς εξαίρεση, οι πίνακες δεδομένων αποθηκεύουν μετρήσεις σε συγκεκριμένα χρονικά σημεία. Για να υποστηρίξετε την ανάλυση κατά ημερομηνία (και πιθανώς ώρα), πρέπει να υπάρχουν διαστάσεις ημερολογίου (ημερομηνίας και ώρας).
Είναι ασυνήθιστο ένα σύστημα προέλευσης να έχει δεδομένα διάστασης ημερολογίου, επομένως πρέπει να δημιουργηθεί στην αποθήκη δεδομένων. Συνήθως, δημιουργείται μία φορά και, εάν πρόκειται για διάσταση ημερολογίου, επεκτείνεται με μελλοντικές ημερομηνίες όταν χρειάζεται.
Διάσταση ημερομηνίας
Η διάσταση ημερομηνίας (ή ημερολογίου) είναι η πιο κοινή διάσταση που χρησιμοποιείται για ανάλυση. Αποθηκεύει μία γραμμή ανά ημερομηνία και υποστηρίζει τη συνήθη απαίτηση φιλτραρίσματος ή ομαδοποίησης κατά συγκεκριμένες περιόδους ημερομηνιών, όπως έτη, τρίμηνα ή μήνες.
Σημαντικό
Μια διάσταση ημερομηνίας δεν πρέπει να περιλαμβάνει ένα κόκκο που εκτείνεται έως την ώρα της ημέρας. Εάν απαιτείται ανάλυση ώρας της ημέρας, θα πρέπει να έχετε διάσταση ημερομηνίας και διάσταση ώρας (περιγράφεται στη συνέχεια). Οι πίνακες δεδομένων που αποθηκεύουν την ώρα των δεδομένων ημέρας θα πρέπει να έχουν δύο εξωτερικά κλειδιά, ένα για κάθε μία από αυτές τις διαστάσεις.
Το φυσικό κλειδί της διάστασης ημερομηνίας πρέπει να χρησιμοποιεί τον τύπο δεδομένων ημερομηνίας . Το υποκατάστατο κλειδί θα πρέπει να αποθηκεύει την ημερομηνία χρησιμοποιώντας τη YYYYMMDD
μορφή και τον τύπο δεδομένων int . Αυτή η αποδεκτή πρακτική πρέπει να είναι η μοναδική εξαίρεση (παράλληλα με τη χρονική διάσταση) όταν η υποκατάστατη τιμή κλειδιού έχει νόημα και είναι αναγνώσιμη από τον άνθρωπο. Η αποθήκευση YYYYMMDD
ως τύπος δεδομένων int δεν είναι μόνο αποτελεσματική και ταξινομημένη αριθμητικά, αλλά συμμορφώνεται επίσης με την ξεκάθαρη μορφή ημερομηνίας του Διεθνούς Οργανισμού Προτύπων (ISO) 8601.
Ακολουθούν ορισμένα κοινά χαρακτηριστικά που πρέπει να συμπεριληφθούν σε μια διάσταση ημερομηνίας.
-
Year
,Quarter
,Month
,Day
-
QuarterNumberInYear
,MonthNumberInYear
– το οποίο μπορεί να απαιτείται για την ταξινόμηση ετικετών κειμένου. -
FiscalYear
,FiscalQuarter
– ορισμένα εταιρικά λογιστικά χρονοδιαγράμματα ξεκινούν στα μέσα του έτους, έτσι ώστε η έναρξη/λήξη του ημερολογιακού έτους και του οικονομικού έτους να διαφέρουν. -
FiscalQuarterNumberInYear
,FiscalMonthNumberInYear
– το οποίο μπορεί να απαιτείται για την ταξινόμηση ετικετών κειμένου. -
WeekOfYear
– υπάρχουν πολλοί τρόποι για να επισημάνετε την εβδομάδα του έτους, συμπεριλαμβανομένου ενός προτύπου ISO που έχει είτε 52 είτε 53 εβδομάδες. -
IsHoliday
,HolidayText
– εάν ο οργανισμός σας λειτουργεί σε πολλές γεωγραφικές τοποθεσίες, θα πρέπει να διατηρείτε πολλά σύνολα λιστών διακοπών που κάθε γεωγραφική τοποθεσία παρατηρεί ως ξεχωριστή διάσταση ή έχει εξομαλοποιήσει πολλά χαρακτηριστικά στη διάσταση ημερομηνίας. Η προσθήκη ενόςHolidayText
χαρακτηριστικού θα μπορούσε να βοηθήσει στον προσδιορισμό αργιών για αναφορές. -
IsWeekday
– ομοίως, σε ορισμένες γεωγραφικές τοποθεσίες, η τυπική εργάσιμη εβδομάδα δεν είναι Δευτέρα έως Παρασκευή. Για παράδειγμα, η εργάσιμη εβδομάδα είναι Κυριακή έως Πέμπτη σε πολλές περιοχές της Μέσης Ανατολής, ενώ άλλες περιοχές απασχολούν μια τετραήμερη ή εξαήμερη εργάσιμη εβδομάδα. LastDayOfMonth
-
RelativeYearOffset
, ,RelativeQuarterOffset
RelativeMonthOffset
, –RelativeDayOffset
το οποίο μπορεί να απαιτείται για την υποστήριξη φιλτραρίσματος σχετικής ημερομηνίας (για παράδειγμα, τον προηγούμενο μήνα). Οι τρέχουσες περίοδοι χρησιμοποιούν μετατόπιση μηδέν (0)· οι προηγούμενες περίοδοι αποθηκεύουν αποκλίσεις -1, -2, -3... μελλοντικές περιόδους αποθηκεύουν αποκλίσεις από 1, 2, 3....
Όπως και με οποιαδήποτε διάσταση, αυτό που είναι σημαντικό είναι ότι περιέχει χαρακτηριστικά που υποστηρίζουν τις γνωστές απαιτήσεις φιλτραρίσματος, ομαδοποίησης και ιεραρχίας. Μπορεί επίσης να υπάρχουν χαρακτηριστικά που αποθηκεύουν μεταφράσεις ετικετών σε άλλες γλώσσες.
Όταν η διάσταση χρησιμοποιείται για να συσχετιστεί με στοιχεία μεγαλύτερης λεπτομέρειας, ο πίνακας δεδομένων μπορεί να χρησιμοποιήσει την πρώτη ημερομηνία της περιόδου ημερομηνίας. Για παράδειγμα, ένας πίνακας δεδομένων προορισμού πωλήσεων που αποθηκεύει τους στόχους των τριμηνιαίων πωλητών θα αποθηκεύει την πρώτη ημερομηνία του τριμήνου στη διάσταση ημερομηνίας. Μια εναλλακτική προσέγγιση είναι η δημιουργία στηλών κλειδιού στον πίνακα ημερομηνιών. Για παράδειγμα, ένα κλειδί τριμήνου θα μπορούσε να αποθηκεύσει το κλειδί τριμήνου χρησιμοποιώντας τη YYYYQ
μορφή και τον τύπο δεδομένων μικρής απόχρωσης .
Η διάσταση θα πρέπει να συμπληρωθεί με τη γνωστή περιοχή ημερομηνιών που χρησιμοποιούνται από όλους τους πίνακες δεδομένων. Θα πρέπει επίσης να περιλαμβάνει μελλοντικές ημερομηνίες όταν η αποθήκη δεδομένων αποθηκεύει στοιχεία σχετικά με στόχους, προϋπολογισμούς ή προβλέψεις. Όπως και με άλλες διαστάσεις, μπορεί να συμπεριλάβετε γραμμές που αντιπροσωπεύουν περιπτώσεις που απουσιάζουν, είναι άγνωστο, Δ/Υ ή περιπτώσεις σφάλματος.
Φιλοδώρημα
Κάντε αναζήτηση στο Internet για "δημιουργία διαστάσεων ημερομηνιών" για να βρείτε δέσμες ενεργειών και υπολογιστικά φύλλα που δημιουργούν δεδομένα ημερομηνίας.
Συνήθως, στην αρχή του επόμενου έτους, η διαδικασία ETL θα πρέπει να επεκτείνει τις γραμμές διάστασης ημερομηνίας σε έναν συγκεκριμένο αριθμό ετών μπροστά. Όταν η διάσταση περιλαμβάνει χαρακτηριστικά σχετικής απόκλισης, η διαδικασία ETL πρέπει να εκτελείται καθημερινά για την ενημέρωση των τιμών χαρακτηριστικών απόκλισης με βάση την τρέχουσα ημερομηνία (σήμερα).
Διάσταση ώρας
Ορισμένες φορές, τα γεγονότα πρέπει να αποθηκευτούν κάποια στιγμή (όπως κατά την ώρα της ημέρας). Σε αυτή την περίπτωση, δημιουργήστε μια διάσταση χρόνου (ή ρολογιού). Μπορεί να έχει έναν κόκκο λεπτών (24 x 60 = 1.440 γραμμές) ή ακόμα και δευτερόλεπτα (24 x 60 x 60 = 86.400 γραμμές). Άλλα πιθανά δημητριακά περιλαμβάνουν μισή ώρα ή ώρα.
Το φυσικό κλειδί μιας διάστασης ώρας πρέπει να χρησιμοποιεί τον τύπο δεδομένων ώρας . Το υποκατάστατο κλειδί θα μπορούσε να χρησιμοποιήσει μια κατάλληλη μορφή και να αποθηκεύσει τιμές που έχουν νόημα και είναι αναγνώσιμες από τον άνθρωπο, για παράδειγμα, χρησιμοποιώντας τη HHMM
μορφή ή HHMMSS
.
Ακολουθούν ορισμένα κοινά χαρακτηριστικά που πρέπει να συμπεριληφθούν σε μια διάσταση χρόνου.
-
Hour
,HalfHour
,QuarterHour
,Minute
- Ετικέτες χρονικής περιόδου (πρωί, απόγευμα, βράδυ, νύχτα)
- Ονόματα βάρδιες εργασίας
- Σημαίες αιχμής ή εκτός αιχμής
Διαμορφωμένες διαστάσεις
Ορισμένες διαστάσεις μπορεί να είναι συμβατές διαστάσεις. Οι διαμορφωμένες διαστάσεις σχετίζονται με πολλούς πίνακες δεδομένων και επομένως είναι κοινόχρηστοι από πολλά αστέρια σε ένα διαστατικό μοντέλο. Παρέχουν συνέπεια και μπορούν να σας βοηθήσουν να μειώσετε τη συνεχή ανάπτυξη και συντήρηση.
Για παράδειγμα, είναι τυπικό οι πίνακες δεδομένων να αποθηκεύουν τουλάχιστον ένα κλειδί διάστασης ημερομηνίας (επειδή η δραστηριότητα καταγράφεται σχεδόν πάντα κατά ημερομηνία ή/και ώρα). Για αυτόν τον λόγο, μια διάσταση ημερομηνίας είναι μια κοινή, συμβατή διάσταση. Επομένως, θα πρέπει να εξασφαλίσετε ότι η διάσταση ημερομηνίας σας περιλαμβάνει χαρακτηριστικά σχετικά με την ανάλυση όλων των πινάκων δεδομένων.
Το παρακάτω διάγραμμα εμφανίζει τον Sales
πίνακα δεδομένων και τον Inventory
πίνακα δεδομένων. Κάθε πίνακας δεδομένων σχετίζεται με τη διάσταση και Date
τη Product
διάσταση, οι οποίες είναι συμβατές διαστάσεις.
Σε ένα άλλο παράδειγμα, ο υπάλληλος και οι χρήστες σας θα μπορούσαν να είναι το ίδιο σύνολο ατόμων. Σε αυτή την περίπτωση, μπορεί να έχει νόημα να συνδυάσετε τα χαρακτηριστικά κάθε οντότητας για να δημιουργήσετε μία συμβατή διάσταση.
Διαστάσεις αναπαραγωγής ρόλων
Όταν γίνεται αναφορά σε μια διάσταση πολλές φορές σε έναν πίνακα δεδομένων, είναι γνωστή ως διάσταση αναπαραγωγής ρόλων.
Για παράδειγμα, όταν ένας πίνακας δεδομένων πωλήσεων έχει κλειδιά διαστάσεων ημερομηνίας παραγγελίας, ημερομηνίας αποστολής και ημερομηνίας παράδοσης, η διάσταση ημερομηνίας σχετίζεται με τρεις τρόπους. Κάθε τρόπος αντιπροσωπεύει έναν διακριτό ρόλο, όμως υπάρχει μόνο μία φυσική διάσταση ημερομηνίας.
Το παρακάτω διάγραμμα απεικονίζει έναν Flight
πίνακα δεδομένων. Η Airport
διάσταση είναι μια διάσταση αναπαραγωγής ρόλων καθώς σχετίζεται δύο φορές με τον πίνακα δεδομένων ως διάσταση Departure Airport
και τη Arrival Airport
διάσταση.
Ανεπιθύμητες διαστάσεις
Μια ανεπιθύμητη διάσταση είναι χρήσιμη όταν υπάρχουν πολλές ανεξάρτητες διαστάσεις, ιδιαίτερα όταν περιλαμβάνουν μερικά χαρακτηριστικά (ίσως ένα) και όταν αυτά τα χαρακτηριστικά έχουν χαμηλή πληθικότητα (λίγες τιμές). Ο στόχος μιας ανεπιθύμητης διάστασης είναι η ενοποίηση πολλών μικρών διαστάσεων σε μία μόνο διάσταση. Αυτή η προσέγγιση σχεδίασης μπορεί να μειώσει τον αριθμό διαστάσεων και να μειώσει τον αριθμό των κλειδιών πινάκων δεδομένων και, συνεπώς, το μέγεθος του χώρου αποθήκευσης πινάκων δεδομένων. Βοηθούν επίσης στη μείωση της ακαταστασίας του τμήματος παραθύρου δεδομένων, καθώς παρουσιάζουν λιγότερους πίνακες στους χρήστες.
Ένας πίνακας ανεπιθύμητης διάστασης συνήθως αποθηκεύει το Καρτεσιανό γινόμενο όλων των τιμών χαρακτηριστικών διάστασης, με ένα χαρακτηριστικό υποκατάστατου κλειδιού.
Οι καλοί υποψήφιοι περιλαμβάνουν σημαίες και δείκτες, κατάσταση παραγγελίας και δημογραφικές καταστάσεις πελατών (φύλο, ηλικιακή ομάδα και άλλες).
Το παρακάτω διάγραμμα απεικονίζει μια ανεπιθύμητη διάσταση με την ονομασία Sales Status
που συνδυάζει τιμές κατάστασης παραγγελίας και τιμές κατάστασης παράδοσης.
Εκφυλισμένες διαστάσεις
Μια εκφυλιζόμενη διάσταση μπορεί να προκύψει όταν η διάσταση είναι στο ίδιο επίπεδο λεπτομέρειας με τα σχετικά δεδομένα. Ένα συνηθισμένο παράδειγμα μιας εκφυλικής διάστασης είναι μια διάσταση αριθμού παραγγελιών πωλήσεων που σχετίζεται με έναν πίνακα δεδομένων πωλήσεων. Συνήθως, ο αριθμός τιμολογίου είναι ένα μοναδικό, μη ιεραρχικό χαρακτηριστικό στον πίνακα δεδομένων. Επομένως, είναι μια αποδεκτή πρακτική να μην αντιγράφετε αυτά τα δεδομένα για να δημιουργήσετε έναν ξεχωριστό πίνακα διαστάσεων.
Το παρακάτω διάγραμμα απεικονίζει μια Sales Order
διάσταση που είναι μια εκφυλιζόμενη διάσταση με βάση τη SalesOrderNumber
στήλη σε έναν πίνακα δεδομένων πωλήσεων. Αυτή η διάσταση υλοποιείται ως μια προβολή που ανακτά τις διακριτές τιμές αριθμού παραγγελιών πωλήσεων.
Φιλοδώρημα
Μπορείτε να δημιουργήσετε μια προβολή σε μια Αποθήκη Fabric που παρουσιάζει την εκφυλιστή διάσταση ως διάσταση για σκοπούς υποβολής ερωτημάτων.
Από την πλευρά της σημασιολογίας του Power BI, μπορεί να δημιουργηθεί μια εκφυλιζόμενη διάσταση ως ξεχωριστός πίνακας χρησιμοποιώντας το Power Query. Με αυτόν τον τρόπο, το μοντέλο σημασιολογίας συμμορφώνεται με τη βέλτιστη πρακτική ότι τα πεδία που χρησιμοποιούνται για το φιλτράρισμα ή την ομαδοποίηση προέρχονται από πίνακες διαστάσεων και τα πεδία που χρησιμοποιούνται για τη σύνοψη στοιχείων προέρχονται από πίνακες δεδομένων.
Διαστάσεις εξωτερικού πίνακα
Όταν ένας πίνακας διαστάσεων σχετίζεται με άλλους πίνακες διαστάσεων, είναι γνωστός ως εξωτερική διάσταση. Μια διάσταση εξωτερικού στοιχείου μπορεί να βοηθήσει στη συμμόρφωση και την επαναχρησιμοποίηση ορισμών στο διαστατικό μοντέλο.
Για παράδειγμα, μπορείτε να δημιουργήσετε μια διάσταση γεωγραφικής τοποθεσίας που αποθηκεύει γεωγραφικές τοποθεσίες για κάθε ταχυδρομικό κώδικα. Στη συνέχεια, αυτή η διάσταση θα μπορούσε να αναφέρεται από τη διάσταση πελάτη και τον πωλητή σας, η οποία θα αποθήκευε το υποκατάστατο κλειδί της διάστασης γεωγραφικής τοποθεσίας. Με αυτόν τον τρόπο, οι πελάτες και πωλητές θα μπορούσαν τότε να αναλυθούν χρησιμοποιώντας συνεπείς γεωγραφικές τοποθεσίες.
Το παρακάτω διάγραμμα απεικονίζει μια Geography
διάσταση που είναι μια εξωτερική διάσταση. Δεν σχετίζεται απευθείας με τον Sales
πίνακα δεδομένων. Αντί για αυτό, σχετίζεται έμμεσα μέσω της διάστασης Customer
και της διάστασης Salesperson
.
Λάβετε υπόψη ότι η διάσταση ημερομηνίας μπορεί να χρησιμοποιηθεί ως διάσταση εξωτερικού όταν άλλα χαρακτηριστικά πίνακα διαστάσεων αποθηκεύουν ημερομηνίες. Για παράδειγμα, η ημερομηνία γέννησης σε μια διάσταση πελάτη θα μπορούσε να αποθηκευτεί χρησιμοποιώντας το υποκατάστατο κλειδί του πίνακα διαστάσεων ημερομηνίας.
Διαστάσεις πολλών τιμών
Όταν ένα χαρακτηριστικό διάστασης πρέπει να αποθηκεύει πολλές τιμές, πρέπει να σχεδιάσετε μια διάσταση πολλών τιμών. Υλοποιείτε μια πολλαπλή διάσταση δημιουργώντας έναν πίνακα γέφυρας (ορισμένες φορές ονομάζεται πίνακας σύνδεσης). Ένας πίνακας γέφυρας αποθηκεύει μια σχέση πολλά-προς-πολλά μεταξύ οντοτήτων.
Για παράδειγμα, εξετάστε ότι υπάρχει μια διάσταση πωλητή και ότι κάθε πωλητής αντιστοιχίζεται σε μία ή πιθανώς περισσότερες περιοχές πωλήσεων. Σε αυτή την περίπτωση, είναι λογικό να δημιουργήσετε μια διάσταση περιοχής πωλήσεων. Αυτή η διάσταση αποθηκεύει κάθε περιοχή πωλήσεων μόνο μία φορά. Ένας ξεχωριστός πίνακας, γνωστός ως πίνακας γέφυρας, αποθηκεύει μια γραμμή για κάθε σχέση πωλητή και περιοχής πωλήσεων. Φυσικά, υπάρχει μια σχέση ένα-προς-πολλά από τη διάσταση πωλητή στον πίνακα γέφυρας και μια άλλη σχέση ένα-προς-πολλά από τη διάσταση περιοχής πωλήσεων στον πίνακα γέφυρας. Λογικά, υπάρχει μια σχέση πολλά-προς-πολλά μεταξύ πωλητών και περιοχών πωλήσεων.
Στο παρακάτω διάγραμμα, ο Account
πίνακας διαστάσεων σχετίζεται με τον Transaction
πίνακα δεδομένων. Επειδή οι πελάτες μπορούν να έχουν πολλούς λογαριασμούς και οι λογαριασμοί μπορούν να έχουν πολλούς πελάτες, ο Customer
πίνακας διαστάσεων σχετίζεται μέσω του πίνακα γέφυρας Customer Account
.
Σχετικό περιεχόμενο
Στο επόμενο άρθρο αυτής της σειράς, μάθετε σχετικά με τις οδηγίες και τις βέλτιστες πρακτικές σχεδίασης για πίνακες δεδομένων.