تابع REMOVEFILTERS در Power BI
اخیرا ماکروسافت تابع جدیدی به نام REMOVEFILTERS را به مجموعه توابع DAX در Power BI اضافه نموده است. تابع REMOVEFILTERS که خوشبختانه نام مناسبی برای آن برگزیده شده و نام آن متناسب با کارکرد آن است. این تابع به عنوان پارامتر فیلتر در تابع CALCULATE به کار می رود. در این مطلب به معرفی تابع REMOVEFILETRS در Power BI و تفاوت های آن با ALL پرداخته شده است.
معرفی
ابتدا مقایسه ای بین ALL و REMOVEFILTERS داشته باشیم. به نظر می رسد این ۲ تابع مشابه هم عمل می کنند. حتما می دانید که تابع ALL برای صرف نظر از در نظر گرفتن فیلترهایی از سوی برخی ستون ها و جداول است.به طور مثال ALL(Categories) بدین معنی است که تمامی فیلترهای اعمال شده از سوی جدول Categories نادیده گرفته شود.
به مثال زیر توجه کنید. در این جدول ۳ Measure مورد استفاده قرار گرفته است. اولی میزان فروش، دومی میزان فروش و نادیده گرفتن تمام فیلترهای جدول Categories با استفاده از تابع ALL و سومی با استفاده از تابع REMOVEFILTERS است.
مژر اول به صورت زیر نوشته شده است.
مژر دوم به صورت زیر نوشته شده است.
مژر سوم به صورت زیر نوشته شده است.
در نهایت نتایج این محاسبات در جدول زیر قابل مشاهده است.
همان طور که مشاهده می کنید اعداد برای دو ستون برابر شده است چرا که ما در فرمول خود خواسته ایم که تمامی فیلترهای مربوط به جدول Categories نادیده گرفته شوند.
نقش های ALL
ALL هم می تواند به عنوان Table Function ایفای نقش کند هم به عنوان اصلاح کننده (modifier) در CALCULATE. به مثال زیر توجه کنید. در این مثال ALL به عنوان یک Table Function ایفای نقش می کند.
فرض کنید می خواهیم تعداد مشتریان را به تفکیک عنوان شغلی محاسبه کنیم و در نهایت درصد هر شغل را محاسبه کنیم.
مژر ابتدایی تعداد مشتریان را به تفکیک عنوان شغلی محاسبه می کند
در مژر دوم ALL در نقش Table Function ظاهر شده و کل مشتریان را محاسبه می کند.
مژر سوم حاصل تقسیم مژر اول بر مژر دوم است.
و در نهایت خروجی زیر حاصل می شود.
تابع REMOVEFILTERS نمی تواند در نقش Table Function به جای ALL مورد استفاده قرار گیرد. همان طور که مشاهده می کنید در صورتی که از این تابع در نقش Table Function استفاده کنیم با خطا مواجه خواهیم شد.
حال به نقش ALL به عنوان modifier بپردازیم. فرض کنید می خواهیم همان محاسبات را با استفاده از تابع CALCULATE انجام دهیم.
مژر اول به صورت زیر تعداد مشتریان را به تفکیک شغل نشان می دهد.
مژر دوم تعداد کل مشتریان را محاسبه می کند و در این جا ALL به عنوان modifier ایفای نقش می کند.
مژر سوم از حاصل تقسیم دو مژر بر یکدیگر به دست می آید.
در نهایت خروجی به صورت زیر قابل مشاهده است.
در اینجا تابع REMOVEFILTERS می تواند به عنوان جانشین ALL و به عنوان یک Modifier ایفای نقش کند. شما می توانید این تابع را جایگزین ALL کنید. به کد زیر توجه کنید.
و در نهایت خروجی عینا تکرار می شود.
شما می توانید بسته به نتیجه مورد نیاز خود از یک جدول، یک یا چند ستون به عنوان آرگومان REMOVEFILTERS استفاده کنید یا آن را بدون آرگومان به کار ببرید.
جمع بندی
تابع REMOVEFILTERS کاری مشابه با ALL انجام می دهد. حتی می توان گفت ALL در موارد بیشتری کاربرد دارد. ضمن اینکه ALL توابع هم خانواده ی بسیاری مانند ALLSELECTED و ALLEXCEPT دارد که این توابع هنوز برای REMOVEFILTERS ارائه نشده اند. لذا توصیه می شود از تابع REMOVEFILTERS به عنوان Modifier به عنوان جایگزین ALL استفاده نمایید و در موارد دیگر از ALL استفاده کنید.
ضمنا به این نکته توجه نمایید که تابع REMOVEFILTERS در Power BI ارائه شده است و در Excel Power pivot قابل استفاده نمی باشد.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقی