انتشارات و آکادمی آموزشی اشکاوند
جستجو برای:
سبد خرید 0
  • خانه
  • فروشگاه
  • اخبار و مقالات
    • اخبار
    • آموزش
    • دانشگاه
    • مقالات
      • آموزش Word
      • آموزش Word موبایل
      • آموزش اکسل موبایل
      • مقالات Power Bi
      • مقالات اکسل
        • ابزارها و ترفندها
        • توابع آماری
        • توابع اطلاعاتی
        • توابع جستجو و ارجاع
        • توابع ریاضی و مثلثات
        • توابع زمان و تاریخ
        • توابع کار با متن
        • توابع منطقی
        • خطاهای اکسل
        • سایر توابع
      • مقالات عمومی
      • عمومی
  • انتشارات اشکاوند
    • فرآیند کامل چاپ کتاب
    • همکاری با انتشارات اشکاوند
  • دانشگاه
    • ارسال تمرین
    • جزوات درسی
      • برنامه نویسی پیشرفته
      • برنامه نویسی شی گرا
      • برنامه نویسی مقدماتی
      • پایگاه داده ها
      • ساختمان داده
      • شیوه ارائه مطلب
      • کاربرد کامپیوتر در حسابداری و مدیریت
      • مبانی فناوری اطلاعات
  • درباره ما
  • تماس با ما
  • حساب کاربری
    • حساب کاربری من
    • شرایط و قوانین فروشگاه آکادمی اشکاوند
    • راهنمای خرید اینترنتی
  • تمرین کتابها
    • فایل تمرین کتاب آموزش Power BI
    • پاسخنامه تمرینهای کتاب آموزش کاربردی و پروژه محور نرم افزار SQL
      • پاسخنامه تمرینهای فصل اول کتاب SQL Server
      • پاسخنامه تمرینهای فصل دوم کتاب SQL Server
      • پاسخنامه تمرینهای فصل سوم کتاب SQL Server
      • پاسخنامه تمرینهای فصل چهارم کتاب SQL Server
      • پاسخنامه تمرینهای فصل پنجم کتاب SQL Server
      • پاسخنامه تمرینهای فصل ششم کتاب SQL Server
      • پاسخنامه تمرینهای فصل هفتم کتاب SQL Server
      • پاسخنامه تمرینهای فصل هشتم کتاب SQL Server
      • پاسخنامه تمرینهای فصل نهم کتاب SQL Server
      • پاسخنامه تمرینهای فصل دهم کتاب SQL Server
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

داده های شخصی شما برای پشتیبانی از تجربه شما در این وب سایت، برای مدیریت دسترسی به حساب کاربری شما و برای اهداف دیگری که در سیاست حفظ حریم خصوصی ما شرح داده می شود مورد استفاده قرار می گیرد.

ارسال مجدد کد یکبار مصرف (00:60)
لوگو انتشارات و آکادمی آموزشی اشکاوند
شروع کنید
0
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
  • خانه
  • فروشگاه
    • کتابهای آموزشی
    • فیلم های آموزشی
  • اخبار و مقالات
    • آموزش
    • مقالات
      • مقالات اکسل
        • ابزارها و ترفندها
        • توابع آماری
        • توابع اطلاعاتی
        • توابع جستجو و ارجاع
        • توابع ریاضی و مثلثات
        • توابع زمان و تاریخ
        • توابع کار با متن
        • توابع منطقی
        • خطاهای اکسل
        • اکسل و هوش مصنوعی
        • سایر توابع
      • آموزش Word
      • آموزش Word موبایل
      • آموزش اکسل موبایل
      • آموزش پاورپوینت
      • مقالات Power Bi
      • مقالات عمومی
      • اخبار
    • انتشارات اشکاوند
    • دانشگاه
    • عمومی
    • فیلم آموزشی
  • انتشارات اشکاوند
    • مجموعه کتابهای بیت
    • تمرین کتابها
      • کتاب آموزش SQL
        • پاسخنامه تمرینهای فصل اول
        • پاسخنامه تمرینهای فصل دوم
        • پاسخنامه تمرینهای فصل سوم
        • پاسخنامه تمرینهای فصل چهارم
        • پاسخنامه تمرینهای فصل پنجم
        • پاسخنامه تمرینهای فصل ششم
        • پاسخنامه تمرینهای فصل هفتم
        • پاسخنامه تمرینهای فصل هشتم
        • پاسخنامه تمرینهای فصل نهم
        • پاسخنامه تمرینهای فصل دهم
      • کتاب آموزش پاوربی آی
        • دانلود فایل تمرین کتاب آموزش نرم‌افزار Power BI
    • همکاری با انتشارات اشکاوند
    • فرآیند کامل چاپ کتاب
  • حساب کاربری
    • حساب کاربری من
    • شرایط و قوانین فروشگاه آکادمی اشکاوند
    • راهنمای خرید اینترنتی
    • سبد خرید
  • دانشگاه
    • ارسال تمرین
    • جزوات درسی
      • برنامه نویسی پیشرفته
      • برنامه نویسی شی گرا
      • برنامه نویسی مقدماتی
      • پایگاه داده ها
      • ساختمان داده
      • شیوه ارائه مطلب
      • کاربرد کامپیوتر در حسابداری و مدیریت
      • مبانی فناوری اطلاعات
  • درباره ما
  • تماس با ما

انتشارات و آکادمی آموزشی اشکاوند

  • خانه
  • فروشگاه
    • کتابهای آموزشی
    • فیلم های آموزشی
  • اخبار و مقالات
    • آموزش
    • مقالات
      • مقالات اکسل
        • ابزارها و ترفندها
        • توابع آماری
        • توابع اطلاعاتی
        • توابع جستجو و ارجاع
        • توابع ریاضی و مثلثات
        • توابع زمان و تاریخ
        • توابع کار با متن
        • توابع منطقی
        • خطاهای اکسل
        • اکسل و هوش مصنوعی
        • سایر توابع
      • آموزش Word
      • آموزش Word موبایل
      • آموزش اکسل موبایل
      • آموزش پاورپوینت
      • مقالات Power Bi
      • مقالات عمومی
      • اخبار
    • انتشارات اشکاوند
    • دانشگاه
    • عمومی
    • فیلم آموزشی
  • انتشارات اشکاوند
    • مجموعه کتابهای بیت
    • تمرین کتابها
      • کتاب آموزش SQL
        • پاسخنامه تمرینهای فصل اول
        • پاسخنامه تمرینهای فصل دوم
        • پاسخنامه تمرینهای فصل سوم
        • پاسخنامه تمرینهای فصل چهارم
        • پاسخنامه تمرینهای فصل پنجم
        • پاسخنامه تمرینهای فصل ششم
        • پاسخنامه تمرینهای فصل هفتم
        • پاسخنامه تمرینهای فصل هشتم
        • پاسخنامه تمرینهای فصل نهم
        • پاسخنامه تمرینهای فصل دهم
      • کتاب آموزش پاوربی آی
        • دانلود فایل تمرین کتاب آموزش نرم‌افزار Power BI
    • همکاری با انتشارات اشکاوند
    • فرآیند کامل چاپ کتاب
  • حساب کاربری
    • حساب کاربری من
    • شرایط و قوانین فروشگاه آکادمی اشکاوند
    • راهنمای خرید اینترنتی
    • سبد خرید
  • دانشگاه
    • ارسال تمرین
    • جزوات درسی
      • برنامه نویسی پیشرفته
      • برنامه نویسی شی گرا
      • برنامه نویسی مقدماتی
      • پایگاه داده ها
      • ساختمان داده
      • شیوه ارائه مطلب
      • کاربرد کامپیوتر در حسابداری و مدیریت
      • مبانی فناوری اطلاعات
  • درباره ما
  • تماس با ما
شروع کنید

وبلاگ

انتشارات و آکادمی آموزشی اشکاوند > اخبار و مقالات > مقالات > مقالات Power Bi > توابع DAX > Row Context و Filter Context در DAX چیست؟ آموزش ساده با مثال‌های عملی

Row Context و Filter Context در DAX چیست؟ آموزش ساده با مثال‌های عملی

16 شهریور 1405
ارسال شده توسط ایمان اشکاوند راد
توابع DAX، عمومی

اگر مدتی با Power BI کار کرده باشید، احتمالاً با دو اصطلاح مهم در DAX روبه‌رو شده‌اید:

 

Row Context و Filter Context

 

این دو مفهوم در نگاه اول کمی پیچیده به نظر می‌رسند، اما واقعیت این است که بخش زیادی از رفتار Measureها، Calculated Columnها و توابع DAX بدون درک این دو مفهوم قابل فهم نیست.

برای مثال شاید برایتان سؤال شده باشد که چرا یک Measure ساده مثل:

Total Sales =
SUM(Sales[Sales Amount])

وقتی در جدول شهرها قرار می‌گیرد، برای هر شهر عدد متفاوتی نشان می‌دهد؟

یا چرا یک فرمول DAX در Calculated Column با همان فرمول در یک Measure رفتار یکسانی ندارد؟

پاسخ بسیاری از این سؤال‌ها به Context در DAX برمی‌گردد.

در این مقاله از مجموعه آموزش Power BI سایت اشکاوند، می‌خواهیم بدون ورود به توضیحات بیش از حد تئوریک، با مثال‌های واقعی ببینیم Row Context چیست، Filter Context چیست و تفاوت Row Context و Filter Context در Power BI دقیقاً کجاست.

 

Contents

    • 0.1. Context در DAX چیست؟
  • 1. Row Context چیست؟
    • 1.1. Row Context در Calculated Column
  • 2. Filter Context چیست؟
  • 3. یک مثال ساده برای فهم Filter Context
  • 4. تفاوت Row Context و Filter Context در یک مثال
  • 5. آیا Measure دارای Row Context است؟
  • 6. Iterator چیست و چه ارتباطی با Row Context دارد؟
  • 7. تفاوت SUM و SUMX از دید Context
  • 8. یک مثال واقعی‌تر؛ محاسبه سود هر سفارش
  • 9. Filter Context از کجا وارد می‌شود؟
  • 10. CALCULATE چه نقشی در Filter Context دارد؟
  • 11. Filter Context و Slicer
  • 12. Filter Context و روابط بین جداول
  • 13. آیا Row Context همان Filter Context است؟
  • 14. اشتباه رایج؛ فکر کردن به هر ردیف Visual به‌عنوان Row Context
  • 15. یک تمرین برای درک Context
  • 16. چرا یادگیری Context برای DAX ضروری است؟
  • 17. ارتباط Row Context و Filter Context با Context Transition
  • 18. جمع‌بندی
    • 18.1. سؤالات متداول Row Context و Filter Context در DAX
      • 18.1.1. Row Context در Power BI چیست؟
      • 18.1.2. Filter Context در Power BI چیست؟
      • 18.1.3. تفاوت Row Context و Filter Context چیست؟
      • 18.1.4. آیا Measure دارای Row Context است؟
      • 18.1.5. آیا SUMX از Row Context استفاده می‌کند؟
      • 18.1.6. CALCULATE چه ارتباطی با Filter Context دارد؟
    • 18.2. مقالات مرتبط آموزش Power BI و DAX

Context در DAX چیست؟

 

کلمه Context در DAX را می‌توان به زبان ساده به معنی شرایطی که محاسبه در آن انجام می‌شود در نظر گرفت.

وقتی Power BI یک فرمول DAX را محاسبه می‌کند، فقط خود فرمول اهمیت ندارد؛ بلکه باید بدانیم این فرمول:

  • روی چه داده‌ای اجرا می‌شود؟
  • چه فیلترهایی فعال هستند؟
  • کاربر چه چیزی را در Slicer انتخاب کرده؟
  • در کدام ردیف جدول قرار داریم؟
  • چه فیلترهایی از Visual به Measure منتقل شده‌اند؟
  • ارتباط بین جداول چگونه است؟

به مجموعه این شرایط Context گفته می‌شود.

دو نوع Context که باید ابتدا یاد بگیرید عبارت‌اند از:

 

Row Context

و

Filter Context

 

البته در مباحث پیشرفته‌تر DAX با مفاهیمی مانند Context Transition نیز روبه‌رو می‌شویم که در ادامه مسیر یادگیری به آن خواهیم رسید.

 

Row Context چیست؟

 

Row Context یعنی DAX در حال کار کردن با یک ردیف مشخص از داده‌هاست.

این مفهوم بیشتر هنگام کار با:

  • Calculated Column
  • Iteratorهایی مانند SUMX
  • AVERAGEX
  • FILTER
  • برخی توابع دیگر

اهمیت پیدا می‌کند.

برای درک بهتر، یک جدول فروش فرضی داشته باشیم:

محصول تعداد قیمت واحد
لپ‌تاپ 2 30,000,000
مانیتور 3 8,000,000
کیبورد 5 2,000,000

فرض کنید می‌خواهیم مبلغ هر ردیف را محاسبه کنیم.

فرمول می‌تواند این باشد:

Amount =
Sales[Quantity] * Sales[Unit Price]

اگر این فرمول را به‌عنوان Calculated Column ایجاد کنیم، Power BI آن را برای هر ردیف محاسبه می‌کند.

برای ردیف اول:

2 × 30,000,000 = 60,000,000

برای ردیف دوم:

3 × 8,000,000 = 24,000,000

و برای ردیف سوم:

5 × 2,000,000 = 10,000,000

در اینجا هر بار یک ردیف مشخص در حال محاسبه است.

این همان چیزی است که برای درک اولیه Row Context در DAX نیاز داریم.

 

Row Context در Calculated Column

 

یکی از ساده‌ترین جاهایی که Row Context را می‌توان مشاهده کرد، Calculated Column است.

مثلاً:

Total Amount =
Sales[Quantity] * Sales[Unit Price]

Power BI این محاسبه را برای هر ردیف انجام می‌دهد.

می‌توانیم نتیجه را به شکل زیر تصور کنیم:

محصول تعداد قیمت مبلغ
لپ‌تاپ 2 30M 60M
مانیتور 3 8M 24M
کیبورد 5 2M 10M

در ردیف لپ‌تاپ، DAX مقدار Quantity و Unit Price همان ردیف را در اختیار دارد.

در ردیف مانیتور، مقادیر همان ردیف را می‌بیند.

و همین اتفاق برای تمام ردیف‌های جدول تکرار می‌شود.

به همین دلیل می‌توان گفت:

Row Context یعنی «من الان در کدام ردیف هستم؟»

این جمله تعریف رسمی و کامل DAX نیست، اما برای شروع یادگیری یک مدل ذهنی بسیار مناسب است.

 

Filter Context چیست؟

 

حالا به مفهوم مهم‌تر دیگری می‌رسیم:

Filter Context

Filter Context یعنی مجموعه فیلترهایی که مشخص می‌کنند کدام داده‌ها در یک محاسبه در نظر گرفته شوند.

این فیلترها می‌توانند از قسمت‌های مختلف گزارش ایجاد شوند.

مثلاً:

  • Slicer
  • Filter Pane
  • فیلترهای Visual
  • فیلترهای صفحه
  • فیلترهای گزارش
  • سطرها و ستون‌های یک Matrix یا Table
  • روابط بین جداول
  • توابع DAX مانند CALCULATE

برای مثال فرض کنید یک Measure داریم:

Total Sales =
SUM(Sales[Sales Amount])

اگر هیچ فیلتری وجود نداشته باشد، فروش تمام داده‌ها محاسبه می‌شود.

اما اگر کاربر در Slicer سال 1404 را انتخاب کند، همین Measure فقط فروش مربوط به سال انتخاب‌شده را محاسبه خواهد کرد.

اگر کاربر شهر تهران را نیز انتخاب کند، Context دوباره محدودتر می‌شود.

بنابراین می‌توانیم به زبان ساده بگوییم:

Filter Context مشخص می‌کند «کدام داده‌ها باید در محاسبه حضور داشته باشند؟»

 

یک مثال ساده برای فهم Filter Context

 

فرض کنید اطلاعات فروش شرکت به این شکل است:

شهر محصول فروش
تهران لپ‌تاپ 100M
تهران مانیتور 50M
مشهد لپ‌تاپ 80M
مشهد مانیتور 40M

Measure زیر را ایجاد می‌کنیم:

Total Sales =
SUM(Sales[Sales Amount])

اگر این Measure را در یک Card قرار دهیم:

270M

نمایش داده می‌شود.

اما اگر یک Table بسازیم و City را داخل آن قرار دهیم:

شهر Total Sales
تهران 150M
مشهد 120M
مجموع 270M

یک Measure داریم، اما برای هر شهر نتیجه متفاوت شده است.

آیا Measure تغییر کرده؟

خیر.

فرمول همان است:

SUM(Sales[Sales Amount])

چیزی که تغییر کرده Filter Context است.

در ردیف تهران، Context مربوط به تهران است.

در ردیف مشهد، Context مربوط به مشهد است.

به همین دلیل نتیجه Measure تغییر می‌کند.

تفاوت Row Context و Filter Context در یک مثال

 

برای اینکه تفاوت این دو کاملاً مشخص شود، این مثال را در نظر بگیرید.

جدول فروش:

محصول تعداد قیمت مبلغ
لپ‌تاپ 2 30M 60M
مانیتور 3 8M 24M
پرینتر 2 5M 10M

اگر بخواهیم مبلغ هر ردیف را حساب کنیم:

Amount =
Sales[Quantity] * Sales[Unit Price]

اینجا با Row Context سروکار داریم.

اما اگر بخواهیم مجموع فروش را محاسبه کنیم:

Total Sales =
SUM(Sales[Amount])

و سپس فقط فروش لپ‌تاپ‌ها را نمایش دهیم، فیلتر محصول وارد محاسبه می‌شود.

اینجا با Filter Context سروکار داریم.

بنابراین:

مفهوم سؤال اصلی
Row Context الان روی کدام ردیف هستم؟
Filter Context کدام داده‌ها در محاسبه باید در نظر گرفته شوند؟

آیا Measure دارای Row Context است؟

 

یکی از اشتباهات رایج هنگام شروع DAX این است که تصور کنیم هر Measure به‌صورت خودکار روی یک ردیف اجرا می‌شود.

این‌طور نیست.

یک Measure به‌صورت خودکار Row Context ایجاد نمی‌کند.

برای مثال:

Total Sales =
SUM(Sales[Sales Amount])

این Measure به‌خودی‌خود نمی‌گوید:

«من الان در ردیف سوم جدول هستم.»

بلکه بر اساس Filter Context فعلی محاسبه می‌شود.

این تفاوت زمانی بسیار مهم می‌شود که بخواهیم از توابع Iterator استفاده کنیم.

 

Iterator چیست و چه ارتباطی با Row Context دارد؟

 

یکی از مهم‌ترین نکات برای درک Row Context، آشنایی با Iteratorهاست.

توابعی مانند:

SUMX
AVERAGEX
MINX
MAXX
FILTER

در بسیاری از سناریوها داده‌ها را ردیف‌به‌ردیف بررسی می‌کنند.

برای مثال فرض کنید در جدول فروش، ستون Amount نداریم و فقط این دو ستون وجود دارند:

Quantity
Unit Price

اگر بخواهیم مجموع مبلغ فروش را محاسبه کنیم، می‌توانیم بنویسیم:

Total Sales =
SUMX(
    Sales,
    Sales[Quantity] * Sales[Unit Price]
)

اینجا SUMX جدول Sales را ردیف‌به‌ردیف بررسی می‌کند.

برای هر ردیف:

Quantity × Unit Price

محاسبه می‌شود و سپس نتایج با هم جمع می‌شوند.

اینجاست که مفهوم Row Context اهمیت زیادی پیدا می‌کند.

تفاوت SUM و SUMX از دید Context

 

این مثال ارتباط خوبی با مقاله قبلی ما درباره تفاوت SUM و SUMX در Power BI دارد.

اگر ستونی به نام Amount داشته باشیم:

Total Sales =
SUM(Sales[Amount])

اما اگر مبلغ هر ردیف از حاصل‌ضرب تعداد و قیمت ایجاد شود:

Total Sales =
SUMX(
    Sales,
    Sales[Quantity] * Sales[Unit Price]
)

SUMX در هر ردیف Expression را ارزیابی می‌کند و سپس نتایج را با هم جمع می‌کند.

بنابراین درک Row Context کمک می‌کند بفهمیم چرا SUMX در چنین سناریویی کاربرد دارد.

یک مثال واقعی‌تر؛ محاسبه سود هر سفارش

 

فرض کنید جدول فروش شامل این ستون‌هاست:

OrderID
Product
Quantity
Unit Price
Unit Cost

می‌خواهیم سود هر ردیف را محاسبه کنیم:

Profit =
Sales[Quantity] *
(Sales[Unit Price] - Sales[Unit Cost])

این فرمول اگر به‌عنوان Calculated Column ساخته شود، برای هر ردیف اجرا می‌شود.

اما اگر بخواهیم سود کل را به‌صورت Measure محاسبه کنیم، می‌توانیم از SUMX استفاده کنیم:

Total Profit =
SUMX(
    Sales,
    Sales[Quantity] *
    (Sales[Unit Price] - Sales[Unit Cost])
)

در اینجا SUMX باعث می‌شود Expression برای ردیف‌های جدول ارزیابی شود.

 

Filter Context از کجا وارد می‌شود؟

 

حالا یک نکته جالب‌تر.

فرض کنید Measure زیر را داریم:

Total Profit =
SUMX(
    Sales,
    Sales[Quantity] *
    (Sales[Unit Price] - Sales[Unit Cost])
)

اگر کاربر در گزارش سال 1404 را انتخاب کند، آیا SUMX تمام داده‌های جدول را محاسبه می‌کند؟

خیر.

Filter Context ایجادشده توسط گزارش روی داده‌هایی که وارد محاسبه می‌شوند اثر می‌گذارد.

مثلاً اگر Slicer سال روی 1404 باشد، محاسبه Measure بر اساس داده‌های باقی‌مانده در Context انجام می‌شود.

پس ممکن است در یک Measure هم با Filter Context مواجه باشیم و هم در داخل Iterator با Row Context.

این یکی از مهم‌ترین نکاتی است که باید هنگام یادگیری DAX در ذهن داشته باشید.

 

CALCULATE چه نقشی در Filter Context دارد؟

 

اگر مقاله قبلی ما درباره CALCULATE را خوانده باشید، اینجا ارتباط موضوعات کاملاً مشخص می‌شود.

فرض کنید:

Total Sales =
SUM(Sales[Sales Amount])

حالا می‌خواهیم فروش آنلاین را محاسبه کنیم:

Online Sales =
CALCULATE(
    [Total Sales],
    Sales[Channel] = "Online"
)

CALCULATE شرایط محاسبه را تغییر می‌دهد و Filter Context جدیدی برای ارزیابی Expression ایجاد می‌کند.

بنابراین می‌توان گفت:

CALCULATE یکی از مهم‌ترین ابزارهای DAX برای تغییر Filter Context است.

اگر هنوز CALCULATE را مطالعه نکرده‌اید، بهتر است ابتدا آموزش آن را بخوانید و سپس دوباره به این بخش برگردید.

 

Filter Context و Slicer

 

یکی از بهترین راه‌ها برای مشاهده Filter Context، استفاده از Slicer است.

فرض کنید داشبوردی داریم که فروش را نشان می‌دهد.

یک Slicer برای سال داریم:

1402
1403
1404
1405

اگر کاربر 1404 را انتخاب کند، Context گزارش تغییر می‌کند.

حالا اگر Measure زیر را داشته باشیم:

Total Sales =
SUM(Sales[Sales Amount])

مقدار Measure بر اساس داده‌های مربوط به Context فعلی نمایش داده می‌شود.

اگر کاربر 1405 را انتخاب کند، نتیجه نیز تغییر می‌کند.

نکته مهم:

فرمول Measure تغییر نکرده است؛ Context تغییر کرده است.

این دقیقاً همان چیزی است که باعث قدرت Power BI در ساخت گزارش‌های تعاملی می‌شود.

 

Filter Context و روابط بین جداول

 

Filter Context فقط از جدول Sales نمی‌آید.

فرض کنید مدل داده ما شامل این جداول است:

Customers
Products
Sales
Date

و بین آنها Relationship صحیح ایجاد کرده‌ایم.

اگر کاربر در Slicer جدول Products یک دسته محصول را انتخاب کند، این انتخاب می‌تواند از طریق Relationship روی داده‌های Sales اثر بگذارد.

در نتیجه Measure فروش نیز بر اساس Context جدید محاسبه می‌شود.

این موضوع یکی از دلایل اهمیت Data Modeling در Power BI است.

اگر Relationshipها اشتباه باشند، حتی یک Measure کاملاً صحیح ممکن است نتیجه‌ای داشته باشد که انتظارش را ندارید.

 

آیا Row Context همان Filter Context است؟

 

خیر.

این دو مفهوم کاملاً یکسان نیستند.

Row Context به یک ردیف یا ردیف جاری مربوط است، در حالی که Filter Context مشخص می‌کند چه بخشی از داده در محاسبه مورد استفاده قرار گیرد.

برای مثال:

Sales[Quantity] * Sales[Unit Price]

در یک Calculated Column می‌تواند در Row Context اجرا شود.

اما:

SUM(Sales[Sales Amount])

به Filter Context فعلی برای تعیین داده‌های مورد محاسبه وابسته است.

اشتباه رایج؛ فکر کردن به هر ردیف Visual به‌عنوان Row Context

 

فرض کنید یک Table Visual داریم:

شهر فروش
تهران 150M
مشهد 120M

ممکن است تصور کنیم:

«چون هر شهر در یک ردیف Visual قرار گرفته، پس Measure در Row Context اجرا شده است.»

این برداشت دقیق نیست.

ردیف Visual می‌تواند Filter Context ایجاد کند.

یعنی در ردیف تهران، فیلتر مربوط به تهران روی محاسبه Measure اعمال می‌شود.

این با Row Contextی که در Calculated Column یا Iterator داریم متفاوت است.

یک تمرین برای درک Context

 

برای اینکه این تفاوت کاملاً برایتان جا بیفتد، یک مدل ساده فروش ایجاد کنید.

جدول Sales:

Date City Product Quantity Unit Price
1404/01/05 تهران لپ‌تاپ 2 30M
1404/01/07 مشهد لپ‌تاپ 1 30M
1404/01/10 تهران مانیتور 3 8M
1404/02/02 شیراز پرینتر 2 5M

ابتدا این Calculated Column را بسازید:

Amount =
Sales[Quantity] * Sales[Unit Price]

اینجا Row Context را مشاهده می‌کنید.

سپس Measure زیر را ایجاد کنید:

Total Sales =
SUM(Sales[Amount])

حالا یک Table Visual بسازید و City را داخل آن قرار دهید.

در مرحله بعد یک Slicer برای Date یا سال اضافه کنید.

با انتخاب‌های مختلف Slicer مشاهده کنید که مقدار Measure چگونه تغییر می‌کند.

در این تمرین:

Calculated Column → Row Context

و

Measure + Slicer/Table → Filter Context

را به‌صورت عملی مشاهده خواهید کرد.

چرا یادگیری Context برای DAX ضروری است؟

 

اگر Context را به‌درستی متوجه نشوید، در فرمول‌های ساده ممکن است مشکلی نداشته باشید؛ اما با ورود به مباحث حرفه‌ای‌تر، مشکلات شروع می‌شوند.

مثلاً وقتی به این توابع برسید:

CALCULATE
FILTER
SUMX
AVERAGEX
ALL
REMOVEFILTERS
KEEPFILTERS
RANKX

تقریباً دائماً با مفهوم Context سروکار خواهید داشت.

به همین دلیل بهتر است به جای حفظ کردن فرمول‌های DAX، ابتدا منطق اجرای آنها را یاد بگیرید.

ارتباط Row Context و Filter Context با Context Transition

 

 

یکی از جذاب‌ترین مباحث DAX زمانی است که Row Context و Filter Context با یکدیگر ارتباط پیدا می‌کنند.

این اتفاق با مفهومی به نام:

Context Transition

شناخته می‌شود.

به‌طور خلاصه، CALCULATE می‌تواند در شرایط مشخصی Row Context را به Filter Context تبدیل کند.

برای مثال این موضوع در بعضی سناریوهای Calculated Column، Iteratorها و Measureهای پیچیده اهمیت پیدا می‌کند.

اما Context Transition خودش یک موضوع مستقل و مهم است و بهتر است آن را جداگانه یاد بگیریم.

در مقاله بعدی از این مجموعه دقیقاً سراغ همین موضوع خواهیم رفت:

Context Transition در DAX چیست؟ CALCULATE چگونه Context را تغییر می‌دهد؟

جمع‌بندی

 

اگر بخواهیم تمام این مقاله را در چند جمله خلاصه کنیم:

Row Context یعنی محاسبه با توجه به ردیف جاری.

Filter Context یعنی مجموعه شرایط و فیلترهایی که مشخص می‌کنند چه داده‌هایی در محاسبه حضور داشته باشند.

Calculated Columnها معمولاً محیط مناسبی برای مشاهده Row Context هستند.

Measureها عمدتاً بر اساس Filter Context محاسبه می‌شوند.

Iteratorهایی مانند SUMX می‌توانند در حین پیمایش ردیف‌ها Row Context ایجاد کنند.

و CALCULATE یکی از مهم‌ترین توابعی است که برای تغییر Filter Context استفاده می‌شود.

وقتی این مفاهیم را کنار هم قرار دهید، بسیاری از رفتارهای ظاهراً عجیب DAX دیگر عجیب نخواهند بود.

در واقع، یکی از تفاوت‌های اصلی بین کسی که فقط فرمول‌های DAX را حفظ کرده و کسی که DAX را واقعاً فهمیده، همین درک درست از Context است.

سؤالات متداول Row Context و Filter Context در DAX

Row Context در Power BI چیست؟

 

Row Context محیطی در DAX است که در آن یک ردیف مشخص از داده در حال ارزیابی است. این مفهوم در Calculated Columnها و Iteratorهایی مانند SUMX اهمیت زیادی دارد.

Filter Context در Power BI چیست؟

 

Filter Context مجموعه شرایطی است که تعیین می‌کند چه داده‌هایی هنگام محاسبه یک Expression یا Measure در نظر گرفته شوند. Slicerها، فیلترهای Visual و توابع DAX می‌توانند در ایجاد یا تغییر آن نقش داشته باشند.

تفاوت Row Context و Filter Context چیست؟

 

Row Context بیشتر با ردیف جاری ارتباط دارد، در حالی که Filter Context مشخص می‌کند چه مجموعه‌ای از داده‌ها در محاسبه حضور داشته باشند.

آیا Measure دارای Row Context است؟

 

Measure به‌صورت خودکار Row Context ایجاد نمی‌کند. Measure معمولاً بر اساس Filter Context فعلی ارزیابی می‌شود. البته Iteratorها و برخی سناریوهای DAX می‌توانند در جریان محاسبه Row Context ایجاد کنند.

 

آیا SUMX از Row Context استفاده می‌کند؟

 

SUMX یک Iterator است و Expression آن برای ردیف‌های جدول ورودی ارزیابی می‌شود؛ بنابراین درک Row Context برای فهم عملکرد SUMX بسیار مهم است.

 

CALCULATE چه ارتباطی با Filter Context دارد؟

 

CALCULATE Expression را در Filter Context اصلاح‌شده ارزیابی می‌کند و به همین دلیل یکی از مهم‌ترین ابزارهای DAX برای کنترل Context محاسبه است.

 

مقالات مرتبط آموزش Power BI و DAX

برای ادامه مسیر یادگیری پیشنهاد می‌کنیم این مقالات را نیز مطالعه کنید:

تفاوت Measure و Calculated Column در Power BI
برای آشنایی با تفاوت دو روش مهم محاسبه در Power BI.

تفاوت SUM و SUMX در Power BI
برای درک بهتر Iteratorها و محاسبات ردیف‌به‌ردیف.

آموزش تابع CALCULATE در Power BI
برای یادگیری تغییر Filter Context و ساخت Measureهای حرفه‌ای.

آموزش تابع FILTER در Power BI (به زودی)
برای آشنایی با فیلتر کردن جدول‌ها و استفاده از FILTER در DAX.

Context Transition در DAX چیست؟ (به زودی)
موضوع بعدی این مجموعه برای درک ارتباط Row Context و Filter Context.

 

برچسب ها: CALCULATE در DAXContext در DAXFilter Context در Power BIRow Context در Power BISUMX در DAXآموزش DAXآموزش Power BIتفاوت Row Context و Filter Context
Author Avatar
درباره ایمان اشکاوند راد

مدیر فناوری و طراح و مشاور سیستم های نرم افزاری، مدرس دانشگاه با بیش از ۱۸ سال سابقه تدریس مهارت ها و دروس کامپیوتری در دانشگاه ها و شرکتهای مختلف، مولف مجموعه کتابهای بیت، تولید بسته های آموزشی کامپیوتر، علاقه مند به حوزه های پایگاه داده، BI، برنامه نویسی، اکسل و آفیس، مدیر انتشارات و آکادمی آموزشی اشکاوند

نوشته‌های بیشتر از ایمان اشکاوند راد
قبلی تبدیل عدد به حروف فارسی در Excel بدون افزونه به همراه دانلود فایل اکسل رایگان
بعدی معرفی تابع sumproduct اکسل

پست های مرتبط

آشنایی با تابع substitute اکسل

4 مهر 1405

آشنایی با تابع substitute اکسل

Author Avatar
ایمان اشکاوند راد
ادامه مطلب
روش های انتخاب متن در WORD

1 مهر 1405

انواع روش‌های انتخاب متن در Word؛ 20 روش سریع و کاربردی

Author Avatar
ایمان اشکاوند راد
ادامه مطلب
فارسی کردن تم در پاور بی آی

31 شهریور 1405

فارسی کردن تم در نرم‌افزار power bi

Author Avatar
ایمان اشکاوند راد
ادامه مطلب
تابع If اکسل

30 شهریور 1405

آشنایی با تابع شرط if اکسل

Author Avatar
ایمان اشکاوند راد
ادامه مطلب
تابع تعداد شرطی countif اکسل

29 شهریور 1405

معرفی تابع تعداد شرطی countif اکسل

Author Avatar
ایمان اشکاوند راد
ادامه مطلب

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • آموزش
  • آموزش Word
  • آموزش Word موبایل
  • آموزش اکسل موبایل
  • آموزش پاورپوینت
  • ابزارها و ترفندها
  • اخبار
  • انتشارات اشکاوند
  • تمرین کتابها
  • توابع DAX
  • توابع آماری
  • توابع اطلاعاتی
  • توابع جستجو و ارجاع
  • توابع ریاضی و مثلثات
  • توابع زمان و تاریخ
  • توابع کار با متن
  • توابع منطقی
  • خطاهای اکسل
  • دانشگاه
  • عمومی
  • فیلم آموزشی
  • کاربرد کامپیوتر در حسابداری و مدیریت
  • کتاب آموزش پاوربی آی
  • مقالات
  • مقالات Power Bi
  • مقالات اکسل
  • مقالات عمومی
برچسب‌ها
Word در گوشی آموزش DAX آموزش Power BI آموزش powerpoint آموزش word آموزش آفیس موبایل آموزش اکسل آموزش اکسل حرفه‌ای آموزش اکسل موبایل آموزش ترلو آموزش توابع اکسل آموزش جامع Power BI آموزش جامع Word آموزش جامع اکسل آموزش جامع پاورپوینت آموزش حرفه‌ای Word آموزش حرفه‌ای اکسل آموزش مقدماتی کامپیوتر آموزش ورد موبایل آموزش کامپیوتر ابزارهای مدیریت پروژه انواع خطاهای اکسل اکسل در گوشی بردهای ترلو ترفندهای اکسل توابع آماری اکسل توابع اطلاعاتی اکسل توابع جستجوی اکسل توابع ریاضی اکسل توابع متنی اکسل تکمیل خودکار اکسل خطاهای فرمول اکسل دوره اکسل پیشرفته رفع خطای اکسل مدیریت پروژه با ترلو نرم‌افزار Excel موبایل نرم‌افزار Word موبایل نرم‌افزار مدیریت پروژه Trello کار با Word موبایل کار با اکسل موبایل کتاب Excel فارسی کتاب آموزش Power BI کتاب آموزش PowerPoint کتاب آموزش Word کتاب آموزش اکسل
انتشارات و آکادمی اشکاوند
لوگو انتشارات و آکادمی آموزشی اشکاوند

ما در انتشارات و آکادمی آموزشی اشکاوند بهترین کتاب ها و دوره های آموزشی کامپیوتر را برای شما تولید می کنیم.

با محصولات و آموزشهای ما در کامپیوتر حرفه ای شوید.

دسترسی سریع
  • خانه
  • اخبار و مقالات
  • فروشگاه
  • درباره ما
  • تماس با ما
نمادها
logo-samandehi
شبکه های اجتماعی
Telegram Instagram icon--white

مشهد، بلوار وکیل آباد، بلوار هنرستان تلفن: 09305936340

کلیه حقوق برای انتشارات و آکادمی اشکاوند محفوظ می باشد.

ورود
با شماره موبایل
با آدرس ایمیل
آیا هنوز عضو نشده اید؟ اکنون ثبت نام کنید
بازنشانی رمزعبور
با شماره موبایل
با آدرس ایمیل
ثبت نام
با شماره موبایل
با آدرس ایمیل
قبلا عضو شده اید؟ اکنون وارد شوید