Penggunaan fungsi kesalahan yang sesuai
Sebagai pemodel data, saat Anda menulis ekspresi DAX yang mungkin menimbulkan kesalahan waktu evaluasi, Anda dapat mempertimbangkan untuk menggunakan dua fungsi DAX yang bermanfaat.
- Fungsi ISERROR, yang mengambil ekspresi tunggal dan mengembalikan TRUE jika ekspresi tersebut menghasilkan kesalahan.
- Fungsi IFERROR, yang menerima dua ekspresi. Jika ekspresi pertama mengakibatkan kesalahan, nilai untuk ekspresi kedua dikembalikan. Ini sebenarnya adalah implementasi yang lebih dioptimalkan untuk menumpuk fungsi ISERROR di dalam fungsi IF.
Namun, meskipun fungsi-fungsi ini dapat membantu dan dapat berkontribusi untuk menulis ekspresi yang mudah dipahami, fungsi ini juga dapat secara signifikan menurunkan performa perhitungan. Ini dapat terjadi karena fungsi-fungsi ini meningkatkan jumlah pemindaian mesin penyimpanan yang diperlukan.
Kebanyakan kesalahan saat evaluasi disebabkan oleh BLANK yang tidak terduga, nilai nol, atau konversi jenis data yang tidak valid.
Rekomendasi
Lebih baik menghindari penggunaan fungsi ISERROR dan IFERROR. Sebagai gantinya, terapkan strategi defensif saat mengembangkan model dan menulis ekspresi. Strategi dapat mencakup:
Memastikan data kualitas dimuat ke dalam model: Menggunakan transformasi Power Query untuk menghapus atau mengganti nilai yang tidak valid atau hilang, dan untuk mengatur jenis data yang benar. Transformasi Power Query juga dapat digunakan untuk memfilter baris saat kesalahan, seperti konversi data yang tidak valid, terjadi.
Kualitas data juga dapat dikontrol dengan mengatur kolom model Properti Nullable ke Nonaktif, yang akan gagal refresh data jika BLANK ditemui. Jika kegagalan ini terjadi, data yang dimuat sebagai akibat dari refresh yang berhasil akan tetap ada dalam tabel.
Menggunakan fungsi IF: Ekspresi pengujian logis fungsi IF dapat menentukan apakah hasil kesalahan akan terjadi. Perhatikan, seperti fungsi ISERROR dan IFERROR, fungsi ini dapat menyebabkan pemindaian mesin penyimpanan tambahan, tetapi kemungkinan akan berkinerja lebih baik daripada fungsi tersebut karena tidak ada error yang perlu dilaporkan.
Menggunakan fungsi yang toleran terhadap kesalahan: Beberapa fungsi DAX akan menguji dan mengkompensasi kondisi kesalahan. Fungsi-fungsi ini memungkinkan Anda memasukkan hasil alternatif yang akan dikembalikan sebagai gantinya. Fungsi DIVIDE adalah salah satu contoh seperti itu. Untuk panduan tambahan tentang fungsi ini, baca artikel DAX: DIVIDE function vs divide operator (/).
Contoh
Ekspresi pengukuran berikut menguji apakah kesalahan akan terjadi. Ini mengembalikan BLANK dalam instans ini (yang merupakan kasus ketika Anda tidak memberikan fungsi IF dengan ekspresi value-if-false).
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
Versi ekspresi pengukuran berikutnya ini telah ditingkatkan dengan menggunakan fungsi IFERROR menggantikan fungsi IF dan ISERROR.
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
Namun, versi akhir ekspresi pengukuran ini mencapai hasil yang sama, namun lebih efisien dan elegan.
Profit Margin
= DIVIDE([Profit], [Sales])
Konten terkait
- Jalur pembelajaran: Menggunakan DAX di Power BI Desktop
- Pertanyaan? Coba tanyakan Komunitas Power BI
- Saran? Memberikan ide untuk meningkatkan Power BI