• مسابقه Power BI
    • اولین مسابقه Power BI
    • دومین مسابقه Power BI
    • سومین مسابقه Power BI
  • جدیدترین مطالب آموزشی
  • دوره‌های رایگان
  • تحلیل داده نرم افزاری (فنّی)
  • تحلیل داده غیرفنّی
  • دوره‌های آفلاین
  • سبد خرید
  • ارتباط با ما
    • تماس
    • درخواست مشاوره
    • اینستاگرام
    • تلگرام
    • آپارات
    • یوتیوب
  • حساب کاربری

سبد خرید شما خالی است.

گروه تحلیلگری
  • مسابقات Power BI
    • اولین مسابقه Power BI ایران
    • دومین مسابقه Power BI ایران
    • سومین مسابقه Power BI ایران
  • مطالب آموزشی
    • تمام مطالب آموزشی
    • اکسل (Excel)
    • پاور‌بی‌آی (Power BI)
    • پاورکوئری (Power Query)
    • دکس (DAX)
  • مسیرهای یادگیری
    • مسیر یادگیری تحلیل داده (فنی)
    • مسیر یادگیری غیرفنّی تحلیلگر داده
  • دوره‌های آموزشی
    • دوره‌های رایگان
    • مهارت‌های غیرفنّی تحلیلگر داده
    • اکسل (Excel)
    • پاور‌بی‌آی (Power BI)
    • پاورکوئری (Power Query)
    • زبان اس‌کیو‌ال (SQL)
    • تحلیل داده با پایتون (Python)
    • سبد خرید
  • ارتباط با ما
    • تماس
    • درخواست مشاوره
    • اینستاگرام
    • تلگرام
    • آپارات
    • یوتیوب
0
حساب کاربری

مقالات

آموزش DAX در Power Bi قسمت اول

در این مطلب قصد داریم به آموزش DAX در Power BI بپردازیم. در اولین گام قصد داریم به مرور مفاهیم پایه ای در زبان DAX بپردازیم. مفاهیم بسیار مهمی مثل Row Context و Filter Context.

قبل از مطالعه حتما به این مطلب سری بزنید تا مطمئن شوید می دانید DAX چیست؟

DAX چیست؟

DAX مخفف عبارت Data Analysis Expression زبان مشترک بین نرم افزار های Power BI، همچنین Excel Power Pivot و SSAS Tabular است. زبان DAX مجموعه ای از توابع، اپراتور ها و محدودیت ها است که می تواند یک یا چند مقدار را به عنوان خروجی تولید کند و به شما کمک کند تا اطلاعات جدیدی از دل داده های خود استخراج کنید.

Context

در اکوسیستم زبان DAX دو نوع Context وجود دارد. این دو مفهوم بسیار مهم عبارتند از Row Context و Filter Context.

Row Context

این مفهوم بسیار مهم به ردیف جاری اشاره دارد. هنگامی که یک ستون محاسباتی ایجاد می کنید در واقع این مفهوم به میان می آید، چرا که ستون محاسباتی ردیف به ردیف محاسبه می شود.
فرض کنید می خواهیم در جدول فروش تعداد فروش را در قیمت ضرب کنیم. تصویر این عملیات را مشاهده می کنید.

آموزش زبان DAX در Power BI

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

حال فرض کنید همین فرمول را به عنوان یک مژر ایجاد کنیم. هر چه سعی می کنم UnitPrice را تایپ کنم، موفق به انجام آن نمی شوم. مگر این که یک Row Context ایجاد کنم. در واقع بدون ایجاد آن موتور نرم افزار نمی تواند تشخیص دهد این محاسبه برای کدام ردیف صورت پذیرد.

آموزش زبان DAX در Power BI

با استفاده از تابع SUMX این Row Context را ایجاد می کنیم. به SUMX می گویم برو در جدول Sales (آرگومان اول)، ردیف به ردیف تعداد را در قیمت ضرب کن (آرگومان دوم). پس ردیف به ردیف تعداد را در قیمت ضرب کرده و در نهایت آن را با هم جمع می کند.

آموزش زبان DAX در Power BI

Filter Context

محاسبات شما اصولا با توجه به Filter Context صورت می پذیرد. شما یک مژر را در یک Matrix استفاده می کنید و در سلول های مختلف آن با اعداد متفاوتی روبرو می شوید. به مثال زیر توجه کنید.

آموزش زبان DAX در Power BI

در Card هیچ اثری از Filter Context نیست. پس جمع کل محاسبه شده است (1). در شماره 2 در واقع Filter Context، سال 2011 و کانال Catalog است، پس محاسبه برای این دو مقدار صورت می پذیرد.

در شماره 3 Filter Context تنها Reseller است، پس میزان فروش برای کانال Reseller محاسبه می شود. در شماره 4 در واقع Filter Context سال 2012 است. در شماره 5 هیچ گونه Filter Context اعمال نشده پس معادل جمع کل است.

پس وقتی گفته می شود خروجی مژر یک عدد است، منظور ما یک عدد به ازای هر Filter Context است. در واقع با ساخت مژر محاسبات در Filter Context مورد نظر شما انجام می شود. به همین دلیل است که با تغییر سر ستون ها به طور مثال از ChannelName به نام کالا باز هم محاسبات به درستی انجام می شوند.

دو مفهوم Row Context و Filter Context قدرت بی نظیری به شما اعطا می کند. شاید تا به حال اسمی از این مفاهیم به گوش شما نخورده باشد، اما هر لحظه در حال استفاده از آن ها هستید.

با سری مطالب آموزش زبان DAX در Power BI همراه باشید تا با هم سیری در دنیای زیبای زبان DAX داشته باشیم.

درباره حسین وثوقی

دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...

نوشته های بیشتر از حسین وثوقی
در تلگرام
کانال ما را دنبال کنید!
در اینستاگرام
ما را دنبال کنید!
مطالب زیر را حتما بخوانید
  • کاربرد پارامتر در پاوربی آی
    کاربرد پارامتر و تحلیل حساسیت در پاور بی آی

    3.91k بازدید

  • استفاده از متغیر و تابع EARLIER در زبان DAX

    2.61k بازدید

  • پانزده تابع DAX که باید حتما یاد بگیرید

    3.73k بازدید

  • تابع IF و SWITCH در زبان DAX

    2.37k بازدید

  • رنگ بندی شرطی با زبان DAX
    رنگ بندی شرطی با زبان DAX

    1.68k بازدید

  • مفهوم Context و انواع آن در زبان DAX
    مفهوم Context و انواع آن در زبان DAX

    1.98k بازدید

guest
تعداد ماههای سال به عدد
guest
7 نظر
قدیمی ها
جدید ها بیشترین رای
Inline Feedbacks
View all comments
statis
statis

با سلام

مثل همیشه مطلب آموزشی مفید و مفهومی و کاربردی بود. بسیار ممنون از مطالب آموزشی که در این سایت قرار می دهید.

1
پاسخ
حسین وثوقی
حسین وثوقی
نویسنده
در پاسخ به  statis

سلام … ممنون از همراهی شما

1
پاسخ
سجادیان
سجادیان

ایتاد واقعا ممنون که از پایه همه رو توضیح میدن ،چقدر درک کردنش راحت میشه،ممنون

1
پاسخ
mehdi
mehdi

یه سوال اینکه فرض کنید ما دو ستون تعداد و قیمت داریم و می‌خواهیم در زبان دکس از ضرب اینها یک ستون جدید ایجاد کنیم.خب راه ساده اینه که مثل اکسل در هم ضرب کنیم و تمام. اما راه پیچیده اینه که تابع sumx بزنیم و اون رو داخل تابع calculate قرار بدیم.که دقیقا نتایج همونه.اما اگه تابع sumxرو در تابع calculate قرار ندیم نتیجه همه سلول ها یکی ست. همه اینها رو گفتم که بپرسم که آنچه باعث میشه که تابع calculate درست عمل کنه قابلیت filter context هست یا row context?? اصلا کدوم توابع دکس این قابلیت رو… ادامه...

0
پاسخ
حسین وثوقی
حسین وثوقی
نویسنده
در پاسخ به  mehdi

سلام مثال رو بهترش کنیم. فرض کنید دو جدول دارید مشتری و فروش که رابطه یک به چند دارند شما در جدول مشتری یک ستون جدید ایجاد می کنید و تعداد رو در قیمت ضرب می کنید و با تابع SUM جمع می کنید همان طور که گفتید نتیجه برای تمامی مشتریان مساوی و برابر با جمع کل فروش است دلیل چیست؟ چون هنگام ایجاد ستون جدید Row Context وجود دارد اما Filter Context وجود ندارد(فیلتری صورت نمی گیرد) اما وقتی درون یک Row Context (ایجاد ستون جدید) تابع CALCULATE رو بنویسیم در واقع Row Context به Filter Context تبدیل… ادامه...

1
پاسخ
mehdi
mehdi
در پاسخ به  حسین وثوقی

آیا calculate تنها تابع با این قابلیت هست؟

0
پاسخ
حسین وثوقی
حسین وثوقی
نویسنده
در پاسخ به  mehdi

این قابلیت در CALCULATE وجود داره
ولی با RELATEDTABLE هم میشه مشابهش رو انجام داد

0
پاسخ
جستجو
جستجو برای:
دسته بندی مطالب
  • Charts
  • DAX
  • Excel
  • Power BI
  • Power Query
  • تحلیل داده
  • هوش تجاری
پکیج های آموزشی
  • Data Analysis
  • Excel
  • Power BI
  • Power Query
  • Python
  • SQL
درباره گروه تحلیلگری

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

اطلاعات تماس
  • تهران، خیابان دکتر فاطمی غربی، کوچه پروین
  • 42 12 600 - 0919 فقط تلگرام
  • info@tahlilgary.com
پیوندها
  • آموزش رایگان و اصولی اکسل (Excel)
  • دوره رایگان آموزش پاور بی آی (Power BI)
  • آموزش رایگان پاورکوئری (Power Query)
  • آمار و تحلیل داده با پایتون
  • دومین مسابقه‌ Power BI ایران
دسته بندی محصولات
Data Analysis Excel Power BI Power Query Python SQL
wpDiscuz

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت