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