خانه / آموزش Power BI بابازاده / درس شصت – Measure

درس شصت – Measure

Measure

داخل پاور بی آی دو نوع measure داریم.

Implicit measure  یا مژر ضمنی درواقع این مژر را خود پاور بی آی ایجاد می کند و ما کد نمی نویسیم.

Explicit measure یا مژرهایی که ما با زبان dax کدنویسی می کنیم.

در جدول فروش همان FactInternetSales از منوی more option گزینه new measure را بزنید. در طراحی measure نیاز است که بیشتر از توابع استفاده کنیم. در مثال زیر از تابع sum استفاده کرده ایم بدین ترتیب که جمع ستون SaleAmount از جدول فروش را حساب کند. برای اجرا شدن کد باید اینتر کنید و یا علامت تیک کنار کدی که نوشتید (commit) را بزنید.

measure

با اینتر کردن این مژر ساخته می شود ولی شما آن را در ستونهای جدول نمی بینید بلکه در سمت راست صفحه که نام جداول و فیلدها وجود دارد یک آیکون مژر که شبیه ماشین حساب است اضافه می شود.

measure

Measure زمانی که طراحی می شود شما نمی توانید مقدار آن را در صفحه data view ببینید بلکه مقدار مژر را فقط برروی ویژوال می توانید ببینید، یعنی یک ویژوال رسم کنید و مژر طراحی شده را در value آن ویژوال قرار دهید تا بتوانید مقدار مژر را ببیند.

pie chart

اگر بجای مژری که تعریف کردید در فیلد value ستون SalesAmount که همان فروش می باشد را قرار دهید یعنی از مژر استفاده نکنید مشاهده می کنید که نموادرها یکسان هستند و هیچ فرقی در جواب ندارند.

pie chart with measure

اینجا همان دو مدل measure که گفتیم رخ می دهد وقتی ستون فروش را قرار می دهیم خود پاور بی آی جمع فروش را حساب می کند در واقع مژر ضمنی داریم ولی وقتی مژری که خودمان تعریف کردیم را در ویژوال قرار می دهیم explicit measure داریم و هر بار پاور بی آی تابع استفاده شده در کد را که sum بود محاسبه کرده و نتیجه را نشان می دهد.

توصیه می شود که برای همه محاسبات خود از Measure هایی که خودتان نوشتید استفاده کنید و از ستونها در ویژوال ها استفاده نکنید.

Measure در لحظه در ویژوال با توجه به فیلترهای موجود حساب می شود و نتیجه را به ما می دهد به همین علت است که در صفحه data view دیده نمی شود و فقط در صفحه report view مشاهده می شود.

بحث فیلترینگ در محاسبات Measure بسیار مهم می باشد درواقع ابتدا تمامی فیلترهای موجود و موثر روی جدول مورد نظر اعمال می شود و سپس محاسبات مربوط به Measure انجام می شود. بعنوان مثال در مژری که تعریف کردیم جمع ستون SaleAmount را می خواهیم ولی اگر فیلتری داشته باشیم مانند کشور و سال و . . . ابتدا جدول فروش فیلتر می شود و برای رکوردهای باقی مانده جمع ستون فروش محاسبه می گردد. بنابراین به تمامی فیلترها دقت کنید.

بهترین کار این است که زمان زیادی برای طراحی دیتا مدل بگذارید تا تمامی ارتباطها را بشناسید تا خطای کمتری در تعریف measure ها داشته باشید.

ویژگی های measure

محاسبات measure در نمایش ویژوال رخ می دهد و از قبل مقدارش محاسبه نمی شود و جایی ذخیره نمی شود برخلاف ستون محاسباتی.

محاسبات measure چون در لحظه انجام می شود نیاز به CPU دارد برخلاف ستون محاسباتی که نیاز به Ram دارد.

در طراحی measureها می توانیم از مژرهایی که قبلا نوشتیم هم استفاده کنیم.

محاسبه یک measure به فیلترهایی که از چندین جدول می آید ربط دارد و همچنین در کدنویسی یک مژر می توانید از مقادیر چندین جدول مختلف استفاده کنید. یعنی مانند ستون محاسباتی نیست که فقط از مقادیر همان جدول و یا جداول مرتبط استفاده کنید.

Measureها به هیچ جدولی وابسته نیستند، بنابراین برای دسته بندی مژرها از جداول خالی که دیتا ندارد استفاده می کنند و مژرها را داخل آنها قرار می دهند. برای این کار به صفحه data view رفته و در لیست جداول روی مژر ساخته شده کلیک کنید.

در تب modeling قسمت Home table محل قرارگیری این مژر مشخص شده است و شما می توانید جای آن را تغییر دهید. و این تغییر جایگاه هیچ تاثیری در نتیجه کار ندارد.

home table

بهتر است از طریق enter data یک جدول خالی ایجاد کنیم و بعد Home table مژرهامون را این جدول قرار دهیم. زمانی که تعداد مژرها زیاد است بهتر است چند جدول خالی برای آنها بسازید.

جدول محاسباتی

از تب modeling گزینه new table را کلیک کنید. این جدول برمبنای کد dax ایجاد می شود. برای این کار باید تابع بنویسیم، در زبان dax توابعی وجود دارد که خروجی آنها تعدادی ردیف است بعبارت دیگر خروجی آنها جدول می باشد.

معروفترین تابعی که خروجی جدول دارد تابع Filter می باشد. یک جدول از شما میگیرد و یک شرط هم از شما میگیرد و شرط را روی جدول ورودی اعمال می کند و خروجی که به شکل جدول است را برمیگرداند.

در مثال زیر می خواهیم از جدول DimCustomer مشتریانی که درآمد سالانه بیشتر از ۷۰۰۰۰ دارند را نشان دهیم. درآمد سالانه در ستون YearlyIncome میباشد.

measure

با اینتر زدن جواب بصورت یک جدول است که تمامی رکوردهای DimCustomer که درآمد سالانه بزرگتر مساوی ۷۰۰۰۰ دارند را نشان می دهد. و این جدول محاسباتی در لیست جداول قرار میگیرد. و همچنین این جدول محاسباتی که ایجاد کردیم در صفحه دیتا مدل هم اضافه شده است. و کاملا مثل یک جدول معمولی می توانید با آن رفتار کنید.

جدول محاسباتی از Ram فضا می گیرد و حجم دیتا مدل را افزایش می دهد. برای اینکه زمان رفرش شما افزایش پیدا نکند تا حد امکان این جداول محاسباتی را در سمت منبع اطلاعات ایجاد کنید. برای مثال گفته شده می توانید این جدول محاسباتی را با ایجاد view در sql server انجام دهید در نتیجه زمان رفرش سریعتر می شود. تا حد امکان از جدول محاسباتی در پاور بی آی استفاده نکنید.

کامنت گذاری در Dax

زمانی که با dax کدنویسی می کنید می توانید کامنت هم بگذارید. به سه روش می توانید کامنت بگذارید که در شکل زیر نشان داده شده است. اگر چند خط کامنت داشتید باید از /*     */ استفاده کنید. خطهایی که با سبز نوشته شده کامنت هستند. تا جایی که می توانید کامنت بگذارید که در آینده براتون مفید خواهد بود.

coment in dax

سعی کنید در کدنویسی خوانایی را رعایت کنید و برای رفتن به خط بعدی باید shift + enter بزنید. دقت کنید اگر اینتر را تنها بزنید کد شما commit می شود.

درباره‌ی حمیدرضا بابازاده

تحلیلگر ارشد و متخصص هوش تجاری در اتریش هستم و تجربه کار بعنوان مشاور و مدرس BI در شرکتهای مختلف رو دارم . بیش از 1300 ساعت سابقه تدریس دوره های Python , Power BI و Microsoft BI را در آموزشگاه سماتک و مجتمع فنی تهران دارم .

همچنین ببینید

درس هفتاد و پنجم – دوره ای بر Filter Context

در جلسات قبل آموختیم که : ستون محاسباتی بعد از تولید شدن داخل Data Model …

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

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

معادله امنیتی (فقط عدد بنویسید) *