Bagikan melalui


Penanganan kesalahan

Mirip dengan bagaimana Excel dan bahasa DAX memiliki IFERROR fungsi, Power Query memiliki sintaksnya sendiri untuk menguji dan menangkap kesalahan.

Seperti disebutkan dalam artikel tentang menangani kesalahan di Power Query, kesalahan bisa muncul baik di langkah atau tingkat sel. Artikel ini berfokus pada bagaimana Anda dapat menangkap dan mengelola kesalahan berdasarkan logika spesifik Anda sendiri.

Nota

Untuk menunjukkan konsep ini, artikel ini menggunakan Buku Kerja Excel sebagai sumber datanya. Konsep yang diperlihatkan di sini berlaku untuk semua nilai di Power Query dan tidak hanya yang berasal dari Buku Kerja Excel.

Contoh sumber data untuk demonstrasi ini adalah Buku Kerja Excel dengan tabel berikut.

Cuplikan layar data sampel dari buku kerja Excel yang berisi tiga kesalahan.

Tabel dari Buku Kerja Excel ini memiliki kesalahan Excel seperti #NULL!, #REF!, dan #DIV/0! di kolom Tarif Standar . Saat Anda mengimpor tabel ini ke editor Power Query, gambar berikut ini memperlihatkan tampilannya.

Cuplikan layar tabel sampel yang dimuat di Power Query.

Perhatikan bagaimana kesalahan dari buku kerja Excel diperlihatkan dengan nilai [Error] di setiap sel.

Dalam artikel ini, Anda mempelajari cara mengganti kesalahan dengan nilai lain. Selain itu, Anda juga mempelajari cara menangkap kesalahan dan menggunakannya untuk logika spesifik Anda sendiri.

Berikan nilai alternatif saat menemukan kesalahan

Dalam hal ini, tujuannya adalah untuk membuat kolom Tingkat Akhir baru di sumber data sampel yang menggunakan nilai dari kolom Laju Standar . Jika ada kesalahan, maka ia menggunakan nilai dari kolom Tarif Khusus yang sesuai.

Untuk membuat kolom kustom baru, buka menu Tambahkan kolom dan pilih Kolom kustom. Di jendela Kolom kustom , masukkan rumus try [Standard Rate] otherwise [Special Rate]. Beri nama kolom baru ini Tingkat Akhir.

Cuplikan layar dengan dialog Kolom Kustom terbuka dan rumus 'try otherwise' dimasukkan di kolom kustom.

Rumus ini mencoba mengevaluasi kolom Laju Standar dan mengeluarkan nilainya jika tidak ada kesalahan yang ditemukan. Jika kesalahan ditemukan di kolom Laju Standar , maka output adalah nilai yang ditentukan setelah otherwise pernyataan, yang dalam hal ini adalah kolom Tarif Khusus .

Setelah Anda menambahkan tipe data yang benar ke semua kolom dalam tabel, gambar berikut ini memperlihatkan tampilan tabel akhir.

Cuplikan layar tabel dengan kesalahan tarif standar digantikan oleh tarif khusus di kolom Tarif Akhir.

Nota

Sebagai pendekatan alternatif, Anda juga dapat memasukkan rumus try [Standard Rate] catch ()=> [Special Rate], yang setara dengan rumus sebelumnya, tetapi menggunakan kata kunci tangkapan dengan fungsi yang tidak memerlukan parameter.

Kata catch kunci diperkenalkan ke Power Query pada mei 2022.

Berikan logika kesalahan kondisional Anda sendiri

Menggunakan sumber data sampel yang sama dengan bagian sebelumnya, tujuan baru adalah membuat kolom baru untuk Tingkat Akhir. Jika nilai dari Tarif Standar ada, maka nilai tersebut digunakan. Jika tidak, nilai dari kolom Tarif Khusus digunakan, kecuali untuk baris dengan kesalahan #REF! apa pun.

Nota

Satu-satunya tujuan untuk mengecualikan #REF! kesalahan adalah untuk tujuan demonstrasi. Dengan konsep yang ditampilkan dalam artikel ini, Anda dapat menargetkan bidang apa pun pilihan Anda dari catatan kesalahan.

Saat Anda memilih spasi kosong di samping nilai kesalahan, Anda mendapatkan panel detail di bagian bawah layar. Panel detail berisi alasan kesalahan, DataFormat.Error, dan pesan kesalahan, Invalid cell value '#REF!':

Cuplikan layar kesalahan yang dipilih, dengan pesan kesalahan di bagian bawah dialog.

Anda hanya dapat memilih satu sel pada satu waktu, sehingga Anda hanya dapat memeriksa komponen kesalahan secara efektif dari satu nilai kesalahan pada satu waktu. Pada titik ini, Anda membuat kolom khusus baru dan menggunakan ekspresi try.

Gunakan try dengan logika kustom

Untuk membuat kolom kustom baru, buka menu Tambahkan kolom dan pilih Kolom kustom. Di jendela Kolom kustom , masukkan rumus try [Standard Rate]. Beri nama kolom baru ini Semua Kesalahan.

Cuplikan layar dengan dialog Kolom Kustom terbuka dan rumus coba dimasukkan di kolom kustom.

Ekspresi try mengonversi nilai dan kesalahan menjadi nilai rekaman yang menunjukkan apakah ekspresi try telah menangani kesalahan atau tidak, beserta nilai yang tepat atau rekaman kesalahan tersebut.

Cuplikan layar tabel dengan kolom Semua Kesalahan ditambahkan dan kesalahan ditampilkan sebagai Rekaman.

Anda dapat memperluas kolom yang baru dibuat ini dengan nilai catatan dan melihat bidang yang dapat diperluas dengan memilih ikon di samping header kolom.

Cuplikan layar dari kolom

Operasi ini mengekspos tiga bidang baru:

  • Semua Errors.HasError—menampilkan apakah nilai dari kolom Laju Standar mengalami kesalahan atau tidak.
  • Semua Errors.Value—jika nilai dari kolom Laju Standar tidak memiliki kesalahan, kolom ini menampilkan nilai dari kolom Laju Standar . Untuk nilai-nilai dengan kesalahan, bidang ini tidak tersedia, dan selama operasi perluasan, kolom ini memiliki nilai null.
  • Semua Errors.Error—jika nilai dari kolom Laju Standar mengalami kesalahan, kolom ini menampilkan catatan kesalahan untuk nilai dari kolom Laju Standar . Untuk nilai tanpa kesalahan, kolom ini tidak tersedia, dan selama operasi ekspansi kolom ini memiliki nilai null.

Cuplikan layar tabel dengan bidang baru dalam kolom, dengan satu nilai All.Errors.Error dipilih, dan memperlihatkan pesan kesalahan di bawah tabel.

Untuk penyelidikan lebih lanjut, Anda dapat memperluas kolom Semua Kesalahan.Kesalahan untuk mendapatkan tiga komponen rekaman kesalahan:

  • Alasan kesalahan
  • Pesan kesalahan
  • Detail kesalahan

Setelah melakukan operasi perluas, bidang Semua Kesalahan.Kesalahan.Pesan menampilkan pesan kesalahan tertentu yang memberi tahu Anda dengan tepat kesalahan Excel apa yang dimiliki setiap sel. Pesan kesalahan berasal dari bidang Pesan Kesalahan dari catatan kesalahan.

Cuplikan layar dengan pesan kesalahan tertentu ditampilkan.

Sekarang dengan setiap pesan kesalahan di kolom baru, Anda dapat membuat kolom kondisional baru dengan nama Tingkat Akhir dan klausul berikut:

  • Jika nilai di kolom All Errors.Error.Message sama dengan null, maka outputnya adalah nilai dari kolom Laju Standar .
  • Jika tidak, jika nilai di kolom Semua Errors.Error.Message tidak sama Invalid cell value '#REF!'., maka outputnya adalah nilai dari kolom Tarif Khusus .
  • Jika tidak, null.

Tangkapan layar dari dialog Tambah kolom bersyarat dengan semua kondisi kesalahan yang telah diatur untuk kolom baru.

Setelah hanya menyimpan kolom Akun, Tarif Standar, Tarif Khusus, dan Tingkat Akhir , dan menambahkan jenis data yang benar untuk setiap kolom, gambar berikut menunjukkan seperti apa tabel akhir.

Cuplikan layar tabel akhir dengan kolom yang tersisa dengan jenis data yang tepat.

Menggunakan try dan catch dengan logika kustom

Atau, Anda juga dapat membuat kolom kustom baru menggunakan try kata kunci dan catch .

try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null

Cuplikan layar dialog kolom kustom dengan rumus baru yang menampilkan pendekatan sintaks coba dan tangkap.