مقدارِ بی مقدار null در پاورکوئری

ما در دنیای کامپیوتر و البته پاورکوئری مقداری داریم به نام null. در واقع null‌ یعنی مقداری نامتعین، چیزی که مقدارش معلوم نیست. یک مقدارِ بی مقدار! 

حتی معلوم نیست که «خالی» و «پوچ» است و از آنجایی که یک مقدار استثناء است، باید نکته‌هایی را برای محاسبه بر روی آن بدانید وگرنه با مشکلاتی همیشه مواجه می‌شود.

محاسبه بر روی null در پاورکوئری

چهار عبارت اول زیر می گویند که null تا بحال با هیچ چیز و هیچکس وارد رابطه نشده است. به عبارت دیگر null‌ با کس دیگری جور نمی‌شود.

یعنی 8 + null در دنیای کامپیوتر قابل محاسبه نیست و حاصل آن null‌ خواهد شد و به همین ترتیب حاصل تمامی محاسبات زیر null‌ است:

8 + null      --> null
2 * null      --> null
4 / null      --> null
null < 1      --> null

در چهار عبارت زیر می‌بینیم که null همان صفر و یا خالی نیست:

null = 0      --> false
null <> null  --> false
null = ""     --> false

البته خوشبختانه null با null‌ برابر است:

null = null   --> true

محاسبه بر روی مقادیر null

جدول زیر را در نظر بگیرید و قصد جمع کردن دو ستون عددی را داریم که در هر دوی آنها برخی آیتم ها null  هستند. در واقع اگر در اکسل بودیم به سادگی می‌نوشتیم = A2 + B2 . اما می‌دانیم در پاورکوئری نمی‌توانیم این کار را انجام دهیم زیرا اگر فرمول Col1 + Col2 را در پاورکوئری بنویسیم، در تمام سطرهایی که یکی از ‌آنها null است، حاصل جمع ما هم null‌ می‌شود. بنابراین باید یکی از تکنیک‌های زیر را بکار ببریم:

جدول اکسل با مقادیر null
داده‌های نمونه

روش ۱) استفاده از تابع List.Sum 

هنگام جمع کردن مقادیر تهی، استفاده از تابع List.Sum در Power Query می تواند یک راه حل قوی باشد. این تابع مجموع مقادیر غیر null را در لیست ارائه شده برمی گرداند (در اینجا یعنی لیست اعداد یک ردیف). اگر مقادیر غیر تهی در لیست وجود نداشته باشد (یعنی هر دو null  باشند)، null را برمی‌گرداند.

برای این از فرمول زیر استفاده می‌کنیم:

=List.Sum( { [Col1] + [Col2] } )
جمع مقادیر null‌ با List.Sum در پاورکوئری
جمع مقادیر null‌ با List.Sum در پاورکوئری

روش ۲)‌ استفاده از if  در پاورکوئری برای جمع زدن nullها

با تابع if در پاورکوئری می‌خواهیم اگر مقداری null بود آنگاه 0 و در غیر اینصورت آن مقدار را برای ما بیاورد. این فرمول به شکل زیر خواهد شد:

= (if [Col1] = null then 0 else [Col1]) + (if [Col2] = null then 0 else [Col2])
جمع null ها با if
جمع زدن null ها با if

روش ۳) استفاده از ابزار Replace در پاورکوئری

بیائید به منوهای خود Power Query متوسل شویم و ابتدا آیتم های null  را با 0 جایگزین می کنیم. 

ابتدا دو ستون Col1‌ و Col2 را انتخاب می‌کنیم و سپس در تب Home گزینه Replace Values را می‌زنیم:

جایگزین کردن nullها با 0
جایگزین کردن nullها با 0

توجه: حتما باید null را با حروف کوچک بنویسید.


روش ۴) عملگر Coalesce در پاورکوئری

در دنیای کامپیوتر ما عملگر «؟؟» را داریم که نام آن Coalesce‌ است. (بخوانید کو اِ لِس) و به جای آنکه بنویسیم:

if [Col1] = null then 0 else[Col1]

می‌توانیم به صورت خلاصه بنویسیم:

[Col1] ?? 0

بنابراین می‌توانیم به جای فرمول if‌ قبلی، می‌توانیم فرمول جمع دو ستون را خلاصه‌تر به شکل زیر بنویسیم:

[Col1] ?? 0 + [Col2] ?? 0

یادآوری) به + ، - ،  * ،  /  را عملگر(Operator) می گویند این ؟؟ هم یک جور عملگر است.

این مقاله نوشته آقای «فرشاد منصوریان» یکی از همراهان قدیمی فرساران است. ایشان در فایل ورد این مقاله بیت زیر را آورده بودند:
 نبارد هوا تا نگوئی ببار           زمین ناورد تا نگوئی بیار

 

🩹 برچسب‌ها

شما هم تجربه یا دیدگاه خود را بنویسید:

محتوای این فیلد خصوصی است و به صورت عمومی نشان داده نخواهد شد.

متن ساده

  • تگ‌های HTML مجاز نیستند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
کد امنیتی
mZahiri در تاریخ جمعه, 1403/01/10 - 08:45 نوشته:

Very Gook. Tanks