DAX (Data Analysis Expressions) زبان خاص برای تحلیل دادههاست که در ابزارهای Microsoft مانند Power BI، Power Pivot و SQL Server Analysis Services استفاده میشود. درک مفاهیم Context در DAX برای نوشتن فرمولهای پیچیده و مؤثر بسیار مهم است.
3 نوع Context اصلی در DAX وجود دارد: Row Context، Query Context و Filter Context.
در این مقاله به بررسی و تفاوتهای این ۳ نوع Context میپردازیم.
Row Context
Row Context زمانی ایجاد میشود که یک فرمول DAX روی هر ردیف یک جدول اعمال شود. این نوع Context زمانی بوجود میآید که:
- در حال محاسبه ستونهای محاسباتی (Calculated Columns) باشید.
- از توابع تکرارگر (Iterator Functions) مانند
SUMX
,AVERAGEX
,MINX
و غیره استفاده کنید.
مثال
فرض کنید یک جدول فروش با ستونهای Quantity
و Price
دارید و میخواهید یک ستون محاسباتی به نام TotalSales
اضافه کنید که حاصل ضرب Quantity
و Price
باشد.
TotalSales = Sales[Quantity] * Sales[Price]
در اینجا، هر ردیف جداگانه محاسبه میشود و Row Context بر این محاسبات اعمال میشود.
Query Context
Query Context زمانی ایجاد میشود که یک کوئری (پرسش) روی یک جدول یا چندین جدول اعمال شود. Query Context توسط فیلترها، برشها (Slicers)، و تعاملات کاربر با گزارشها تعیین میشود. این Context به صورت خودکار توسط موتور DAX بر اساس تعاملات کاربر در گزارشها ایجاد میشود.
مثال
فرض کنید، گزارشی دارید که فروش کل محصولات در سال ۲۰۲۲ را نشان میدهد. Query Context به صورت خودکار رکوردهای جدول فروش را فیلتر کرده تا فقط رکوردهایی که در سال ۲۰۲۲ هستند، محاسبه شوند.
Filter Context
Filter Context ترکیبی از فیلترهای اعمال شده در Query Context و فیلترهایی است که توسط توابع DAX اضافه میشوند. این نوع Context به شما این امکان را میدهد که محاسبات خود را به صورت دقیقتر و پویا انجام دهید.
مثال
فرض کنید، میخواهید فروش کل یک محصول خاص را محاسبه کنید. از تابع CALCULATE
برای اعمال فیلتر استفاده میکنیم:
TotalSalesForProduct = CALCULATE(
SUM(Sales[TotalSales]),
Sales[Product] = "Product A"
)
در اینجا، Filter Context با استفاده از تابع CALCULATE
تغییر میکند تا فقط رکوردهایی که محصول آنها “Product A” است، محاسبه شوند. این نوع Context به شما این امکان را میدهد که فیلترهای پیچیده و چندگانه را اعمال کنید.
توابع مهم در Contextهای مختلف
توابع تکرارگر (Iterator Functions)
این توابع در DAX مانند SUMX
, AVERAGEX
, MINX
, MAXX
و غیره به شما این امکان را میدهند که Row Context را بر روی مجموعهای از دادهها اعمال کنید. این توابع به صورت تکراری بر روی هر ردیف اعمال میشوند و سپس نتایج حاصل از هر ردیف را ترکیب میکنند.
توابع محاسبه (CALCULATE Functions)
توابع CALCULATE
و CALCULATETABLE
از مهمترین توابع در DAX هستند که به شما این امکان را میدهند که Filter Context را تغییر داده و محاسبات پیچیدهتری انجام دهید. این توابع فیلترهای موجود را با فیلترهای جدید ترکیب میکنند و محاسبات را بر اساس Context جدید انجام میدهند.
ارتباط بین Contextها
یکی از نکات مهم در درک Contextهای DAX این است که Row Context و Filter Context میتوانند به صورت همزمان وجود داشته باشند. به عنوان مثال، در یک تابع تکرارگر، هر ردیف دارای Row Context خاص خود است و Filter Context نیز میتواند بر روی همان ردیفها اعمال شود.
مثال جامع
فرض کنید یک جدول فروش با دادههای زیر دارید:
Product | Quantity | Price | Year |
---|---|---|---|
A | ۱۰ | ۵ | ۲۰۲۲ |
B | ۱۵ | ۷ | ۲۰۲۲ |
A | ۲۰ | ۵ | ۲۰۲۳ |
B | ۱۰ | ۷ | ۲۰۲۳ |
و میخواهید مجموع فروش برای محصول A در سال ۲۰۲۲ را محاسبه کنید. از توابع تکرارگر و CALCULATE
به صورت زیر استفاده میکنیم:
TotalSalesForProductA2022 = CALCULATE(
SUMX(
Sales,
Sales[Quantity] * Sales[Price]
),
Sales[Product] = "A",
Sales[Year] = 2022
)
در اینجا، توابع SUMX
برای محاسبه Row Context استفاده میشود و CALCULATE
برای ایجاد Filter Context جدید اعمال میشود.
نتیجهگیری
در این مقاله به تفاوتهای بین Row Context، Query Context و Filter Context در DAX پرداخته شد. فهمیدن این مفاهیم میتواند به شما کمک کند تا فرمولهای دقیقتر و مؤثرتری بنویسید و تحلیل دادههای خود را بهبود ببخشید. استفاده درست از این Contextها به شما این امکان را میدهد که تحلیلهای پیشرفتهتری انجام داده و گزارشهای دقیقتری تهیه کنید.
پرسشهای متداول (FAQ)
۱. Row Context چه زمانی ایجاد میشود؟
وقتی فرمول DAX روی هر ردیف از جدول اجرا میشود، مانند ستونهای محاسباتی یا توابع تکرارگر.
۲. Query Context چیست؟
زمینهای که هنگام اجرای کوئری توسط فیلترها و تعاملات کاربر در گزارشها ایجاد میشود.
۳. Filter Context چه تفاوتی با Query Context دارد؟
Filter Context شامل فیلترهای Query Context به علاوه فیلترهای اضافه شده توسط توابع DAX مثل CALCULATE
است.
۴. چگونه میتوانم از توابع تکرارگر استفاده کنم؟
توابعی مانند SUMX
به شما اجازه میدهند محاسبات را به صورت ردیفی انجام دهید و سپس نتایج را جمع کنید.
منابع و مراجع
- مرجع زبان DAX افزونه کوئری نویسی در اکسل و POWER BI
- مرجع زبان فرمول نویسی M در پاور کوئری
- طراحی داشبوردهای مدیریتی در Microsoft Power BI
- تفاوتهای DAX و M
- توابع پیشرفته DAX در Power BI
- Microsoft DAX
منابع و مقالات
اگر میخواهید در حوزه تحلیل دادهها و زبان DAX به متخصصی حرفهای تبدیل شوید، تیم شرکت توسعه فناوری اطلاعات لاندا آماده ارائه دورههای آموزشی تخصصی، مشاوره و پیادهسازی پروژههای Power BI است.
نظری داده نشده