Όταν μαθαίνουν για πρώτη φορά πώς να χρησιμοποιούν το Power Pivot, οι περισσότεροι χρήστες ανακαλύπτουν ότι η πραγματική ισχύς είναι η συνάθροιση ή ο υπολογισμός ενός αποτελέσματος με κάποιο τρόπο. Εάν τα δεδομένα σας έχουν μια στήλη με αριθμητικές τιμές, μπορείτε εύκολα να τα συγκεντρώσετε επιλέγοντάς τα σε έναν Συγκεντρωτικό Πίνακα ή στη Λίστα πεδίων του Power View. Από τη φύση του, επειδή είναι αριθμητική, αθροίζεται αυτόματα, υπολογίζεται, υπολογίζεται ή οποιοσδήποτε τύπος συνάθροισης επιλέγετε. Αυτό είναι γνωστό ως έμμεσο μέτρο. Οι σιωπηρές μετρήσεις είναι ιδανικές για γρήγορη και εύκολη συνάθροιση, αλλά έχουν όρια και αυτά τα όρια μπορούν σχεδόν πάντα να ξεπεραστούν με ρητές μετρήσεις και υπολογιζόμενες στήλες.
Ας δούμε πρώτα ένα παράδειγμα όπου χρησιμοποιούμε μια υπολογιζόμενη στήλη για να προσθέσουμε μια νέα τιμή κειμένου για κάθε γραμμή σε έναν πίνακα με το όνομα "Προϊόν". Κάθε γραμμή στον πίνακα "Προϊόν" περιέχει κάθε είδους πληροφορίες σχετικά με κάθε προϊόν που πουλάμε. Έχουμε στήλες για όνομα προϊόντος, χρώμα, μέγεθος, τιμή εμπόρου κ.λπ.. Έχουμε έναν άλλο σχετικό πίνακα με το όνομα "Κατηγορία προϊόντος" που περιέχει μια στήλη ProductCategoryName. Αυτό που θέλουμε είναι κάθε προϊόν στον πίνακα "Προϊόν" να συμπεριλάβει το όνομα της κατηγορίας προϊόντος από τον πίνακα "Κατηγορία προϊόντων". Στον πίνακα "Προϊόν", μπορούμε να δημιουργήσουμε μια υπολογιζόμενη στήλη με το όνομα Κατηγορία προϊόντος ως εξής:
Ο νέος τύπος κατηγορίας προϊόντων χρησιμοποιεί τη συνάρτηση RELATED DAX για να λάβει τιμές από τη στήλη ProductCategoryName στον σχετικό πίνακα κατηγορίας προϊόντων και, στη συνέχεια, εισάγει αυτές τις τιμές για κάθε προϊόν (κάθε γραμμή) στον πίνακα "Προϊόν".
Αυτό είναι ένα εξαιρετικό παράδειγμα του τρόπου με τον οποίο μπορούμε να χρησιμοποιήσουμε μια υπολογιζόμενη στήλη για να προσθέσουμε μια σταθερή τιμή για κάθε γραμμή που μπορούμε να χρησιμοποιήσουμε αργότερα στην περιοχή ROWS, COLUMNS ή FILTERS του Συγκεντρωτικού Πίνακα ή σε μια αναφορά του Power View.
Ας δημιουργήσουμε ένα άλλο παράδειγμα όπου θέλουμε να υπολογίσουμε ένα περιθώριο κέρδους για τις κατηγορίες προϊόντων μας. Αυτό είναι ένα συνηθισμένο σενάριο, ακόμη και σε πολλά προγράμματα εκμάθησης. Έχουμε έναν πίνακα "Πωλήσεις" στο μοντέλο δεδομένων μας που περιέχει δεδομένα συναλλαγών και υπάρχει μια σχέση μεταξύ του πίνακα "Πωλήσεις" και του πίνακα "Κατηγορία προϊόντων". Στον πίνακα Πωλήσεις, έχουμε μια στήλη που έχει ποσά πωλήσεων και μια άλλη στήλη με κόστος.
Μπορούμε να δημιουργήσουμε μια υπολογιζόμενη στήλη που υπολογίζει ένα ποσό κέρδους για κάθε γραμμή αφαιρώντας τιμές στη στήλη COGS από τις τιμές της στήλης SalesAmount, ως εξής:
Τώρα, μπορούμε να δημιουργήσουμε έναν Συγκεντρωτικό Πίνακα και να σύρετε το πεδίο Κατηγορία προϊόντος στις ΣΤΗΛΕΣ και το νέο μας πεδίο Κέρδος στην περιοχή ΤΙΜΕΣ (μια στήλη σε έναν πίνακα στο PowerPivot είναι ένα πεδίο στη λίστα πεδίων του Συγκεντρωτικού Πίνακα). Το αποτέλεσμα είναι μια έμμεση μέτρηση με το όνομα Άθροισμα κέρδους. Είναι ένα συγκεντρωτικό ποσό τιμών από τη στήλη κέρδους για κάθε μία από τις διαφορετικές κατηγορίες προϊόντων. Το αποτέλεσμα μοιάζει κάπως έτσι:
Σε αυτή την περίπτωση, το όρισμα κέρδος έχει νόημα μόνο ως πεδίο στις ΤΙΜΕς. Εάν επρόκειτο να τοποθετήσουμε το κέρδος στην περιοχή ΣΤΗΛΕΣ, ο Συγκεντρωτικός Πίνακας θα είχε την εξής μορφή:
Το πεδίο Κέρδος δεν παρέχει χρήσιμες πληροφορίες όταν τοποθετείται σε περιοχές ΣΤΗΛΕΣ, ΣΕΡΙΕΣ ή ΦΙΛΤΡΑ. Έχει νόημα μόνο ως συγκεντρωτική τιμή στην περιοχή VALUES.
Αυτό που κάναμε είναι να δημιουργήσουμε μια στήλη με το όνομα Κέρδος που υπολογίζει ένα περιθώριο κέρδους για κάθε γραμμή στον πίνακα "Πωλήσεις". Στη συνέχεια, προσθέσαμε το στοιχείο Κέρδος στην περιοχή ΤΙΜΕΣ του Συγκεντρωτικού Πίνακα, δημιουργώντας αυτόματα μια έμμεση μέτρηση, όπου υπολογίζεται ένα αποτέλεσμα για κάθε μία από τις κατηγορίες προϊόντων. Εάν πιστεύετε ότι υπολογίσαμε πραγματικά το κέρδος για τις κατηγορίες προϊόντων μας δύο φορές, έχετε δίκιο. Υπολογίσαμε πρώτα ένα κέρδος για κάθε γραμμή στον πίνακα "Πωλήσεις" και, στη συνέχεια, προσθέσαμε το στοιχείο Κέρδος στην περιοχή ΤΙΜΕΣ όπου συναθροίστηκε για κάθε μία από τις κατηγορίες προϊόντων. Εάν πιστεύετε επίσης ότι δεν χρειαζόταν πραγματικά να δημιουργήσουμε την υπολογιζόμενη στήλη Κέρδος, έχετε επίσης δίκιο. Ωστόσο, πώς υπολογίζουμε τότε το κέρδος μας χωρίς να δημιουργήσουμε μια υπολογιζόμενη στήλη Κέρδους;
Κέρδος, θα ήταν πραγματικά καλύτερα να υπολογιστεί ως ρητό μέτρο.
Προς το παρόν, θα αφήσουμε την υπολογιζόμενη στήλη "Κέρδος" στον πίνακα "Πωλήσεις" και την "Κατηγορία προϊόντος" στις στήλες "ΣΤΗΛΕΣ" και "Κέρδος" στις ΤΙΜΈς του Συγκεντρωτικού Πίνακα, για να συγκρίνουμε τα αποτελέσματά μας.
Στην περιοχή υπολογισμού του πίνακα "Πωλήσεις", θα δημιουργήσουμε μια μέτρηση με το όνομα Total Profit(για να αποφύγετε διενέξεις ονοματοθεσιών). Στο τέλος, θα αποφέρει τα ίδια αποτελέσματα με αυτά που είχαμε προηγουμένως, αλλά χωρίς μια υπολογιζόμενη στήλη Κέρδος.
Πρώτα, στον πίνακα "Πωλήσεις", επιλέγουμε τη στήλη "Ποσό_πωλήσεων" και, στη συνέχεια, κάντε κλικ στην επιλογή Αυτόματη Άθροιση για να δημιουργήσετε μια ρητή μέτρηση " Ποσό_πωλήσεων". Να θυμάστε ότι δημιουργείται ρητή μέτρηση στην περιοχή υπολογισμού ενός πίνακα στο Power Pivot. Κάνουμε το ίδιο για τη στήλη COGS. Θα μετονομάσουμε αυτά τα Total SalesAmount και Total COGS για να είναι πιο εύκολο να προσδιοριστούν.
Στη συνέχεια, δημιουργούμε μια άλλη μέτρηση με αυτόν τον τύπο:
Συνολικό κέρδος:=[ Συνολικό ποσό_πωλήσεων] - [Συνολικό COGS]
Σημείωση: Θα μπορούσαμε επίσης να γράψουμε τον τύπο μας ως Total Profit:=SUM([SalesAmount]) - SUM([COGS]), αλλά δημιουργώντας ξεχωριστές μετρήσεις Total SalesAmount και Total COGS, μπορούμε να τους χρησιμοποιήσουμε και στον Συγκεντρωτικό Πίνακά μας και μπορούμε να τους χρησιμοποιήσουμε ως ορίσματα σε κάθε είδους άλλους τύπους μέτρησης.
Αφού αλλάξετε τη μορφή της νέας μέτρησης συνολικού κέρδους σε νομισματική μονάδα, μπορούμε να την προσθέσουμε στον Συγκεντρωτικό Πίνακά μας.
Μπορείτε να δείτε ότι η νέα μέτρηση "Συνολικό κέρδος" επιστρέφει τα ίδια αποτελέσματα με τη δημιουργία μιας υπολογιζόμενης στήλης Κέρδους και, στη συνέχεια, την τοποθέτησή της στις ΤΙΜΕΣ. Η διαφορά είναι ότι η μέτρηση του συνολικού κέρδους είναι πολύ πιο αποτελεσματική και κάνει το μοντέλο δεδομένων μας πιο καθαρό και πιο λιτό, επειδή υπολογίζουμε εκείνη τη στιγμή και μόνο για τα πεδία που επιλέγουμε για τον Συγκεντρωτικό Πίνακά μας. Δεν χρειαζόμαστε πραγματικά αυτή τη υπολογιζόμενη στήλη Κέρδος.
Γιατί είναι σημαντικό αυτό το τελευταίο μέρος; Οι υπολογιζόμενες στήλες προσθέτουν δεδομένα στο μοντέλο δεδομένων και τα δεδομένα καταλαμβάνουν μνήμη. Εάν ανανεώσουμε το μοντέλο δεδομένων, απαιτούνται επίσης πόροι επεξεργασίας για τον επανυπολογισμό όλων των τιμών στη στήλη Κέρδος. Δεν χρειάζεται πραγματικά να καταλαμβάνουμε πόρους όπως αυτός, επειδή θέλουμε πραγματικά να υπολογίσουμε το κέρδος μας όταν επιλέγουμε τα πεδία για τα οποία θέλουμε το Κέρδος στον Συγκεντρωτικό Πίνακα, όπως κατηγορίες προϊόντων, περιοχή ή ημερομηνίες.
Ας δούμε ένα άλλο παράδειγμα. Μία στήλη όπου μια υπολογιζόμενη στήλη δημιουργεί αποτελέσματα που με την πρώτη ματιά φαίνονται σωστά, αλλά....
Σε αυτό το παράδειγμα, θέλουμε να υπολογίσουμε ποσά πωλήσεων ως ποσοστό των συνολικών πωλήσεων. Δημιουργούμε μια υπολογιζόμενη στήλη με το όνομα % των πωλήσεων στον πίνακα "Πωλήσεις", ως εξής:
Ο τύπος μας αναφέρει: Για κάθε γραμμή στον πίνακα "Πωλήσεις", διαιρέστε το ποσό στη στήλη "Ποσό_πωλήσεων" με το σύνολο SUM όλων των ποσών στη στήλη "Ποσό_πωλήσεων".
Εάν δημιουργήσουμε έναν Συγκεντρωτικό Πίνακα και προσθέσουμε την Κατηγορία προϊόντος σε ΣΤΗΛΕΣ και επιλέξουμε τη νέα στήλη % των πωλήσεων για να την τοποθετήσουμε στην τιμή VALUES, θα λάβουμε ένα συνολικό άθροισμα % των πωλήσεων για κάθε μία από τις κατηγορίες προϊόντων μας.
Ok. Αυτό φαίνεται καλό μέχρι στιγμής. Αλλά, ας προσθέσουμε έναν αναλυτή. Προσθέτουμε το Ημερολογιακό έτος και, στη συνέχεια, επιλέγουμε ένα έτος. Σε αυτή την περίπτωση, επιλέγουμε 2007. Αυτό παίρνουμε.
Με την πρώτη ματιά, αυτό μπορεί να εξακολουθεί να φαίνεται σωστό. Ωστόσο, τα ποσοστά μας θα πρέπει στην πραγματικότητα να είναι συνολικά 100%, επειδή θέλουμε να γνωρίζουμε το ποσοστό των συνολικών πωλήσεων για κάθε μία από τις κατηγορίες προϊόντων μας για το 2007. Λοιπόν, τι πήγε στραβά;
Η στήλη " % των πωλήσεων" υπολόγισε ένα ποσοστό για κάθε γραμμή που είναι η τιμή στη στήλη "Ποσό_πωλήσεων" διαιρούμενη με το άθροισμα όλων των τιμών της στήλης "Ποσό_πωλήσεων". Οι τιμές σε μια υπολογιζόμενη στήλη είναι σταθερές. Είναι ένα αμετάβλητο αποτέλεσμα για κάθε γραμμή στον πίνακα. Όταν προσθέσαμε το ποσοστό πωλήσεων στον Συγκεντρωτικό Πίνακά μας, αθροίστηκε ως άθροισμα όλων των τιμών στη στήλη "Ποσό_πωλήσεων". Αυτό το άθροισμα όλων των τιμών στη στήλη % των πωλήσεων θα είναι πάντα 100%.
Συμβουλή: Φροντίστε να διαβάσετε το περιβάλλον στους τύπους DAX. Παρέχει μια καλή κατανόηση του περιβάλλοντος σε επίπεδο γραμμής και του περιβάλλοντος φίλτρου, το οποίο είναι αυτό που περιγράφουμε εδώ.
Μπορούμε να διαγράψουμε την υπολογιζόμενη στήλη % πωλήσεων, επειδή δεν πρόκειται να μας βοηθήσει. Αντί για αυτό, πρόκειται να δημιουργήσουμε μια μέτρηση που υπολογίζει σωστά το ποσοστό των συνολικών πωλήσεων, ανεξάρτητα από τυχόν φίλτρα ή αναλυτές που έχουν εφαρμοστεί.
Θυμάστε τη μέτρηση TotalSalesAmount που δημιουργήσαμε νωρίτερα, αυτή που απλώς αθροίζει τη στήλη "Ποσό_πωλήσεων"; Το χρησιμοποιήσαμε ως επιχείρημα στο μέτρο "Συνολικό κέρδος" και θα το χρησιμοποιήσουμε ξανά ως όρισμα στο νέο πεδίο υπολογισμού.
Συμβουλή: Η δημιουργία ρητών μέτρων όπως το Total SalesAmount και το Total COGS δεν είναι μόνο χρήσιμη σε έναν Συγκεντρωτικό Πίνακα ή αναφορά, αλλά είναι επίσης χρήσιμη ως ορίσματα σε άλλες μετρήσεις όταν χρειάζεστε το αποτέλεσμα ως όρισμα. Αυτό κάνει τους τύπους σας πιο αποτελεσματικούς και πιο ευανάγνωστες. Αυτή είναι μια καλή πρακτική μοντελοποίησης δεδομένων.
Δημιουργούμε μια νέα μέτρηση με τον παρακάτω τύπο:
% των συνολικών πωλήσεων:=([Συνολικό ποσό_πωλήσεων]) / CALCULATE([Συνολικό ποσό_πωλήσεων]; ALLSELECTED())
Αυτός ο τύπος αναφέρει: Διαίρεση του αποτελέσματος από το άθροισμα Total SalesAmount με το άθροισμα του ποσού salesAmount χωρίς φίλτρα στήλης ή γραμμής εκτός αυτών που ορίζονται στον Συγκεντρωτικό Πίνακα.
Συμβουλή: Βεβαιωθείτε ότι έχετε διαβάσει σχετικά με τις συναρτήσεις CALCULATE και ALLSELECTED στην αναφορά DAX.
Τώρα, εάν προσθέσουμε το νέο % των συνολικών πωλήσεων στον Συγκεντρωτικό Πίνακα, θα λάβουμε:
Αυτό φαίνεται καλύτερο. Τώρα, το ποσοστό των συνολικών πωλήσεων για κάθε κατηγορία προϊόντων υπολογίζεται ως ποσοστό των συνολικών πωλήσεων για το έτος 2007. Εάν επιλέξουμε ένα διαφορετικό έτος ή περισσότερο από ένα έτος στον αναλυτή CalendarYear, θα λάβουμε νέα ποσοστά για τις κατηγορίες προϊόντων μας, αλλά το γενικό άθροισμα εξακολουθεί να είναι 100%. Μπορούμε να προσθέσουμε και άλλους αναλυτές και φίλτρα. Η μέτρηση % των συνολικών πωλήσεων θα παράγει πάντα ένα ποσοστό των συνολικών πωλήσεων ανεξάρτητα από τυχόν αναλυτές ή φίλτρα που έχουν εφαρμοστεί. Με τις μετρήσεις, το αποτέλεσμα υπολογίζεται πάντα σύμφωνα με το περιβάλλον που καθορίζεται από τα πεδία στις στήλες COLUMNS και ROWS και από τυχόν φίλτρα ή αναλυτές που εφαρμόζονται. Αυτή είναι η δύναμη των μέτρων.
Ακολουθούν ορισμένες οδηγίες που θα σας βοηθήσουν όταν αποφασίζετε εάν μια υπολογιζόμενη στήλη ή μια μέτρηση είναι κατάλληλη για μια συγκεκριμένη ανάγκη υπολογισμού:
Χρήση υπολογιζόμενων στηλών
-
Εάν θέλετε τα νέα δεδομένα σας να εμφανίζονται στις ΓΡΑΜΜΈς, ΤΙς ΣΤΗΛΕΣ ή στα ΦΙΛΤΡΑ ενός Συγκεντρωτικού Πίνακα ή σε έναν ΆΞΟΝΑ, ΥΠΟΜΝΗΣΗ ή, ΠΛΑΚΙΔΙΟ ΚΑΤΑ σε μια απεικόνιση του Power View, πρέπει να χρησιμοποιήσετε μια υπολογιζόμενη στήλη. Όπως ακριβώς και οι κανονικές στήλες δεδομένων, οι υπολογιζόμενες στήλες μπορούν να χρησιμοποιηθούν ως πεδίο σε οποιαδήποτε περιοχή και, εάν είναι αριθμητικές, μπορούν να συναθροιστούν και στις ΤΙΜΕΣ.
-
Εάν θέλετε τα νέα δεδομένα σας να είναι μια σταθερή τιμή για τη γραμμή. Για παράδειγμα, έχετε έναν πίνακα ημερομηνιών με μια στήλη ημερομηνιών και θέλετε μια άλλη στήλη που να περιέχει μόνο τον αριθμό του μήνα. Μπορείτε να δημιουργήσετε μια υπολογιζόμενη στήλη που υπολογίζει μόνο τον αριθμό μήνα από τις ημερομηνίες στη στήλη Ημερομηνία. Για παράδειγμα, =MONTH('Date'[Date]).
-
Εάν θέλετε να προσθέσετε μια τιμή κειμένου για κάθε γραμμή σε έναν πίνακα, χρησιμοποιήστε μια υπολογιζόμενη στήλη. Τα πεδία με τιμές κειμένου δεν μπορούν ποτέ να συναθροιστούν στις ΤΙΜΕς. Για παράδειγμα, ο τύπος =FORMAT('Date'[Date],"mmmm") μας δίνει το όνομα του μήνα για κάθε ημερομηνία στη στήλη "Ημερομηνία" στον πίνακα "Ημερομηνία".
Μετρήσεις χρήσης
-
Εάν το αποτέλεσμα του υπολογισμού σας θα εξαρτάται πάντα από τα άλλα πεδία που επιλέγετε σε έναν Συγκεντρωτικό Πίνακα.
-
Εάν πρέπει να κάνετε πιο σύνθετους υπολογισμούς, όπως να υπολογίσετε ένα πλήθος με βάση κάποιο φίλτρο ή να υπολογίσετε ένα πεδίο υπολογισμού από έτος σε έτος ή διακύμανση, χρησιμοποιήστε ένα πεδίο υπολογισμού.
-
Εάν θέλετε να διατηρήσετε το μέγεθος του βιβλίου εργασίας στο ελάχιστο και να μεγιστοποιήσετε τις επιδόσεις του, δημιουργήστε όσο το δυνατόν περισσότερους από τους υπολογισμούς σας με όσο το δυνατόν περισσότερες μετρήσεις. Σε πολλές περιπτώσεις, όλοι οι υπολογισμοί σας μπορεί να είναι μετρήσεις, μειώνοντας σημαντικά το μέγεθος του βιβλίου εργασίας και επιταχύνοντας το χρόνο ανανέωσης.
Μην ξεχνάτε ότι δεν υπάρχει κάποιο πρόβλημα με τη δημιουργία υπολογιζόμενων στηλών, όπως κάναμε με τη στήλη "Κέρδος" και, στη συνέχεια, συνάθροισή τους σε έναν Συγκεντρωτικό Πίνακα ή μια αναφορά. Είναι στην πραγματικότητα ένας πολύ καλός και εύκολος τρόπος για να μάθετε και να δημιουργήσετε τους δικούς σας υπολογισμούς. Καθώς αναπτύσσεται η κατανόησή σας για αυτές τις δύο εξαιρετικά ισχυρές δυνατότητες του Power Pivot, θα θέλετε να δημιουργήσετε το πιο αποτελεσματικό και ακριβές μοντέλο δεδομένων που μπορείτε. Ας ελπίσουμε ότι αυτά που μάθατε εδώ βοηθούν. Υπάρχουν μερικοί άλλοι πραγματικά εξαιρετικοί πόροι εκεί έξω που μπορούν να σας βοηθήσουν επίσης. Ακολουθούν μερικά μόνο: Περιβάλλον σε τύπους DAX, συναθροίσεις στο Power Pivot και Κέντρο πόρων DAX. Και, ενώ είναι λίγο πιο προηγμένη και απευθύνεται σε επαγγελματίες λογιστικής και οικονομικούς, η μοντελοποίηση και ανάλυση δεδομένων κέρδους και ζημίας με το δείγμα του Microsoft Power Pivot στο Excel φορτώνεται με εξαιρετικά παραδείγματα μοντελοποίησης δεδομένων και τύπων.