توابع مدیریت خطا در Power BI
در این مطلب با توابع مدیریت خطا در Power BI آشنا خواهیم شد. معمولا در Power BI با خطاهایی مواجه می شویم که می توانیم برخی از آن ها را با استفاده از زبان DAX مدیریت کنیم. خطاهایی که گاها حتی کار اجرای کد را با توقف مواجه نمی کنند. برخی از خطاها اجرای کد را متوقف می کنند. در مطلب زیر می توانید برخی از این خطاها را مشاهده کنید.
برخی از خطا ها مثل خطای تقسیم عدد بر صفر اجرای کد را با خطا مواجه نمی کنند. اما بهتر است آن ها را مدیریت نموده و از ایجاد آن ها جلوگیری کنیم (Error Handling).
خطای تقسیم عدد بر صفر
جدولی با 2 ستون ایجاد نمودیم و اعدادی را به عنوان نمونه در این 2 ستون وارد کردیم. در تصویر زیر این جدول را مشاهده می کنید.
حال می خواهیم این 2 ستون را به سادگی بر هم تقسیم کنیم. یک ستون محاسباتی (Calculated Column) ایجاد کرده و به راحتی با علامت / عمل تقسیم را انجام می دهیم. اما همان طور که مشاهده می کنید با خطای تقسیم بر صفر مواجه می شویم. این خطا اجرای کد را متوقف نمی کند ولی با علامت ∞ (infinity) به ما نشان می دهد که یک خطای ریاضی اتفاق افتاده است.
توابع مدیریت خطا در DAX
تابع DIVIDE
یکی از توابع مدیریت خطا در Power BI، تابع DIVIDE می باشد. همان طور که در تصویر مشاهده می کنید تابع DIVIDE، دو ورودی اجباری و یک ورودی اختیاری دارد. ورودی اول، صورت کسر، ورودی دوم مخرج کسر و ورودی سوم مقدار دلخواه برای نمایش در صورت مواجهه با خطای ریاضی، است.
حال با استفاده از تابع DIVIDE، عمل تقسیم را انجام می دهیم و عدد 99999 را به عنوان عدد دلخواه برای نمایش در صورت خطا در نظر می گیریم. همان طور که مشاهده می کنید دیگر با خطای ریاضی مواجه نخواهیم شد. توجه کنید در صورتی که ورودی سوم را خالی بگذارید برای مقادیر دارای خطا، مقداری نمایش داده نمی شود.
تابع IF
تابع IF تابعیست که می توانید به وسیله آن عبارات شرطی بنویسید. اگر فلان اتفاق افتاد پس این کار را بکن!!!!! اگر مخرج صفر بود اعلام خطا کن.
پس کافیست این شرط را بنویسیم.
پس عبارت شرطی خود را به این صورت می نویسیم. اگر مخرج صفر بود عدد 99999 را نمایش بده وگرنه، صورت را بر مخرج تقسیم کن.
اگر می خواهید در صورت خطا مقداری نمایش داده نشود کافیست فرمول خود را به صورت زیر بنویسید. اگر مخرج مخالف صفر بود عمل تقسیم را انجام بده! در غیر اینصورت هیچ کاری نکن!
تابع ISERROR
تابع ISERROR، تابعیست که به شما اطلاع می دهد آیا خطایی اتفاق افتاده است یا خیر؟ همان طور که مشاهده می کنید در 2 جا، مقدار True نمایش داده می شود که نشان دهنده خطا است.
حال می توانیم با ترکیب IF و ISERROR به نتیجه مورد نظر خود دست پیدا کنیم.
تابع IFERROR
تابع IFERROR ترکیبی از تابع IF و ISERROR است. با این 2 تابع می توانید به همان نتیجه دلخواه برسید. کافی است فرمول را در ورودی اول وارد کنیم و برای ورودی دوم بگوییم مقدار مورد انتظار در صورت خطا چه باشد.
همان طور که می بینید تقسیم انجام می شود و در صورتی که با خطا همراه بود عدد 99999 نمایش داده می شود.
در این مطلب با نحوه کار با توابع مدیریت خطا در Power BI آشنا شدیم. حال به بررسی مثال دیگری می پردازیم.
خطا در تبدیل نوع داده ها (Data Type) به یکدیگر
گاهی اوقات با خطای تبدیل انواع داده به یکدیگر مواجه می شویم. جدولی مطابق تصویر زیر ایجاد نمودیم. همان طور که مشاهده می کنید اگر چه اکثر مقادیر موجود در ستون به صورت عددی هستند اما به دلیل وجود یک مقدار رشته ای (A) در میان آن ها، به طور خودکار نوع داده کل ستون به صورت Text در نظر گرفته شده است.
حال با یک فرمول ساده سعی می کنیم ستونی ایجاد کنیم و آن را به صورت عددی در نظر بگیریم. تابع VALUE تابعی است که این کار را برای ما انجام می دهد.
بعد از اجرای فرمول با خطایی مواجه می شوید که می گوید امکان تبدیل A به عدد را ندارد و خب حق هم دارد!
حال می توانید با استفاده از تابع IFERROR این موضوع را مدیریت کنید.
در واقع می گویید اگر توانستی تبدیل به عدد کنی تبدیل کن و اگر نتوانستی 99999 را نمایش بده! نتیجه این کد به صورت زیر قابل نمایش است. همان طور که مشاهده می کنید Data Type این ستون به صورت عددی تبدیل شده است.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقی
سلام
اراتمندم
عالی مثل همیشه
تشکر
سلام لطف دارید شما
ممنون از همراهیتون
بسیار عالی پاینده باشید
ممنون از لطفتون
ساتم وقتتون بخیر باشه.بنده هنگام publish گزارش به سرور این خطا را دریافت میکنم .میتوانید بهم کمک کنید ؟
(Unexpected error encountered)