اختصاص مقادیر به VAR از تابع SWITCH در Power BI
در دنیای تحلیل دادهها با Power BI، زبان DAX نقش کلیدی در ایجاد محاسبات پویا و مدلسازی دادهها ایفا میکند. یکی از قابلیتهای قدرتمند DAX، استفاده از متغیرها (VAR) برای سادهسازی فرمولها و بهینهسازی عملکرد است. در این مقاله، بهصورت تخصصی به بررسی نحوه تخصیص مقادیر به متغیرها با استفاده از تابع SWITCH میپردازیم. این موضوع برای توسعهدهندگان مدلهای پیچیده در Power BI بسیار حیاتی است، زیرا امکان کنترل بهتر منطق تصمیمگیری و کاهش پیچیدگی کد را فراهم میکند.
متغیرها (VAR) در DAX چیستند؟
متغیرها در DAX با کلیدواژه VAR تعریف میشوند و به شما اجازه میدهند تا یک مقدار را ذخیره کرده و در بخشهای مختلف فرمول از آن استفاده کنید. این کار باعث افزایش خوانایی، کاهش محاسبات تکراری و بهبود عملکرد مدل میشود.
VAR TotalSales = SUM(Sales[Amount])
RETURN TotalSales * 0.1
تابع SWITCH در DAX
تابع SWITCH برای ارزیابی چند شرط و بازگرداندن مقدار مناسب بر اساس تطابق استفاده میشود. این تابع جایگزین مناسبی برای IFهای تو در تو است و خوانایی کد را بهطور چشمگیری افزایش میدهد.
SWITCH(
TRUE(),
condition1, result1,
condition2, result2,
...
result_if_no_match
)
چالش: تخصیص مقادیر به VAR از SWITCH
در بسیاری از موارد، کاربران Power BI میخواهند بر اساس یک شرط، مقدار متفاوتی را به یک متغیر اختصاص دهند. اما DAX اجازه نمیدهد که داخل SWITCH چند متغیر را بهصورت مستقیم مقداردهی کنیم. بنابراین باید از ساختارهای مناسب استفاده کنیم تا این منطق را پیادهسازی کنیم.
مثال پایه: تخصیص مقدار به یک متغیر از SWITCH
فرض کنید میخواهید بر اساس انتخاب کاربر در یک slicer، یکی از ستونهای جدول را به متغیر اختصاص دهید:
VAR SelectedColumn =
SWITCH(
[UserSelection],
1, VALUES(Table[Column1]),
2, VALUES(Table[Column2]),
3, VALUES(Table[Column3])
)
RETURN SelectedColumn
در این مثال، بسته به مقدار [UserSelection]، یکی از ستونها به متغیر SelectedColumn اختصاص داده میشود.
نکته مهم: SWITCH فقط مقدار نهایی را بازمیگرداند
در DAX نمیتوان داخل SWITCH چندین متغیر را مقداردهی کرد. بهعبارت دیگر، نمیتوان نوشت:
SWITCH(
TRUE(),
condition1, VAR x = 1 VAR y = 2,
condition2, VAR x = 3 VAR y = 4
)
این ساختار معتبر نیست. راهحل این است که از SWITCH برای مقداردهی به یک متغیر استفاده کرده و سایر متغیرها را خارج از SWITCH تعریف کنیم.
راهحل پیشرفته: استفاده از SWITCH در ترکیب با چند VAR
VAR SelectedMeasure =
SWITCH(
[MeasureSelector],
"Sales", SUM(Sales[Amount]),
"Profit", SUM(Sales[Profit]),
"Quantity", SUM(Sales[Quantity])
)
VAR Threshold =
SWITCH(
[MeasureSelector],
"Sales", 100000,
"Profit", 20000,
"Quantity", 500
)
RETURN
IF(SelectedMeasure > Threshold, "High", "Low")
در این مثال، دو متغیر SelectedMeasure و Threshold بر اساس انتخاب کاربر مقداردهی میشوند و سپس با هم مقایسه میشوند.
استفاده در ستون محاسبهشده
ProductCategoryFlag =
VAR CategoryType =
SWITCH(
Products[Category],
"Electronics", "Tech",
"Furniture", "Home",
"Clothing", "Fashion",
"Other"
)
RETURN CategoryType
این فرمول یک ستون جدید ایجاد میکند که دستهبندی محصول را به نوع کلیتر تبدیل میکند.
استفاده در معیارها (Measures)
DynamicMetric =
VAR Metric =
SWITCH(
SELECTEDVALUE(MetricSelector[Metric]),
"Total Sales", SUM(Sales[Amount]),
"Total Profit", SUM(Sales[Profit]),
"Units Sold", SUM(Sales[Quantity])
)
RETURN Metric
این معیار بهصورت پویا مقدار مورد نظر را بر اساس انتخاب کاربر محاسبه میکند.
استفاده در معیارهای پویا (Dynamic Measures)
در مدلهای تعاملی، معیارهای پویا نقش مهمی دارند. با استفاده از SWITCH و VAR میتوان معیارهایی ساخت که بر اساس انتخاب کاربر تغییر کنند.
مثال:
DynamicMetric =
VAR SelectedMetric =
SWITCH(
SELECTEDVALUE(MetricSelector[Metric]),
"Total Sales", SUM(Sales[Amount]),
"Total Profit", SUM(Sales[Profit]),
"Units Sold", SUM(Sales[Quantity]),
BLANK()
)
RETURN SelectedMetric
نکات مهم در استفاده از SWITCH و VAR
- خوانایی کد: استفاده از VAR و SWITCH باعث سادهتر شدن فرمولها میشود.
- جلوگیری از محاسبات تکراری: با ذخیرهسازی مقادیر در متغیرها، از محاسبه چندباره جلوگیری میشود.
- افزایش عملکرد: مدلهایی که از VAR استفاده میکنند، سریعتر اجرا میشوند.
- محدودیتها: نمیتوان چند VAR را داخل یک SWITCH مقداردهی کرد؛ باید برای هر متغیر SWITCH جداگانه نوشت.
خطاهای رایج
- استفاده از SELECTEDVALUE بدون بررسی مقدار پیشفرض ممکن است باعث خطا شود.
- عدم استفاده از BLANK در حالت عدم تطابق ممکن است نتیجه نامشخص ایجاد کند.
- استفاده از SWITCH بدون TRUE() در شرایط پیچیده ممکن است منجر به ارزیابی نادرست شود.
نتیجهگیری
استفاده از تابع SWITCH برای مقداردهی به متغیرها در Power BI یک تکنیک قدرتمند برای ساخت مدلهای پویا و قابل انعطاف است. با درک صحیح از نحوه عملکرد SWITCH و محدودیتهای آن، میتوان فرمولهایی نوشت که هم خوانا باشند و هم عملکرد بالایی داشته باشند. این مقاله راهنمایی جامع برای توسعهدهندگان Power BI است که میخواهند منطق تصمیمگیری را بهصورت مؤثر در مدلهای خود پیادهسازی کنند.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download
