سلام دوستان عزیز وقتتون بخیر؛ آرزوی اوقات خوشی رو براتون داریم 🙂 در این جلسه از سری آموزش های پویش پایدار در خدمتتون هستیم برای بیان تفاوت ستون های محاسباتی و مژر (Measure) در نرم افزار Power BI.

null

برو به جلسه بعدی

null

برو به جلسه قبلی

null

زمان ویدیو

12:43 دقیقه

مدرس دوره: سهیل فتحی

مدرس دوره

سهیل فتحی

null

زمان ویدیو

12:43 دقیقه

مدرس دوره: سهیل فتحی

مدرس دوره

سهیل فتحی

null

جلسه قبلی

تفاوت ستون محاسباتی و مژر (Measure) در Power BI

برای ایجاد ستون های محاسباتی و مژرها از زبان دکس استفاده میشود.

زمانیکه با استفاده از فرمول های دکس یک ستون محاسباتی ایجاد می کنید، این ستون به جدولی که در آن فرمول نویسی کردید اضافه شده و محاسبات فرمول به صورت ردیف به ردیف انجام میشود. در واقع به ازای هر ردیف جدول یک نتیجه دارید. به این شرایط Row Context گفته می شود. در مقابل Measure ها با مفهوم Row Context کار نمی کنند؛ چراکه مژرها در سطح تجمیعی عمل می کنند.

به مثال های زیر توجه کنید:

در تصویر زیر فرمول ایجاد یک ستون محاسباتی به نام total_sale را مشاهده می کنید. در جدول فروش، دو ستون به نام های تعداد فروش و قیمت فروش یک واحد وجود دارد و ما می خواهیم مجموع فروش صورت گرفته در هر ردیف را محاسبه کرده و نتیجه را در ستونی به نام total_sale منعکس کنیم.

برای فرمول نویسی ابتدا باید در نوار فرمول مربوط به ستون محاسباتی نام ستون را وارد کرده و علامت مساوی را تایپ کرد. سپس برای نمایش نام جداول و ستون های مورد نظر باید علامت تک کوتیشن (‘) را نوشت و از میان ستون های نمایش داده شده، ستون مورد نظر را انتخاب کرد (مطابق تصویر زیر).

 

فرمول نویسی ستون محاسباتی در Power BI

فرمول نویسی ستون محاسباتی در Power BI

 

فرمول مورد نظر در این مثال به صورت زیر است:

 

فرمول Dax ستون محاسباتی به نام Total_Sale

فرمول Dax ستون محاسباتی به نام Total_Sale

 

خروجی فرمول بالا، ستون محاسباتی total_sale است که در تصویر زیر مشاهده می کنید:

 

نتیجه ایجاد ستون محاسباتی total_sale

نتیجه ایجاد ستون محاسباتی total_sale

در تصویر بالا میبینید که خروجی فرمول به صورت یک ستون به جدول فروش اضافه شده است و این فرمول که ضرب تعداد فروش در قیمت فروش هر واحد است، برای هر ردیف به صورت جداگانه محاسبه میشود. این دقیقا مفهوم Row Context است.

برای درک کارکرد Measure ها به مثال زیر توجه کنید:

هدف ما محاسبه درآمد کل فروش شرکت است. بنابراین باید تعداد خرید در قیمت فروش یک واحد ضرب شده و در نهایت مقادیر به دست آمده با هم جمع شوند. از آنجایی که خروجی نهایی یک عدد است و نه یک ستون، نیازی به استفاده از ستون های محاسباتی نداریم. لذا یک Measure به نام Revenue ایجاد کرده و در ان فرمول نویسی میکنیم.

در فرمول نویسی یک مژر نمیتوان به صورت مستقیم از جداول یا ستون های آن ها استفاده کرد. همانطورکه در تصویر زیر می بینید، زمانی که پس از نام مژر، علامت ‘ را قرار دادیم، نام جداول ظاهر نشد. در صورتی که با قرار دادن همین علامت پس از نام یک ستون محاسباتی، لیست از جداول و ستون آن ها نمایش داده میشود.

برای مشاهده نام جداول و ستون های آن در یک مژر باید از توابع تجمیعی (aggregation function) مانند SUMX استفاده کرد.

فرمول نویسی Measure در Power BI

فرمول نویسی Measure در Power BI

در این مثال برای محاسبه جمع تجمعی فروش در مژر باید از تابع SUMX استفاده کرد. تابع SUMX دو آرگومان دارد؛ آرگومان اول جدول مورد نظر و آرگومان دوم عبارت محاسباتی مورد نظر میباشد. در تصویر زیر مشاهده می کنید که در آرگومان اول تابع SUMX با درج تک کوتیشن (‘) نام جداول و ستون آن ها لیست شد.

فرمول نویسی مژر با استفاده از تابع SUMX در Power BI

فرمول نویسی مژر با استفاده از تابع SUMX در Power BI

 

برای محاسبه مجموع درآمد فروش در مژر Revenue فرمول نویسی زیر را انجام می دهیم:

Revenue = SUMX(‘فروش, ‘فروش[تعداد فروش]* ‘فروش[قیمت فروش یک واحد])

خروجی این مژر را باید در یک ویژوال مانند card استفاده کنید و نتیجه مطابق شکل زیر است:

 

نتیجه استفاده از مژر Revenue در ویژوال Card

نتیجه استفاده از مژر Revenue در ویژوال Card

 

مقادیر در ستون های محاسباتی زمانی که برای اولین بار آنها را تعریف می کنید و  ارزیابی، مقادیر در مدل داده شما ذخیره می شوند، به این معنی که اندازه مدل داده شما افزایش می یابد و RAM بیشتری مصرف می کند. بنابراین هرچه تعداد ستون محاسباتی بیشتری داشته باشید، مدل شما سنگین تر خواهد شد (RAM بیشتری مصرف می شود). اما مژرها از CPU استفاده می کنند و RAM زیادی را اشغال نمی کنند. چرا که مژرها تنها زمانی محاسبه میشوند که آن ها را در گزارش خود استفاده کنید.

ستون های محاسباتی Filter Context را به خوبی متوجه نمی شوند اما مژرها با مفهوم Filter Context کار میکنند.

گاهی اوقات برای یک نتیجه یکسان می توان هم از مژر استفاده کرد و هم ستون محاسباتی.

در تصویر زیر مشاهده می کنید که اگر در یک جدول مژر Revenue یا ستون محاسباتی total_sale در زمینه فیلتر محصولات را قرار دهیم، نتیجه یکسان است. اما همیشه چنین شرایطی وجود ندارد و در همه مسائل لزوماً مژرها و ستون های محساباتی نتایج یکسانی ندارد.

نتیجه یکسان ستون محاسباتی و Measure در ویژوال Table در Power BI

نتیجه یکسان ستون محاسباتی و Measure در ویژوال Table در Power BI

 

مژرها به طور پیش فرض و به خودی خود Row Context را اجرا نمی کنند اما با استفاده از توابع تکرارشونده (Iterator) مانند SUMX که Row Context در آن ها برقرار است، می توان محاسبات سطر به سطر را در مژرها نیز برقرار کرد. دلیل اینکه در تصویر بالا، مژر برای هر محصول جداگانه محاسبه شده است، همین مطلب است.

 

Measure یا ستون محاسباتی؟ کدام یک انتخاب بهتری است؟

همانطورکه ذکر کردیم، مژرها و ستون های محاسباتی همیشه نمی توانند نتایج یکسان داشته باشند و انتخاب بین این دو بستگی به نوع مساله ما دارد. اما اگر نتیجه نهایی یک مژر و یک ستون محاسباتی یکسان باشد، بهتر است از مژرها استفاده کنید؛ چراکه فضای RAM کمتری را اشغال کرده و در نهایت مدل شما سنگین نمی شود.

 

ممنون از توجه شما 🙂

هر گونه سوال، پیشنهاد یا انتقادی در رابطه با دوره رایگان آموزش اکسل دارید در بخش دیدگاه‌ها مطرح نمایید تا بتوانیم بهترین آموزش ها را برای شما علاقمندان به آموزش اکسل تهیه کنیم.

مطالب زیر را حتما مطالعه کنید

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

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای مورد نیاز با * مشخص شده است

نوشتن دیدگاه