Χειρισμός σφαλμάτων
Παρόμοια με τον τρόπο που το Excel και η γλώσσα DAX έχουν μια IFERROR
συνάρτηση, το Power Query έχει τη δική του σύνταξη για να ελέγχει και να εντοπίζει σφάλματα.
Όπως αναφέρθηκε στο άρθρο σχετικά με την αντιμετώπιση σφαλμάτων στο Power Query, τα σφάλματα μπορεί να εμφανίζονται είτε σε επίπεδο βήματος είτε σε επίπεδο κελιού. Αυτό το άρθρο εστιάζει στον τρόπο με τον οποίο μπορείτε να ενλάβετε και να διαχειριστείτε σφάλματα με βάση τη δική σας συγκεκριμένη λογική.
Σημείωμα
Για να επιδείξετε αυτήν την έννοια, αυτό το άρθρο χρησιμοποιεί ένα βιβλίο εργασίας του Excel ως προέλευση δεδομένων του. Οι έννοιες που παρουσιάζονται εδώ ισχύουν για όλες τις τιμές στο Power Query και όχι μόνο για εκείνες που προέρχονται από ένα βιβλίο εργασίας του Excel.
Το δείγμα προέλευσης δεδομένων για αυτή την επίδειξη είναι ένα βιβλίο εργασίας του Excel με τον παρακάτω πίνακα.
Αυτός ο πίνακας από ένα βιβλίο εργασίας του Excel έχει σφάλματα του Excel, όπως #NULL!, #REF!, και #DIV/0! στη στήλη Τυπική χρέωση . Κατά την εισαγωγή αυτού του πίνακα στο πρόγραμμα επεξεργασίας Power Query, η παρακάτω εικόνα δείχνει την εμφάνισή του.
Παρατηρήστε πώς τα σφάλματα από το βιβλίο εργασίας του Excel εμφανίζονται με την [Error]
τιμή σε καθένα από τα κελιά.
Σε αυτό το άρθρο, θα μάθετε πώς μπορείτε να αντικαταστήσετε ένα σφάλμα με μια άλλη τιμή. Επιπλέον, θα μάθετε επίσης πώς μπορείτε να λάβετε ένα σφάλμα και να το χρησιμοποιήσετε για τη δική σας συγκεκριμένη λογική.
Παροχή εναλλακτικής τιμής κατά την εύρεση σφαλμάτων
Σε αυτήν την περίπτωση, ο στόχος είναι να δημιουργήσετε μια νέα στήλη Final Rate στο δείγμα προέλευσης δεδομένων που χρησιμοποιεί τις τιμές από τη στήλη Τυπικός ρυθμός . Εάν υπάρχουν σφάλματα, τότε χρησιμοποιεί την τιμή από την αντίστοιχη στήλη Ειδικό επιτόκιο .
Για να δημιουργήσετε μια νέα προσαρμοσμένη στήλη, μεταβείτε στο μενού Προσθήκη στήλης και επιλέξτε Προσαρμοσμένη στήλη. Στο παράθυρο Προσαρμοσμένη στήλη, πληκτρολογήστε τον τύπο try [Standard Rate] otherwise [Special Rate]
. Ονομάστε αυτήν τη νέα στήλη Final Rate.
Αυτός ο τύπος προσπαθεί να αξιολογήσει τη στήλη Τυπικός ρυθμός και εξάγει την τιμή της εάν δεν εντοπιστούν σφάλματα. Εάν εντοπιστούν σφάλματα στη στήλη Τυπικός ρυθμός , τότε το αποτέλεσμα είναι η τιμή που ορίζεται μετά την otherwise
πρόταση, η οποία σε αυτή την περίπτωση είναι η στήλη Ειδικό επιτόκιο .
Αφού προσθέσετε τους σωστούς τύπους δεδομένων σε όλες τις στήλες του πίνακα, η παρακάτω εικόνα δείχνει πώς θα εμφανίζεται ο τελικός πίνακας.
Σημείωμα
Ως εναλλακτική προσέγγιση, μπορείτε επίσης να εισαγάγετε τον τύπο try [Standard Rate] catch ()=> [Special Rate]
, ο οποίος ισοδυναμεί με τον προηγούμενο τύπο, αλλά χρησιμοποιώντας τη λέξη-κλειδί catch με μια συνάρτηση που δεν απαιτεί παραμέτρους.
Η catch
λέξη-κλειδί παρουσιάστηκε στο Power Query τον Μάιο του 2022.
Παροχή της δικής σας λογικής σφαλμάτων υπό όρους
Χρησιμοποιώντας το ίδιο δείγμα προέλευσης δεδομένων με την προηγούμενη ενότητα, ο νέος στόχος είναι να δημιουργήσετε μια νέα στήλη για την Τελική τιμή. Εάν η τιμή από την τυπική τιμή υπάρχει, τότε χρησιμοποιείται αυτή η τιμή. Διαφορετικά, χρησιμοποιείται η τιμή από τη στήλη Special Rate , εκτός από τις γραμμές με οποιοδήποτε #REF!
σφάλμα.
Σημείωμα
Μοναδικός σκοπός της εξαίρεσης του #REF!
σφάλματος είναι η επίδειξη. Με τις έννοιες που παρουσιάζονται σε αυτό το άρθρο, μπορείτε να στοχεύσετε οποιαδήποτε πεδία της επιλογής σας από την εγγραφή σφάλματος.
Όταν επιλέγετε οποιοδήποτε από τα κενά διαστήματα δίπλα στην τιμή σφάλματος, λαμβάνετε το τμήμα παραθύρου λεπτομερειών στο κάτω μέρος της οθόνης. Το παράθυρο λεπτομερειών περιέχει τόσο την αιτία σφάλματος, όσο DataFormat.Error
και το μήνυμα σφάλματος, Invalid cell value '#REF!'
:
Μπορείτε να επιλέξετε μόνο ένα κελί κάθε φορά, ώστε να μπορείτε να εξετάζετε αποτελεσματικά μόνο τα στοιχεία σφάλματος μίας τιμής σφάλματος κάθε φορά. Σε αυτό το σημείο δημιουργείτε μια νέα προσαρμοσμένη στήλη και χρησιμοποιείτε την try
παράσταση.
Χρήση try
με προσαρμοσμένη λογική
Για να δημιουργήσετε μια νέα προσαρμοσμένη στήλη, μεταβείτε στο μενού Προσθήκη στήλης και επιλέξτε Προσαρμοσμένη στήλη. Στο παράθυρο Προσαρμοσμένη στήλη, πληκτρολογήστε τον τύπο try [Standard Rate]
. Ονομάστε αυτήν τη νέα στήλη Όλα τα σφάλματα.
Η try
παράσταση μετατρέπει τιμές και σφάλματα σε μια τιμή εγγραφής που υποδεικνύει εάν η try
παράσταση χειρίστηκε ένα σφάλμα ή όχι και την κατάλληλη τιμή ή την εγγραφή σφάλματος.
Μπορείτε να αναπτύξετε αυτήν τη στήλη που μόλις δημιουργήθηκε με τιμές εγγραφής και να εξετάσετε τα διαθέσιμα πεδία για ανάπτυξη, επιλέγοντας το εικονίδιο δίπλα στην κεφαλίδα της στήλης.
Αυτή η λειτουργία εμφανίζει τρία νέα πεδία:
- All Errors.HasError— εμφανίζει εάν η τιμή από τη στήλη Τυπικός ρυθμός παρουσίασε σφάλμα ή όχι.
- All Errors.Value— εάν η τιμή από τη στήλη Τυπική χρέωση δεν παρουσίασε σφάλμα, αυτή η στήλη εμφανίζει την τιμή από τη στήλη Τυπικός ρυθμός . Για τιμές με σφάλματα αυτό το πεδίο δεν είναι διαθέσιμο και κατά τη διάρκεια της λειτουργίας ανάπτυξης αυτή η στήλη έχει
null
τιμές. - All Errors.Error— εάν η τιμή από τη στήλη Τυπική χρέωση παρουσίασε σφάλμα, αυτή η στήλη εμφανίζει την εγγραφή σφάλματος για την τιμή από τη στήλη Τυπικός ρυθμός . Για τιμές χωρίς σφάλματα, αυτό το πεδίο δεν είναι διαθέσιμο και κατά τη διάρκεια της λειτουργίας ανάπτυξης αυτή η στήλη έχει
null
τιμές.
Για περαιτέρω διερεύνηση, μπορείτε να αναπτύξετε τη στήλη All Errors.Error για να λάβετε τα τρία στοιχεία της εγγραφής σφάλματος:
- Αιτία σφάλματος
- Μήνυμα σφάλματος
- Λεπτομέρεια σφάλματος
Μετά την πραγματοποίηση της λειτουργίας ανάπτυξης, το πεδίο All Errors.Error.Message εμφανίζει το συγκεκριμένο μήνυμα σφάλματος που σας ενημερώνει ακριβώς για το σφάλμα του Excel που παρουσιάζει κάθε κελί. Το μήνυμα σφάλματος προέρχεται από το πεδίο Μήνυμα σφάλματος της εγγραφής σφάλματος.
Τώρα, με κάθε μήνυμα σφάλματος σε μια νέα στήλη, μπορείτε να δημιουργήσετε μια νέα στήλη υπό όρους με το όνομα Τελικό ποσοστό και τους ακόλουθους όρους:
- Εάν η τιμή στη στήλη All Errors.Errors.Message ισούται με
null
, τότε το αποτέλεσμα είναι η τιμή από τη στήλη Τυπικός ρυθμός . - Διαφορετικά, εάν η τιμή στη στήλη All Errors.Errors.Message δεν ισούται με
Invalid cell value '#REF!'.
, τότε το αποτέλεσμα είναι η τιμή από τη στήλη Special Rate . - Διαφορετικά, null.
Αφού διατηρήσετε μόνο τις στήλες Λογαριασμός, Τυπικός ρυθμός, Ειδικό επιτόκιο και Τελικό επιτόκιο και προσθέσετε τον σωστό τύπο δεδομένων για κάθε στήλη, η παρακάτω εικόνα δείχνει πώς μοιάζει ο τελικός πίνακας.
Χρήση try
και catch
με προσαρμοσμένη λογική
Εναλλακτικά, μπορείτε επίσης να δημιουργήσετε μια νέα προσαρμοσμένη στήλη χρησιμοποιώντας τις try
λέξεις-κλειδιά και catch
.
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null