DAX-Row Context-Query Context-Filter Context-Power BI-توابع محاسبه DAX-توابع تکرارگر DAX-مثال‌های DAX-لاندا-شرکت مجری dax-شرکت مجریdax در تهران-لاندا

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 زمانی بوجود می‌آید که:

  1. در حال محاسبه ستون‌های محاسباتی (Calculated Columns) باشید.
  2. از توابع تکرارگر (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 نیز می‌تواند بر روی همان ردیف‌ها اعمال شود.

مثال جامع

فرض کنید یک جدول فروش با داده‌های زیر دارید:

ProductQuantityPriceYear
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 است.

نظری داده نشده

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *