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

Παρόμοια με τον τρόπο που το 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 που θα χρησιμοποιεί τις τιμές από τη στήλη Standard Rate . Εάν υπάρχουν σφάλματα, τότε θα χρησιμοποιήσει την τιμή από τη στήλη «Ειδικό επιτόκιο» του ανταποκριτή.

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

Σε αυτή την περίπτωση, ο στόχος είναι να δημιουργήσετε μια νέα στήλη Final Rate στο δείγμα προέλευσης δεδομένων που θα χρησιμοποιήσει τις τιμές από τη στήλη Τυπικό επιτόκιο . Εάν υπάρχουν σφάλματα, τότε θα χρησιμοποιήσει την τιμή από την αντίστοιχη στήλη Special 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 παράσταση χειρίστηκε ένα σφάλμα ή όχι, καθώς και την κατάλληλη τιμή ή την εγγραφή σφάλματος.

Δοκιμάστε τιμές εγγραφής.

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

Στιγμιότυπο οθόνης της στήλης Όλα τα σφάλματα με έμφαση στο εικονίδιο ανάπτυξης και τα πλαίσια 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!'., τότε το αποτέλεσμα θα είναι η τιμή από τη στήλη Ειδικό επιτόκιο .
  • Διαφορετικά, 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.

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