فصل 41 از 50 درس 1 از 1

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 این انفجار را کنترل می‌کند.

۴۱.۲. معماری گزارش پویا

شکل ۴۱-۱ — Selection کاربر از طریق Parameter تعیین می‌کند Visual چه Field یا Measureی را نمایش دهد
شکل ۴۱-۱ — Selection کاربر از طریق Parameter تعیین می‌کند Visual چه Field یا Measureی را نمایش دهد

۴۱.۳. 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

شکل ۴۱-۲ — کاربر KPI را عوض می‌کند ولی Visual و Layout ثابت می‌ماند
شکل ۴۱-۲ — کاربر KPI را عوض می‌کند ولی Visual و Layout ثابت می‌ماند

۴۱.۱۱. 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 SelectionAxis Selectionتحلیل
SalesRegionفروش مناطق
ProfitCategoryسود دسته‌ها
MarginSegmentحاشیه سود سگمنت
QuantityRegionحجم فروش مناطق

۴۱.۱۵. 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 ParameterSWITCH 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

MetricDirectionFormat
SalesHigherCurrency
ProfitHigherCurrency
MarginHigherPercent
DefectLowerPercent

۴۱.۳۳. 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

SelectorOptions
KPISales/Profit/Margin/Qty
DimensionRegion/Category/Segment
TimeActual/YTD/Growth
Top N5/10/20
ScenarioTarget/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

تستبررسی
هر KPIValue/Format
هر AxisSort/Blank
KPI×AxisBusiness meaning
Multi-selectExpected behavior
Drill/TooltipContext
MobileControl 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 ParameterMetric selection
Axis ParameterDimension selection
Time SelectorPeriod logic
Dynamic KPIActual/Target/Variance
Dynamic RankSelected metric
Dynamic TitleContext
Dynamic FormatUnit/percent/currency
QAAll 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، تست امنیت و سناریوهای سازمانی.