فیلتر کردن در Power Query
فیلتر کردن در Power Query
فیلتر کردن (filtering) در Power Query خیلی آسان است، اما به همان اندازه گمراه کننده می باشد. در این مطلب انواع فیلتر کردن در Power Query مورد بررسی قرار می گیرد. دلیل این اتفاق آن است که افراد بیشتر به آنچه می بینند باور دارند تا آنچه واقعا اتفاق می افتد. بیایید با هم مثالی را بررسی کنیم. برای بررسی فیلترینگ یک جدول ساده را ایجاد کردیم که در تصویر زیر قابل مشاهده است. این جدول ساده شامل 2 ستون کد خودرو و نام خودرو می باشد.
نحوه فیلتر کردن در Power Query
فیلتر کردن ردیف ها یکی از نیاز های اولیه و پایه ای هر نرم افزار هوش تجاری می باشد. Power BI نیز از این قاعده مستثنی نیست و این امکان را با قدرت و سادگی برای کاربران فراهم کرده است. جدولی مانند جدول نمونه ایجاد کنید. سپس به قسمت Edit Queries بروید.
در Power Query در سمت راست هر ستون کلیدی وجود دارد که می توانید از آن برای فیلتر کردن استفاده کنید. با انتخاب مقادیر مورد نظر تنها ردیف های با همان مقدار در جدول نمایش داده می شوند و مابقی ردیف ها حذف خواهند شد.
نتیجه فیلترینگ به صورت جدول زیر خواهد بود.
فیلترینگ ساده
برای فیلتر کردن معمولی تمام کاری که باید بکنید این است که مقدار مورد نظر خود را در باکس جستجو وارد نمایید. تمام ردیف هایی که شامل آن مقدار باشند برای شما لیست می شوند. به طور مثال فرض کنید ما می خواهیم جدولی حاوی تمامی خودروهای پراید را در مدل خود بارگذاری نماییم. با تایپ پراید در این باکس تمامی ردیف هایی که در ستون نام خودرو شامل این مقدار هستند نمایش داده می شود. به تصویر زیر توجه کنید.
جدول حاصل از این فیلترینگ در تصویر زیر نمایش داده شده است. تمامی خودرو های پراید در جدول باقی مانده و مابقی ردیف ها حذف گردیده اند.
اگر به کد تولید شده توسط Power Query دقت کنید به دلیل گمراه کننده بودن این نوع فیلترینگ پی خواهید برد. کدی که در پشت صحنه ایجاد شده به این صورت است که تک تک خودرو های پراید در کد آورده شده است. مشکل این فیلترینگ چیست؟
درست حدس زدید اگر خودروی جدیدی حاوی نام پراید به محصولات ما اضافه شود شامل این فیلترینگ نخواهد شد و در جدول نمایش داده نمی شود. برای تست این موضوع خودروی پراید 2022 را به مدل محصولات خود اضافه می کنیم.
مطمئنا شما نمی خواهید با اضافه کردن هر محصول جدید تغییرات را به صورت دستی ایجاد کنید بلکه می خواهید این تغییرات به صورت اتوماتیک ایجاد شوند. اما متاسفانه با انجام این نوع فیلترینگ نتیجه حاصله به صورت تصویر زیر خواهد بود و اثری از پراید 2022 در جدول نهایی ما نخواهد بود. دلیل اتفاق ساده است. کدی که برای این فیلترینگ توسط Power Query ایجاد شده است ردیف جدید را لحاظ نمی کند بلکه همان مدل های قبلی خودرو را در دل خود دارد.
فیلترینگ پیشرفته
فیلترینگ معمولی اگر چه بسیار ساده است و کاربر به راحتی فیلتر های مورد نیاز خود را ایجاد می کند اما به دلایلی که تا اینجا ذکر شد به سادگی ممکن است باعث اشتباه شود و باعث نتایجی شود که انتظار آن را ندارید. دقت کنید جداول شما در دنیای واقعی شامل 10 رکورد نیستند و گاهی اوقات رصد کردن مشکلات بسیار پیچیده است. برای رهایی از گمراهی، فیلترینگ پیشرفته پاسخگوی نیاز ما خواهد بود. برای این عمل مطابق تصویر زیر عمل می کنیم.
همان طور که در تصویر بالا مشاهده می کنید می توانید از انتخاب های متعددی برای فیلتر استفاده کنید. اما مورد قابل استفاده در مثال فعلی ما Contains است. مقدار مورد نظر خود را مطابق تصویر پایین در باکس وارد می کنید که به این معنی است که ستون نام خودرو شامل پراید باشد. همان طور که مشاهده می کنید مقدار پراید در باکس وارد شده است.
ابتدا جدول اول را بررسی می کنیم که کاملا مشابه روش اول عمل می کند و تمامی رکورد های شامل کلمه پراید را بر می گرداند. نتیجه در تصویر زیر قابل مشاهده است.
اکنون یک رکورد جدید به نام پراید 2022 را وارد جدول اصلی کرده و نتیجه را بررسی می کنیم. همان طور که در تصویر زیر قابل مشاهده است، جدول نهایی و فیلتر شده ما به صورت خودکار آپدیت می شود و محصول جدید ما در فیلتر نهایی رویت می شود. اگر نگاهی به کد ایجاد شده توسط M بیندازید متوجه تفاوت آن با کد ایجاد شده در روش اول می شوید. در واقع این نوع از فیلتر داینامیک و پویا عمل می کند و تغییرات آینده نیز شامل این فیلتر می شوند و هیچ داده ای از دست نمی رود.
خلاصه
روش فیلترینگ معمولی بسیار ساده و مناسب عمل می کند اما تنها زمانی که رشته و عددی را دقیقا جستجو کنید. به طور مثال اگر دقیقا می خواهید کلمه پراید 2022 را جستجو کنید این روش بسیار مناسب عمل می کند. اما زمانی که به دنبال مقادیر شامل یک رشته یا رنجی از اعداد و تاریخ هستید بهتر است از فیلترینگ پیشرفته استفاده کنید.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقی
[…] فیلتر کردن در Power Query […]
با سلام
با تشكر از اطلاعات خوبي كه قرار داديد
من ميخواستم تو پاوركوري يه فيلتر بازم كه داده هام رو از يه تاريخي به بعد بياره و مي خوام اون تاريخ را رو از يك شيت اكسل بگيره.
ممنون ميشم اگه راهنمايي كنيد
سلام
بله امکان پذیر است