گاهاً پیش آمده که در ابتدای کار با پاور بی آی، فرمول هایی که خودتان نوشته اید یا از بلاگ های آموزشی کپی کرده و مورد استفاده قرار داده اید، در برخی مواقع کار کرده و بهترین جواب ها را به شما می دهد، ولی در کمال تعجب در برخی مواقع دیگر جواب های عجیب و دور از انتظار حاصل می شود. علت این موضوع اینست که محاسبات DAX در پاور بی آی، در چارچوب زمینه ارزیابی یا همان Evaluation Context معنا پیدا می کند. در پاور بی آی دو نوع زمینه ارزیابی داریم. زمینه فیلتر (Filter Context) و زمینه ردیف (Row Context). اگر به دنبال آشنایی با این مفاهیم هستید، مقاله زیر را مطالعه بکنید.
زمینه فیلتر مجموعه فیلترهایی است که قبل از شروع ارزیابی یک عبارت DAX روی مدل داده اعمال می شود. محاسباتی که شما در قالب Measure ها ذخیره می کنید، با توجه به فیلتر زمینه اعمال شده، محاسبات را نمایش می دهند. برای مثال اگر از یک Measure برای محاسبه فروش کل استفاده کرده اید، بیان درست آن، “محاسبه فروش کل تحت زمینه فیلتر موجود” است. اجازه بدهید با یک مثال این مفهوم ساده و در عین حال مهم را بیشتر توضیح دهم.
برای این مثال، از دیتابیس تمرینی استفاده می کنیم. کد زیر میزان فروش کل را محاسبه می کند.
TotalSales = SUM(FactInternetSales[SalesAmount])
از ویژوال کارت برای نمایش مبلغ فروش کل استفاده شده است. ضمن اینکه از هیچ فیلتر بیرونی استفاده نشده است. حال از همین Measure در یک ماتریس با اضافه کردن فروشنده ها و سال استفاده می کنیم.
همانطور که مشخص است، بدون اینکه در کد تغییری ایجاد شود، مقادیر جدیدی در ماتریس به تفکیک زمان و فروشنده نمایش داده می شود. بنابراین مهم ترین کاری که زمینه فیلتر انجام می دهد، همانطور که از اسم آن پیداست، فیلتر کردن است. این باعث می شود که شما محاسبات پیچیده و زمان بر را به راحتی با کمترین خط کد بتوانید انجام دهید. در عین حال باید همیشه مراقب تأثیر زمینه فیلتر بر محاسبات باشید تا با ترکیب کد و زمینه فیلتر بتوانید محاسبات پیشرفته را انجام دهید.
بطور کلی زمینه فیلتر از طریق کد، اسلایسر و ارتباطات بین مدل داده، اعمال می شود. در ماتریس بالا به دلیل ارتباط بین جدول کارمندان و تاریخ با جدول فروش، مقادیر موجود در ماتریس به تفکیک نمایش داده شد. در مثال زیر یک اسلایسر اضافه شده که فروش محصولات با رنگ مشکی را نیز اضافه می کند. این فیلترها در تعامل با هم عمل می کنند، بنابراین هر سلول ماتریس، فروش به تفکیک کارشناس، زمان و رنگ را نمایش می دهد.
هنگام نوشتن عبارات DAX، می توانید هم زمینه ردیف و هم زمینه فیلتر را کنترل کنید. در ادامه به چگونگی استفاده از توابع مختلف برای این امر خواهیم پرداخت اما به یاد داشته باشید که زمینه ردیف به طور خودکار از طریق روابط منتشر نمی شود، در حالی که زمینه فیلتر روابط را مستقل از کد DAX می پیماید. در مثال بالا، یک محاسبه ساده بر روی فروش کل انجام شد و فیلتر از طریق روابط بین جداول اعمال شد. برای اینکه یک DAX نویس حرفه ای بشوید، لازم است تا با زمینه های ارزیابی یعنی زمینه فیلتر و زمینه ردیف و نحوه کارکرد آن آشنایی خوبی داشته باشید.
منبع: Businesstomy