ساخت جدول پارامتر در Power BI با DAX
الگوی جدول پارامتر برای ایجاد پارامترها در یک گزارش استفاده میشود، بهطوریکه کاربران میتوانند با استفاده از فیلترها تعامل داشته باشند و بهطور پویا رفتار گزارش را تغییر دهند. برای مثال، یک گزارش میتواند محصولات برتر را بر اساس دستهبندی نشان دهد و به کاربران این امکان را بدهد که از طریق فیلتر انتخاب کنند که میخواهند ۳، ۵، ۱۰ یا هر تعداد دیگری از بهترین محصولات را مشاهده کنند. مقادیر موجود برای یک پارامتر باید در یک یا چند جدول غیر مرتبط ذخیره شوند که ارتباطی با هیچکدام از جداول دیگر مدل ندارند. این فصل شامل چندین مثال با جدول پارامتر است، اما این الگو کاربرد گستردهتری دارد.
در این الگو، ما جداول پارامتر را با استفاده از کد DAX ایجاد میکنیم. ویژگی پارامتر در Power BI Desktop از تکنیک مشابهی استفاده میکند. در واقع، ویژگی پارامتر در Power BI Desktop یک فیلتر مرتبط با یک جدول محاسبهشده که با استفاده از تابع GENERATESERIES محاسبه میشود، ایجاد میکند؛ همچنین یک اندازه ایجاد میکند که مقدار انتخابشده پارامتر را باز میگرداند. این رویکردی است که در این الگو دنبال میشود. مزیت اصلی نوشتن جدول محاسبهشده بهصورت دستی در DAX این است که انعطافپذیری بیشتری در پارامترهایی که میتوان استفاده کرد فراهم میکند.
تغییر مقیاس یک اندازه کاربر ممکن است نیاز داشته باشد که انتخاب کند که آیا اندازه مبلغ فروش را بهصورت مقدار واقعی آن به دلار نشان دهد یا بهصورت هزاران یا میلیونها دلار. این کار با استفاده از یک فیلتر انجام میشود، مانند گزارشی که در شکل 1 مشاهده میشود. اگرچه مقدار واقعی فروش در حدود ۳۰ میلیون دلار است، اندازه آن بر اساس انتخاب فیلتر شده و به هزار تقسیم شده است.

فیلتر نیاز به یک جدول مقیاس با فهرست مقیاسها دارد. این جدول شامل دو ستون است: یکی برای توضیحات که در فیلتر استفاده میشود (واحدها، هزاران، میلیونها) و یکی برای ذخیره مخرج واقعی که هنگام مقیاسبندی اندازه استفاده میشود (۱، ۱۰۰۰، ۱۰۰۰۰۰۰). جدول محاسبهشده مقیاس را میتوان با استفاده از تابع DATATABLE ایجاد کرد:

استفاده از ویژگی “ترتیب بر اساس ستون” برای مرتبسازی جدول مقیاس بر اساس ستون “مخرج” یک روش بهینه است.اندازه مبلغ فروش نتیجه را بر اساس مخرج بهدستآمده از انتخاب فعلی در ستون Scale[Denominator] مقیاسبندی میکند:

شایان ذکر است که با وجود اینکه فیلتر بر اساس ستون Scale[Scale] است، این ستون همچنین ستون Scale[Denominator] را نیز فیلتر میکند. بنابراین، SELECTEDVALUE میتواند بهطور مستقیم ستون Scale[Denominator] را پرسوجو کند.
اگر چندین اندازه باید بر اساس همان فیلتر مقیاسبندی شوند، ممکن است راحتتر باشد که یک اندازه تعریف شود که مقدار مخرج را بازگرداند، بهجای اینکه همان قطعه کد را در هر اندازهای که نیاز به پیروی از انتخاب فیلتر دارد، تکرار کنید:



پارامترهای مستقل متعدد
اگر یک محاسبه به چندین پارامتر وابسته باشد، ممکن است چندین جدول پارامتر در مدل وجود داشته باشد – یکی برای هر پارامتر مستقل.
تصور کنید شبیهسازی تخفیف بر روی سفارشات: زمانی که تعداد کل اقلام در یک سفارش از تعداد مشخصی از مقالات (پارامتر حداقل مقدار) فراتر رود، اندازه “مقدار تخفیفخورده” پارامتر تخفیف را به تراکنش اعمال میکند. کاربران میتوانند با استفاده از فیلترها، همانطور که در شکل زیر نشان داده شده است، اثر انتخابهای خود را بر دادههای تاریخی شبیهسازی کنند.

پیادهسازی اندازه “مقدار تخفیفخورده” ابتدا یک جدول در متغیر Orders آماده میکند که شامل مقدار و تعداد هر سفارش است. نتیجه با تکرار بر روی جدول موجود در Orders بهدست میآید و تخفیف به هر سفارش فردی اعمال میشود، اگر تعداد کل از حد تعریفشده فراتر رود:


با استفاده از جداول پارامتر متعدد، پارامترها از یکدیگر مستقل هستند. به عبارت دیگر، یک کاربر میتواند هر ترکیب دلخواه از دو پارامتر را انتخاب کند و انتخاب انجامشده در یک فیلتر پارامتر تاثیری بر مقادیر موجود در سایر فیلترهای پارامتر نخواهد گذاشت. برای اعمال محدودیتها بر ترکیبهای موجود از پارامترها در فیلترهای مختلف، لازم است که الگوی پارامترهای وابسته متعدد پیادهسازی شود.
پارامترهای وابسته متعدد
اگر یک محاسبه به چندین پارامتر با گزینههای محدود وابسته باشد، یک جدول واحد با یک ستون برای هر پارامتر میتواند یک ردیف برای هر ترکیب معتبر از مقادیر پارامترها ذخیره کند.
تصور کنید سناریوی الگوی “پارامترهای مستقل متعدد” با دو پارامتر: حداقل تعداد (Min Quantity) و تخفیف (Discount). الزام اضافی این است که درصد تخفیف نمیتواند بیشتر از ۱۰ برابر حداقل تعداد باشد. به عبارت دیگر، اگر کاربری ۳ را برای حداقل تعداد انتخاب کند، حداکثر تخفیف موجود ۳۰٪ خواهد بود.
زمانی که کاربر یک انتخاب در فیلتر حداقل تعداد انجام میدهد، فیلتر تخفیف تنها مقادیر درصد مجاز را بر اساس حداقل تعداد انتخابشده نشان میدهد. شکل زیر یک مثال از این سناریو را نشان میدهد.

اندازه “مقدار تخفیفخورده” مشابه اندازهای است که برای مثال پارامترهای وابسته متعدد استفاده شده است. این اندازه ابتدا یک جدول در متغیر Orders آماده میکند که شامل تعداد و مبلغ هر سفارش است، و سپس محاسبه مناسب را با تکرار بر روی جدول موجود در Orders انجام میدهد:


جدول تخفیف هر دو پارامتر را در ستونهای Discount[Min Quantity] و Discount[Discount] شامل میشود. جدول تخفیف باید تنها شامل ردیفهایی باشد که مربوط به ترکیبهای معتبر از حداقل تعداد (Min Quantity) و تخفیف (Discount) باشند. تعریف زیر برای جدول محاسبهشده تخفیف تنها ترکیبهایی را تولید میکند که در آن درصد تخفیف کمتر از یا برابر با ۱۰ برابر حداقل تعداد باشد:

جدول تخفیف شامل ترکیبهایی مانند ۳ برای حداقل تعداد (Min Quantity) و ۵۰٪ برای تخفیف (Discount) نمیباشد. بنابراین، زمانی که فیلتر حداقل تعداد ۳ را انتخاب میکند، فیلتر تخفیف تنها مقادیر کمتر از یا برابر با ۳۰٪ را نشان میدهد. رابطه بین دو یا چند پارامتر بهطور ضمنی در جدول تخفیف یافت میشود و از طریق فیلتر متقابل به طور مستقیم بر فیلترها تاثیر میگذارد.
انتخاب محصولات برتر بهطور پویا
تصور کنید که به گزارشی مشابه گزارش موجود در شکل ۴ نیاز دارید، جایی که هر ستون یک تعداد مختلف از محصولات با بالاترین مبلغ فروش را فیلتر میکند. هر ستون فقط مبلغ فروش محصولات برتر N را نشان میدهد، جایی که N توسط عنوان ستون تعیین میشود. در این حالت، هر نام قابل مشاهده از پارامتر TopN به یک عدد مختلف نقشهبرداری میشود، که بهعنوان مقدار پارامتر در اندازه Top Sales استفاده میشود.

پارامتر TopN Products که به ستونهای گزارش اختصاص داده شده است، تعداد محصولات در نظر گرفتهشده برای محاسبه مبلغ فروش را تعریف میکند.
این نمایش در Power BI سخت بهدست میآید، زیرا فیلتر سطح بصری Top N تنها یکبار میتواند در یک نمایش بصری اعمال شود. در این حالت، هر ستون پارامتر متفاوتی برای تابع TOPN که در اندازه Top Sales استفاده میشود، دارد.
جدول پارامتر نیاز به دو ستون دارد: یکی برای نام قابل مشاهده (TopN Products) که توضیحات پارامتر را شامل میشود و ستون دیگر (TopN) عددی است که هم نتیجه انتخاب پارامتر و هم ترتیب مرتبسازی مقادیر TopN Products را نشان میدهد.
جدول محاسبهشده TopN Filter را میتوان با کد زیر تعریف کرد:

اندازه Top Sales از مقدار انتخابشده برای فیلتر کردن تعداد محصولات برتر استفاده میکند و با ارزیابی اندازه Sales Amount این کار را انجام میدهد:

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