Κοινοποίηση μέσω


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

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

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

Note

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Note

Ως εναλλακτική προσέγγιση, μπορείτε επίσης να εισαγάγετε τον τύπο try [Standard Rate] catch ()=> [Special Rate], ο οποίος ισοδυναμεί με τον προηγούμενο τύπο, αλλά χρησιμοποιώντας τη λέξη-κλειδί catch με μια συνάρτηση που δεν απαιτεί παραμέτρους.

Η catch λέξη-κλειδί παρουσιάστηκε στο Power Query τον Μάιο του 2022.

Παροχή της δικής σας λογικής σφαλμάτων υπό όρους

Χρησιμοποιώντας το ίδιο δείγμα προέλευσης δεδομένων με την προηγούμενη ενότητα, ο νέος στόχος είναι να δημιουργήσετε μια νέα στήλη για την τελική τιμή. Εάν υπάρχει η τιμή από την Τυπική Χρέωση , τότε χρησιμοποιείται αυτή η τιμή. Διαφορετικά χρησιμοποιείται η τιμή από τη στήλη Ειδική Τιμή , εκτός από τις σειρές με οποιοδήποτε #REF! σφάλμα.

Note

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

Όταν επιλέγετε οποιοδήποτε κενό διάστημα δίπλα στην τιμή σφάλματος, εμφανίζεται το παράθυρο λεπτομερειών στο κάτω μέρος της οθόνης. Το παράθυρο λεπτομερειών περιέχει τόσο την αιτία σφάλματος, όσο DataFormat.Errorκαι το μήνυμα σφάλματος, Invalid cell value '#REF!':

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

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

Χρήση try με προσαρμοσμένη λογική

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

Στιγμιότυπο οθόνης με ανοιχτό το παράθυρο διαλόγου Προσαρμοσμένη στήλη και έναν τύπο δοκιμής που έχει εισαχθεί στην προσαρμοσμένη στήλη.

Η try παράσταση μετατρέπει τιμές και σφάλματα σε μια τιμή εγγραφής που υποδεικνύει εάν η try παράσταση χειρίστηκε ένα σφάλμα ή όχι και την κατάλληλη τιμή ή την εγγραφή σφάλματος.

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

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

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

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

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

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

Για περαιτέρω διερεύνηση, μπορείτε να αναπτύξετε τη στήλη Όλα τα σφάλματα.Σφάλμα για να λάβετε τα τρία στοιχεία της καρτέλας σφάλματος:

  • Αιτία σφάλματος
  • Μήνυμα σφάλματος
  • Λεπτομέρεια σφάλματος

Αφού εκτελέσετε τη λειτουργία ανάπτυξης, το πεδίο All Errors.Error.Message εμφανίζει το συγκεκριμένο μήνυμα σφάλματος που σας λέει ακριβώς ποιο σφάλμα Excel έχει κάθε κελί. Το μήνυμα σφάλματος προέρχεται από το πεδίο Μήνυμα σφάλματος της εγγραφής σφάλματος.

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

Τώρα, με κάθε μήνυμα σφάλματος σε μια νέα στήλη, μπορείτε να δημιουργήσετε μια νέα στήλη υπό όρους με το όνομα Τελική τιμή και τους ακόλουθους όρους:

  • Εάν η τιμή στη στήλη All Errors.Error.Message ισούται nullμε , τότε η έξοδος είναι η τιμή από τη στήλη Standard Rate .
  • Διαφορετικά, εάν η τιμή στη στήλη All Errors.Error.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

Στιγμιότυπο οθόνης του παραθύρου διαλόγου προσαρμοσμένης στήλης με έναν νέο τύπο που παρουσιάζει την προσέγγιση δοκιμής και σύλληψης σύνταξης.