Power Query Power BI try otherwise مدیریت خطا کنترل جریان Query Folding مثال‌های عملی تبدیل داده Error Handling data transformation تفکیک خطا

در جریان پردازش داده‌ها با Power Query و زبان M، احتمال مواجهه با خطا در حین محاسبات یا تبدیل‌ها وجود دارد. عبارت try … otherwise ابزاری قدرتمند برای گرفتن و کنترل این خطاهاست تا از قطع شدن کل جریان جلوگیری کند و بتوانیم واکنش مدنظر را در مواجهه با خطا پیاده کنیم.

سینتکس و ساختار Try … otherwise در زبان M

try <Expression> otherwise <FallbackExpression>
  • <Expression>: بخشی از کد که احتمال خطا در آن وجود دارد.
  • <FallbackExpression>: مقداری که در صورت بروز خطا باید جایگزین مقدار اصلی شود.

ذخیره نتیجه در یک Record

نتیجه اجرای try همیشه یک رکورد (Record) شامل سه فیلد زیر است:

فیلد توضیح
HasError منطقى؛ نشان می‌دهد آیا خطا اتفاق افتاده است (true/false).
Error درصورت خطا، آبجکت خطا (پیام، نوع و سایر جزئیات) را در خود دارد.
Value درصورت عدم خطا، مقدار محاسبه‌شده‌ی <Expression> را در خود دارد.

مثال ساختاری:

let
  result = try 1 / 0
in
  result

نتیجه‌ی result چنین خواهد بود:

  • HasError = true
  • Error = [Message=”Division by zero”, …]
  • Value = null

مثال‌های عملی

مثال ۱: جلوگیری از تقسیم بر صفر

let
  Source = Table.FromRecords({ [Dividend=100, Divisor=0], [Dividend=50, Divisor=5] }),
  Added = Table.AddColumn(Source, "SafeResult", each 
    try [Dividend] / [Divisor] 
    otherwise null
  )
in
  Added

در این مثال، اگر Divisor صفر باشد، ستون SafeResult مقدار null خواهد گرفت.

مثال ۲: تبدیل رشته به عدد

let
  Texts = {"123", "abc", "45.6"},
  Converted = List.Transform(Texts, each
    try Number.FromText(_) 
    otherwise 0
  )
in
  Converted

خروجی: {123, 0, 45.6}

ترکیب با کنترل جریان

گاهی لازم است بسته به وجود خطا مسیر متفاوتی طی شود:

let
  x = try Text.Middle("ABCDE", 10, 2) otherwise null,
  result = if x <> null then x else "نامعتبر"
in
  result

در اینجا اگر Text.Middle خطا دهد، مقدار "نامعتبر" جایگزین می‌شود.

نکات کاربردی و بهینه‌سازی

  • استفاده از try در هر گام می‌تواند مانع Query Folding شود.
  • برای حفظ عملکرد، تا حد امکان بخش‌هایی که فقط در صورت خطا اجرا می‌شوند را کمینه نگه دارید.
  • برای بررسی خطاهای پر تعداد، بهتر است ابتدا با یک پرس‌وجوی نمونه تست کنید و سپس عبارت try را به جریان اصلی اضافه نمایید.

مقایسه با سایر روش‌های مدیریت خطا

روش مزایا معایب
Try … otherwise ساده، خوانا، یکجا ممکن است Query Folding را مختل کند
Record.FieldOrDefault مقدار پیش‌فرض بدون قطع اجرای جریان تنها روی رکوردها قابل استفاده است
Table.ReplaceErrorValues جایگزین گروهی مقادیر خطا در جدول تنظیمات محدودتر و گاهی پیچیده‌تر

نتیجه گیری

عبارت try … otherwise یکی از راهکارهای انعطاف‌پذیر و ساده برای مدیریت خطا در زبان M است. با درک ساختار خروجی آن و رعایت نکات عملکردی، می‌توانید پردازش‌های مقاومی بسازید که در مواجهه با داده‌های نامطلوب یا خطاهای ناگهانی از توقف ناخواسته جلوگیری کنند.

منبع پیشنهادی برای مطالعه بیشتر
اگر علاقه‌مند به یادگیری عمیق‌تر زبان M و مفاهیم پیشرفته‌تر در Power Query هستید، مطالعه‌ کتاب «مرجع زبان فرمول‌نویسی M در پاور کوئری» تألیف روزبه امیرعصامی را توصیه می‌کنم. این کتاب با رویکردی آموزشی و ساختار منظم، مفاهیم پایه تا پیشرفته‌ی زبان M را پوشش می‌دهد و برای متخصصان هوش تجاری و علاقه‌مندان به تحلیل داده بسیار مفید است.
اطلاعات بیشتر و تهیه کتاب به انتشارات دیباگران و برای تهیه نسخه الکترونیکی، به صفحه کتاب، در کتابراه مراجعه کنید.

تماس و مشاوره با لاندا

برای اطلاعات بیشتر و مشاوره می‌توانید از طریق زیر با ما در ارتباط باشید:

  • تماس  با شرکت لاندا برای مشاوره، اجرا و یا آموزش تخصصی.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *