ما در دنیای کامپیوتر و البته پاورکوئری مقداری داریم به نام 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 میشود. بنابراین باید یکی از تکنیکهای زیر را بکار ببریم:
روش ۱) استفاده از تابع List.Sum
هنگام جمع کردن مقادیر تهی، استفاده از تابع List.Sum در Power Query می تواند یک راه حل قوی باشد. این تابع مجموع مقادیر غیر null را در لیست ارائه شده برمی گرداند (در اینجا یعنی لیست اعداد یک ردیف). اگر مقادیر غیر تهی در لیست وجود نداشته باشد (یعنی هر دو null باشند)، null را برمیگرداند.
برای این از فرمول زیر استفاده میکنیم:
=List.Sum( { [Col1] + [Col2] } )
روش ۲) استفاده از if در پاورکوئری برای جمع زدن nullها
با تابع if در پاورکوئری میخواهیم اگر مقداری null بود آنگاه 0 و در غیر اینصورت آن مقدار را برای ما بیاورد. این فرمول به شکل زیر خواهد شد:
= (if [Col1] = null then 0 else [Col1]) + (if [Col2] = null then 0 else [Col2])
روش ۳) استفاده از ابزار Replace در پاورکوئری
بیائید به منوهای خود Power Query متوسل شویم و ابتدا آیتم های null را با 0 جایگزین می کنیم.
ابتدا دو ستون Col1 و Col2 را انتخاب میکنیم و سپس در تب Home گزینه Replace Values را میزنیم:
توجه: حتما باید null را با حروف کوچک بنویسید.
روش ۴) عملگر Coalesce در پاورکوئری
در دنیای کامپیوتر ما عملگر «؟؟» را داریم که نام آن Coalesce است. (بخوانید کو اِ لِس) و به جای آنکه بنویسیم:
if [Col1] = null then 0 else[Col1]
میتوانیم به صورت خلاصه بنویسیم:
[Col1] ?? 0
بنابراین میتوانیم به جای فرمول if قبلی، میتوانیم فرمول جمع دو ستون را خلاصهتر به شکل زیر بنویسیم:
[Col1] ?? 0 + [Col2] ?? 0
یادآوری) به + ، - ، * ، / را عملگر(Operator) می گویند این ؟؟ هم یک جور عملگر است.
این مقاله نوشته آقای «فرشاد منصوریان» یکی از همراهان قدیمی فرساران است. ایشان در فایل ورد این مقاله بیت زیر را آورده بودند:
نبارد هوا تا نگوئی ببار زمین ناورد تا نگوئی بیار
شما هم تجربه یا دیدگاه خود را بنویسید:
Very Gook. Tanks