Ανάγνωση στα Αγγλικά

Κοινή χρήση μέσω


Χειρισμός σφαλμάτων

Παρόμοια με τον τρόπο που το Excel και η γλώσσα DAX έχουν μια IFERROR συνάρτηση, το Power Query έχει τη δική του σύνταξη για να ελέγχει και να εντοπίζει σφάλματα.

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

Σημείωση

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

Το δείγμα προέλευσης δεδομένων για αυτή την επίδειξη είναι ένα βιβλίο εργασίας του Excel με τον παρακάτω πίνακα.

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

Αυτός ο πίνακας από ένα βιβλίο εργασίας του Excel έχει σφάλματα του Excel, όπως #NULL!, #REF!, και #DIV/0! στη στήλη Τυπική χρέωση . Κατά την εισαγωγή αυτού του πίνακα στο πρόγραμμα επεξεργασίας Power Query, η παρακάτω εικόνα δείχνει την εμφάνισή του.

Στιγμιότυπο οθόνης του δείγματος πίνακα που έχει φορτωθεί στο Power Query.

Παρατηρήστε πώς τα σφάλματα από το βιβλίο εργασίας του Excel εμφανίζονται με την [Error] τιμή σε καθένα από τα κελιά.

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

Παροχή εναλλακτικής τιμής κατά την εύρεση σφαλμάτων

Σε αυτήν την περίπτωση, ο στόχος είναι να δημιουργήσετε μια νέα στήλη Final Rate στο δείγμα προέλευσης δεδομένων που χρησιμοποιεί τις τιμές από τη στήλη Τυπικός ρυθμός . Εάν υπάρχουν σφάλματα, τότε χρησιμοποιεί την τιμή από την αντίστοιχη στήλη Ειδικό επιτόκιο .

Για να δημιουργήσετε μια νέα προσαρμοσμένη στήλη, μεταβείτε στο μενού Προσθήκη στήλης και επιλέξτε Προσαρμοσμένη στήλη. Στο παράθυρο Προσαρμοσμένη στήλη, πληκτρολογήστε τον τύπο try [Standard Rate] otherwise [Special Rate]. Ονομάστε αυτήν τη νέα στήλη Final Rate.

Στιγμιότυπο οθόνης με ανοιχτό το παράθυρο διαλόγου

Αυτός ο τύπος προσπαθεί να αξιολογήσει τη στήλη Τυπικός ρυθμός και εξάγει την τιμή της εάν δεν εντοπιστούν σφάλματα. Εάν εντοπιστούν σφάλματα στη στήλη Τυπικός ρυθμός , τότε το αποτέλεσμα είναι η τιμή που ορίζεται μετά την otherwise πρόταση, η οποία σε αυτή την περίπτωση είναι η στήλη Ειδικό επιτόκιο .

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

Στιγμιότυπο οθόνης του πίνακα με αντικατάσταση των σφαλμάτων τυπικής τιμής από την ειδική τιμή στη στήλη Final Rate.

Σημείωση

Ως εναλλακτική προσέγγιση, μπορείτε επίσης να εισαγάγετε τον τύπο 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 παράσταση χειρίστηκε ένα σφάλμα ή όχι και την κατάλληλη τιμή ή την εγγραφή σφάλματος.

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

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

Στιγμιότυπο οθόνης της στήλης Όλα τα σφάλματα με έμφαση στο εικονίδιο ανάπτυξης και τα πλαίσια HasError, Value και Error επιλεγμένα.

Αυτή η λειτουργία εμφανίζει τρία νέα πεδία:

  • All Errors.HasError— εμφανίζει εάν η τιμή από τη στήλη Τυπικός ρυθμός παρουσίασε σφάλμα ή όχι.
  • All Errors.Value— εάν η τιμή από τη στήλη Τυπική χρέωση δεν παρουσίασε σφάλμα, αυτή η στήλη εμφανίζει την τιμή από τη στήλη Τυπικός ρυθμός . Για τιμές με σφάλματα αυτό το πεδίο δεν είναι διαθέσιμο και κατά τη διάρκεια της λειτουργίας ανάπτυξης αυτή η στήλη έχει null τιμές.
  • All Errors.Error— εάν η τιμή από τη στήλη Τυπική χρέωση παρουσίασε σφάλμα, αυτή η στήλη εμφανίζει την εγγραφή σφάλματος για την τιμή από τη στήλη Τυπικός ρυθμός . Για τιμές χωρίς σφάλματα, αυτό το πεδίο δεν είναι διαθέσιμο και κατά τη διάρκεια της λειτουργίας ανάπτυξης αυτή η στήλη έχει null τιμές.

Στιγμιότυπο οθόνης του πίνακα με τα νέα πεδία σε στήλες, με επιλεγμένη μία τιμή All.Errors.Error και που εμφανίζει τα μηνύματα σφάλματος κάτω από τον πίνακα.

Για περαιτέρω διερεύνηση, μπορείτε να αναπτύξετε τη στήλη 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

Παράθυρο διαλόγου προσαρμοσμένης στήλης με έναν νέο τύπο που παρουσιάζει την προσέγγιση της σύνταξης try and catch.

Περισσότεροι πόροι