Session 41 — Field Parameters، Dynamic Measures، Dynamic Dimensions و Dynamic Visuals در Power BI
Field Parameters، Dynamic Measures، Dynamic Dimensions و Dynamic Visuals در Power BI
بخشی از آموزش جامع Power BI
محتوای درس Field Parameters، Dynamic Measures، Dynamic Dimensions و Dynamic Visuals در Power BI
شروع جلسه؛ یک Visual، چند مدل تحلیل
تا اینجا برای Sales، Profit، Margin و Quantity معمولاً Visualهای جدا میساختیم. حالا میخواهیم کاربر خودش انتخاب کند همان نمودار چه KPI یا چه Dimensionی را نشان بدهد.
Field Parameters کمک میکنند Report هم خلوتتر شود و هم کاربر آزادی بیشتری برای تحلیل داشته باشد.
۴۱.۱. مشکل Dashboardهای ثابت
اگر برای هر KPI و هر Dimension یک Chart جدا بسازیم، خیلی زود صفحه پر از Visual میشود. Dynamic Report این انفجار را کنترل میکند.
۴۱.۲. معماری گزارش پویا
۴۱.۳. Field Parameter چیست؟
Field Parameter یک قابلیت Power BI برای انتخاب پویا بین Fieldها یا Measureهاست. کاربر از Slicer انتخاب میکند و همان Selection روی Visual اعمال میشود.
۴۱.۴. Measure Parameter
مثلاً بین Total Sales، Profit، Margin % و Total Quantity انتخاب کنیم.
۴۱.۵. Dimension Parameter
مثلاً محور Chart را بین Region، Category، Customer Segment و Salesperson تغییر بدهیم.
۴۱.۶. ساخت Field Parameter
از Modeling > New parameter > Fields استفاده کن، Field/Measureهای موردنیاز را انتخاب کن و Parameter را بساز.
۴۱.۷. نمونه ساختار Parameter
KPI Parameter = {
("Sales", NAMEOF([Total Sales]), 0),
("Profit", NAMEOF([Profit]), 1),
("Margin", NAMEOF([Margin %]), 2),
("Quantity", NAMEOF([Total Qty]), 3)
}
۴۱.۸. NAMEOF
NAMEOF باعث میشود Reference به Field/Measure به شکل ساختاری نگهداری شود و نسبت به نوشتن نام به صورت Text قابل اتکاتر باشد.
۴۱.۹. Slicer Parameter
Field Parameter را در Slicer قرار بده و Parameter Field را در Values/Y-axis Visual استفاده کن.
۴۱.۱۰. یک Visual، چند KPI
۴۱.۱۱. Dynamic Axis
Parameter دوم بساز تا کاربر Dimension تحلیل را هم انتخاب کند.
۴۱.۱۲. Axis Parameter نمونه
Axis Parameter = {
("Region", NAMEOF(DimBranch[Region]), 0),
("Category", NAMEOF(DimProduct[Category]), 1),
("Segment", NAMEOF(DimCustomer[Segment]), 2)
}
۴۱.۱۳. ترکیب KPI و Axis
حالا یک Bar Chart میتواند سؤالهای مختلف جواب دهد: Sales by Region، Profit by Category، Margin by Segment و غیره.
۴۱.۱۴. Dynamic Report Matrix
| KPI Selection | Axis Selection | تحلیل |
|---|---|---|
| Sales | Region | فروش مناطق |
| Profit | Category | سود دستهها |
| Margin | Segment | حاشیه سود سگمنت |
| Quantity | Region | حجم فروش مناطق |
۴۱.۱۵. Dynamic Title
Dynamic Chart Title =
SELECTEDVALUE('KPI Parameter'[KPI Parameter], "KPI") &
" بر اساس " &
SELECTEDVALUE('Axis Parameter'[Axis Parameter], "Dimension")
۴۱.۱۶. عنوان Parameter
اگر Selection چندگانه مجاز باشد، SELECTEDVALUE ممکن است Default برگرداند. UX را طوری طراحی کن که Single Select باشد یا عنوان Multi-select را مدیریت کن.
۴۱.۱۷. Single Select
برای انتخاب KPI معمولاً Single Select منطقیتر است؛ چون ترکیب Sales و Margin در یک محور همیشه معنی ندارد.
۴۱.۱۸. Multi-select
در بعضی سناریوها میتوان چند Measure را همزمان انتخاب کرد، ولی Scale و Format متفاوت میتواند Visual را گیجکننده کند.
۴۱.۱۹. Dynamic Measures با SWITCH
قبل از Field Parameters، الگوی رایج استفاده از Disconnected Table + SELECTEDVALUE + SWITCH بود.
۴۱.۲۰. Selector Table
Metric Selector =
DATATABLE(
"Metric", STRING,
{{"Sales"},{"Profit"},{"Margin"},{"Quantity"}}
)
۴۱.۲۱. SWITCH Measure
Selected Metric =
SWITCH(
SELECTEDVALUE('Metric Selector'[Metric]),
"Profit", [Profit],
"Margin", [Margin %],
"Quantity", [Total Qty],
[Total Sales]
)
۴۱.۲۲. Field Parameter vs SWITCH
| Field Parameter | SWITCH Measure |
|---|---|
| Field واقعی را عوض میکند | یک Measure خروجی میدهد |
| Axis/Measure هر دو | بیشتر Metric logic |
| ساخت سادهتر UI | کنترل منطقی بیشتر |
| Format میتواند بهتر مدیریت شود | Format پویا نیاز به طراحی دارد |
۴۱.۲۳. کدام را انتخاب کنیم؟
اگر هدف تغییر Field/Axis/Measure Visual است، Field Parameter معمولاً گزینه طبیعی است. اگر منطق محاسباتی پیچیده و سفارشی داری، SWITCH هنوز بسیار مفید است.
۴۱.۲۴. Dynamic Formatting
یکی از چالشهای گزارش پویا این است که Sales Currency است، Margin درصد و Quantity عدد صحیح.
۴۱.۲۵. Format String
برای مدل حرفهای میتوان از Dynamic Format Strings و در سناریوهای Enterprise از Calculation Groups استفاده کرد تا Format هر KPI درست بماند.
۴۱.۲۶. چرا FORMAT همیشه خوب نیست؟
FORMAT معمولاً خروجی را Text میکند. اگر Measure قرار است در Chart و محاسبات عددی باقی بماند، Dynamic Format String انتخاب بهتری است.
۴۱.۲۷. Dynamic Card
Card اصلی میتواند مقدار KPI انتخابی را نشان دهد و Subtitle آن نام KPI را از Selection بگیرد.
۴۱.۲۸. Dynamic Target
Selected Target =
SWITCH(
SELECTEDVALUE('Metric Selector'[Metric]),
"Profit", [Profit Target],
"Margin", [Margin Target],
"Quantity", [Quantity Target],
[Sales Target]
)
۴۱.۲۹. Dynamic Variance
Selected Variance =
[Selected Metric] - [Selected Target]
۴۱.۳۰. Dynamic Achievement
Selected Achievement % =
DIVIDE([Selected Metric], [Selected Target])
۴۱.۳۱. Dynamic Status
Status باید جهت KPI را هم بشناسد. Margin و Sales Higher-is-Better هستند ولی Defect Rate ممکن است Lower-is-Better باشد.
۴۱.۳۲. KPI Metadata
| Metric | Direction | Format |
|---|---|---|
| Sales | Higher | Currency |
| Profit | Higher | Currency |
| Margin | Higher | Percent |
| Defect | Lower | Percent |
۴۱.۳۳. Metadata-driven Report
در مدلهای بزرگ میتوان KPI Metadata را برای Label، Direction، Unit، Owner و Description نگهداری کرد و Report را استانداردتر ساخت.
۴۱.۳۴. Dynamic Subtitle
KPI Subtitle =
"نمایش بر اساس انتخاب کاربر | " &
SELECTEDVALUE('Axis Parameter'[Axis Parameter], "Region")
۴۱.۳۵. Dynamic Tooltip
Tooltip هم میتواند بر اساس KPI انتخابشده محتوا و عنوان مناسب نشان دهد.
۴۱.۳۶. Dynamic Reference Line
اگر Target Measure پویا باشد، Reference Line یا مقایسه Target هم باید با KPI انتخابشده هماهنگ شود.
۴۱.۳۷. Dynamic Ranking
Dynamic Rank =
RANKX(
ALLSELECTED(DimProduct[ProductName]),
[Selected Metric],
, DESC
)
۴۱.۳۸. Rank Direction
برای Lower-is-Better ممکن است ترتیب Rank برعکس شود. Ranking را از Metadata Direction آگاه کن.
۴۱.۳۹. Dynamic Top N
Top N Parameter را با KPI Selector ترکیب کن تا کاربر مثلاً Top 5 Products by Profit یا Top 10 Customers by Sales را ببیند.
۴۱.۴۰. What-if + Field Parameter
Field Parameter میگوید چه چیزی تحلیل شود؛ What-if Parameter میگوید فرض سناریو چقدر باشد. ترکیب این دو Dashboard بسیار تعاملی میسازد.
۴۱.۴۱. Dynamic Time Metric
میتوان Selector برای Actual، MTD، YTD، Previous Year و Growth ساخت.
۴۱.۴۲. Time Selector نمونه
Time View =
DATATABLE(
"View", STRING,
{{"Actual"},{"MTD"},{"YTD"},{"PY"},{"Growth"}}
)
۴۱.۴۳. Selected Time Measure
Selected Time Value =
SWITCH(
SELECTEDVALUE('Time View'[View]),
"MTD", [Sales MTD],
"YTD", [Sales YTD],
"PY", [Sales PY],
"Growth", [Sales Growth %],
[Total Sales]
)
۴۱.۴۴. Dynamic Granularity
Dimension Parameter میتواند Date Hierarchy یا Fieldهای Year/Quarter/Month را تغییر دهد، ولی تجربه زمان باید از نظر Sort و Axis درست تست شود.
۴۱.۴۵. Dynamic Table Columns
Field Parameters برای Matrix/Table هم مفیدند؛ کاربر میتواند ستونهای تحلیلی موردنیازش را انتخاب کند.
۴۱.۴۶. Self-service Experience
این قابلیت به مدیر یا Analyst اجازه میدهد بدون ساخت Report جدید، زاویه تحلیل را تغییر دهد.
۴۱.۴۷. خطر Self-service بیش از حد
اگر ۲۰ KPI × ۱۵ Dimension را آزاد کنی، ۳۰۰ ترکیب میسازی که بسیاری از آنها معنی کسبوکاری ندارند.
۴۱.۴۸. Curated Flexibility
گزارش پویا باید آزادی کنترلشده بدهد. فقط ترکیبهایی را ارائه کن که واقعاً قابل تفسیرند.
۴۱.۴۹. Parameter Groups
برای Finance، Customer و Operations میتوان Selectorهای جدا یا Pageهای جدا داشت تا انتخابها معنادار بمانند.
۴۱.۵۰. Default Selection
Report هنگام باز شدن باید KPI و Axis پیشفرض مفیدی داشته باشد.
۴۱.۵۱. Bookmark و Parameter
Bookmark میتواند Selection Parameter را هم ذخیره کند، ولی اگر هدف فقط تغییر KPI است، خود Parameter UX سادهتری دارد.
۴۱.۵۲. Field Parameter به جای Bookmark Explosion
به جای ۸ Bookmark برای ۸ KPI، یک Parameter میتواند همان Visual را پویا کند.
۴۱.۵۳. Parameter و Drill-through
صفحه Drill-through باید بداند آیا KPI Selection مبدأ باید در مقصد هم حفظ شود یا Detail Page KPIهای ثابت خودش را دارد.
۴۱.۵۴. Parameter و Tooltip
Tooltip Page را با KPI Selection تست کن؛ عنوان و Format نباید با Metric انتخابی ناسازگار شود.
۴۱.۵۵. Parameter و Sync Slicer
در صورت نیاز Selector را بین Pageها Sync کن تا KPI انتخابی در Journey کاربر حفظ شود.
۴۱.۵۶. Dynamic Narrative
KPI Narrative =
"در شاخص " & [Selected KPI Name] &
" مقدار فعلی " & [Selected KPI Display] &
" است."
۴۱.۵۷. Narrative با احتیاط
متن پویا باید کوتاه و قابل اعتماد باشد. از تولید جملههای طولانی که Contextهای مختلف را اشتباه ترکیب میکنند دوری کن.
۴۱.۵۸. Dynamic Color
میتوان رنگ Data/Status را با Measure تعیین کرد، ولی Semantic Color باید در کل گزارش ثابت بماند.
۴۱.۵۹. Status Color Measure
Status Color =
SWITCH(
[Selected Status],
"Critical", "#C00000",
"Warning", "#D97706",
"#2E7D32"
)
۴۱.۶۰. Accessibility
Dynamic Color را با Text/Icon Status همراه کن؛ رنگ تنها حامل پیام نباشد.
۴۱.۶۱. Dynamic Axis Title
عنوان محور را با Selection هماهنگ کن تا کاربر بداند چه چیزی را میبیند.
۴۱.۶۲. Dynamic Unit
اگر Metric تغییر میکند، واحد نمایش هم باید تغییر کند: تومان، درصد، تعداد، روز و غیره.
۴۱.۶۳. Parameter Ordering
ترتیب گزینهها را Business-friendly تنظیم کن؛ مثلاً Sales، Profit، Margin، Quantity نه ترتیب تصادفی.
۴۱.۶۴. Friendly Labels
نام فنی Measure مثل m_TotalNetSales را مستقیم به کاربر نشان نده. Label Parameter باید انسانی باشد.
۴۱.۶۵. Localization
برای گزارش فارسی، Labelهای Parameter را فارسی یا دوزبانه طراحی کن؛ نام داخلی Model میتواند انگلیسی بماند.
۴۱.۶۶. Performance
Field Parameter خودش جادو نمیکند؛ Measure انتخابشده همان هزینه محاسباتی خودش را دارد.
۴۱.۶۷. Heavy Measures
اگر یک Selector شامل Measureهای خیلی سنگین است، هر Selection را با Performance Analyzer تست کن.
۴۱.۶۸. Dynamic Visual و Query
مزیت مهم این است که به جای چند Visual همزمان، یک Visual فعال میتواند Query موردنیاز Selection را اجرا کند؛ ولی طراحی واقعی را اندازهگیری کن.
۴۱.۶۹. Project Pattern
| Selector | Options |
|---|---|
| KPI | Sales/Profit/Margin/Qty |
| Dimension | Region/Category/Segment |
| Time | Actual/YTD/Growth |
| Top N | 5/10/20 |
| Scenario | Target/Price/Threshold |
۴۱.۷۰. پروژه شرکت هانا؛ Dynamic Executive
یک Chart مرکزی بساز که KPI و Dimension آن توسط مدیر انتخاب شود. کنار آن Card، Target، Variance و Rank بر اساس همان KPI تغییر کنند.
۴۱.۷۱. پروژه شرکت هانا؛ Dynamic Customer Analysis
Axis بین Segment، Region و Customer Type؛ Metric بین Sales، Profit و Frequency؛ Top N نیز قابل تنظیم.
۴۱.۷۲. پروژه شرکت هانا؛ Dynamic Product Analysis
Metric بین Sales، Profit، Margin و Quantity و Axis بین Category، Product Type و Brand.
۴۱.۷۳. UX Selector
Slicerهای Parameter را مثل Controlهای اصلی صفحه طراحی کن، نه مثل Filterهای فرعی گمشده.
۴۱.۷۴. Selector Placement
اگر KPI Selection کل صفحه را تغییر میدهد، آن را نزدیک Title یا Header قرار بده.
۴۱.۷۵. Context Indicator
نام KPI و Dimension انتخابشده را در عنوان Page یا Visual نشان بده.
۴۱.۷۶. QA Matrix
| تست | بررسی |
|---|---|
| هر KPI | Value/Format |
| هر Axis | Sort/Blank |
| KPI×Axis | Business meaning |
| Multi-select | Expected behavior |
| Drill/Tooltip | Context |
| Mobile | Control usability |
۴۱.۷۷. خطای رایج؛ همه KPIها در یک Selector
Metricهایی با ماهیت کاملاً متفاوت را فقط برای کم کردن تعداد Visualها کنار هم نگذار.
۴۱.۷۸. خطای رایج؛ Format اشتباه
Margin را با علامت تومان یا Sales را با درصد نمایش نده.
۴۱.۷۹. خطای رایج؛ عنوان ثابت
Visual تغییر میکند ولی Title هنوز «Sales by Region» است؛ این یکی از خطرناکترین خطاهای Dynamic Report است.
۴۱.۸۰. خطای رایج؛ Rank ثابت
اگر KPI عوض شده ولی Rank هنوز بر اساس Sales است، تحلیل متناقض میشود.
۴۱.۸۱. خطای رایج؛ آزادی بدون Governance
Self-service خوب یعنی آزادی در چارچوب تعریفشده، نه ساخت هر ترکیب ممکن.
۴۱.۸۲. Best Practiceها
Field Parameter را برای تغییر Field/Measure استفاده کن.
SWITCH را برای منطق محاسباتی پیچیده نگه دار.
Single Select را برای KPIهای ناسازگار ترجیح بده.
Title، Unit و Format را Dynamic کن.
Rank و Target را با KPI هماهنگ کن.
گزینههای Parameter را محدود و معنادار نگه دار.
Default Selection خوب تعیین کن.
Parameter را با Tooltip/Drill تست کن.
Naming و Friendly Label داشته باش.
Performance همه گزینهها را تست کن.
۴۱.۸۳. تمرین ۱
Field Parameter برای Sales، Profit، Margin و Quantity بساز و آن را روی یک Bar Chart اعمال کن.
۴۱.۸۴. تمرین ۲
Axis Parameter بین Region، Category و Segment بساز.
۴۱.۸۵. تمرین ۳
Dynamic Title بساز که KPI و Axis انتخابشده را نمایش دهد.
۴۱.۸۶. تمرین ۴
Dynamic Target، Variance و Achievement برای KPI Selector بساز.
۴۱.۸۷. تمرین ۵
Dynamic Rank و Top N را بر اساس Metric انتخابشده پیاده کن.
۴۱.۸۸. تمرین ۶
یک Matrix بساز که کاربر بتواند ستونهای تحلیلی موردنظرش را با Field Parameter انتخاب کند.
۴۱.۸۹. تمرین چالشی
یک صفحه Dynamic Analysis بساز با چهار Control: KPI، Dimension، Time View و Top N. تمام Titleها، Formatها، Rank و Tooltip باید با Selection هماهنگ شوند.
۴۱.۹۰. پروژه Session؛ Dynamic Analytics Workbench
| خروجی | شرح |
|---|---|
| KPI Parameter | Metric selection |
| Axis Parameter | Dimension selection |
| Time Selector | Period logic |
| Dynamic KPI | Actual/Target/Variance |
| Dynamic Rank | Selected metric |
| Dynamic Title | Context |
| Dynamic Format | Unit/percent/currency |
| QA | All combinations |
این پروژه باید به کاربر آزادی تحلیل بدهد، بدون اینکه Report تبدیل به یک ابزار گیجکننده و بدون قاعده شود.
جمعبندی Session 41
Field Parameters یکی از بهترین ابزارها برای کم کردن شلوغی و افزایش انعطاف گزارش هستند. اصل مهم این است: Dynamic بودن باید فهم گزارش را بیشتر کند، نه اینکه مسئولیت طراحی را به گردن کاربر بیندازد.
Controlled choice → Dynamic context → Consistent KPI logic → Better exploration
Session 42: Row-Level Security یا RLS؛ طراحی Role، Dynamic RLS، USERPRINCIPALNAME، Security Mapping، تست امنیت و سناریوهای سازمانی.