این آموزش مخصوص کاربران جدید Power BI Desktop می باشد. این به این معنی است که یک معرفی ساده و کوتاه از اینکه چطور می توانید از Data Analysis Expressions (DAX)  برای انجام تعدادی از محاسبات پایه ای و تجزیه و تحلیل دیتا استفاده کنید. در این مقاله ما برخی مفاهیم, یک سری از کارهایی که می توانید انجام دهید, و تعدادی آزمون کوچک برای آزمایش آنچه آموخته اید را مرور خواهیم کرد. پس از کامل شدن این مقاله, شما باید درک خوبی از مهمترین مفاهیم اساسی در DAX داشته باشید.

DAX چیست؟

DAX مجموعه ای است از توابع و اپراتور های ثابتی که می تواند در یک فرمول یا Expression, جهت محاسبه و بازگرداندن یک یا چند مقدار مورد استفاده قرار گیرد. به بیان ساده تر, DAX  به شما کمک می کند که اطلاعات جدیدی را از داده های موجود در مدل خود به دست آورید.

چرا DAX  اهمیت بسیاری دارد؟

بسیار کار ساده ایست که یک فایل Power BI Desktop جدید درست کنید و مقداری دیتا را به آن وارد کنید. به هیچ وجه نمی توانید بدون استفاده از فرمول های DAX گزارش هایی را ایجاد کنید که بینش ارزشمندی به شما بدهد. اما, در صورتی که نیاز به تحلیل نرخ در صدی رشد در دسته بندی محصولات و در بازه های زمانی متفاوت داشته باشید چطور؟ یا نیاز به محاسبه رشد سالانه و مقایسه آن نسبت به روند بازار داشته باشید؟  فرمول های DAX این توانایی و بسیاری توانایی های مهم دیگر را برای شما فراهم می کند. یادگیری نحوه ایجاد یک فرمول DAX  موثر به شما کمک می کند تا از دیتای خود نهایت استفاده را ببرید. وقتی اطلاعات مورد نیاز خود را بدست می آورید, می توانید شروع به حل مشکلات کسب و کارهای واقعی کنید که خط سیر اصلی شما را تحت تاثیر قرار داده اند. این قدرت Power BI است و DAX به شما کمک خواهد کرد که به آن دست پیدا کنید.

پیش نیازها

ممکن است شما در حال حاضر با فرمول نویسی در Microsoft Excel آشنایی داشته باشید. این دانش شما برای یادگیری DAX می تواند برای شما مفید باشد, اما حتی اگر شما هیچ تجربه ای از فرمول نویسی در Excel نداشته باشید نیز , مفاهیم توضیح داده شده در این مقاله به شما کمک خواهد کرد تا بلافاصله فرمول نویسی در DAX  را شروع کنید و به حل مشکلات BI در دنیای واقعی بپردازید.

ما قصد داریم بر روی یادگیری فرمول نویسی DAX در محاسبات, و به طور خاص در Measure  ها و ستون های محاسباتی تمرکز کنیم. شما باید در حال حاضر با Power BI Desktop, وارد کردن دیتا, اضافه کردن Field ها به یگ گزارش و نیز مفاهیم اساسی Measure و Calculated Column ( ستون های محاسباتی) آشنایی داشته باشید.

Measure

Power BI Desktop به شما کمک می کنه تا تنها با چند کلیک بینشی از دیتای خود بدست بیاورید. اما گاهی اوقات دیتای در دسترس شامل تمام مواردی که برای پاسخ دادن به برخی سئوالات مهمتان دارید نمی باشد, Measure ها به شما کمک می کنند تا به این موارد دسترسی پیدا کنید.

در Power BI Desktop, Measure ها در View Report یا Data View تعریف می شوند . Measure هایی که شما تعریف می کنید در قسمت Field ها با آیکن ماشین حساب نمایش داده می شوند. شما می توانید Measure هایتان را به هر اسمی که می خواهید نامگداری کنید, و آنها را به یک ویژوال جدید یا یک ویژوال موجود اضافه کنید.

Columns (ستون های محاسباتی)

به وسیله ستون های محاسباتی, می توانید دیتای جدیدی را به یک جدول موجود در مدل خود اضافه کنید. اما به جای نوشتن کوئری و Load  کردن دیتا به ستون جدید از یک منبع داده, یک فرمول DAX  می نویسید که دیتای ستون های مورد نظرتان را مشخص می کند. در Power BI Desktop ستون های محاسباتی از طریق گزینه New Column در Report View ایجاد می شوند.

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

برای شروع

یادگیری و فهم ما از DAX  به وسیله سه مفهوم اصلی احاطه شده است: Syntax( نحوه نگارش),  Functions(توابع) و Context( مفاد). البته مفاهیم مهم دیگری در DAX وجود دارد, اما درک این سه مفهوم بهترین پایه را برای ایجاد مهارت های DAX  شما فراهم می کند.

Syntax (نحوه نگارش)

قبل از اینکه فرمول را بنویسید, اجازه دهید نگاهی به Syntax فرمول در DAX بیندازیم. Syntax شامل عناصر متفاوتی است که یک فرمول را به وجود می آورند, یا به بیان ساده تر, نحوه نوشتن یک فرمول. برای مثال, اجازه دهید یک فرمول ساده DAX را برای یک Measure بررسی کنیم.

این فرمول شامل نکات Syntax زیر می باشد:

  1. نام Measure, Total Sales می باشد.
  2. اپراتور ( = ) نشان دهنده شروع فرمول می باشد. وقتی محاسبه ای انجام می شود, نتیجه ای را بر می گرداند.
  3. تابع SUM تمام ارقام موجود در ستون Sales[SalesAmount] را جمع می کند.
  4. پرانتز () یک Expression شامل یک یا چند آرگومان را احاطه می کند. تمامی توابع به حداقل یک آرگومان نیاز دارند. یک آرگومان یک مقدار را به تابع انتقال می دهد.
  5. جدول مورد نظر Sales
  6. ستون مورد نظر [SalesAmount] در جدول Sales . با این آرگومان, تابع SUM متوجه می شود در کدام ستون عملیات Sum را انجام بدهد.

زمانی که سعی می کنید فرمول های DAX را یاد بگیرید, برای شما بسیار مفید خواهد بود که تمام عناصر فرمول را به زبانی که هر روز فکر می کنید و صحبت می کنید بشکنید. برای مثال, فرمول بالا را به این صورت می توانید بخوانید:

برای Measure با نام Total Sales, محاسبه کن (=) مجموع تمام مقادیر ستون [SalesAmount] را در جدول Sales.

وقتی این Measure را به یک گزارش اضافه می کنید, این Measure مقدار فروش را برای هر یک از فیلد های دیگر مثلا شماره تلفن های موبایل در آمریکا محاسبه می کند و باز می گرداند.

ممکن است شما فکر کنید که, آیا این Measure همان کاری را انجام نمی دهد که انگار من می خواهم تنها ستون SalesAmount را به گزارش اضافه کنم؟ بله, ولی دلیل خوبی وجود دارد  برای اینکه Measure  را بنویسیم که مقادیر را از ستون SalesAmount جمع میکند: اینکه می توانیم از این Measure به عنوان یک آرگومان در دیگر فرمول ها استفاده کنیم. این ممکن است در حال حاضر کمی گیج کننده به نظر بیاید, اما با افزایش مهارت هایتان در فرمول نویسی DAX , دانستن این مطلب فرمول ها و مدل شما را کارآمد تر می کند. در حقیقت, Total Sales Measure را بعدها به عنوان یک آرگومان در فرمول های دیگر مشاهده خواهید کرد.

اجازه دهید مطالب بیشتری را درباره این فرمول بررسی کنیم. بطور خاص, تابع SUM را معرفی می کنیم. توابع,  فرمول هایی از پیش نوشته شده هستند که انجام محاسبات پیچیده و دستکاری اعداد , تاریخ, زمان, متن و موارد دیگر را آسان می کنند. بعدا درباره توابع اطلاعات بیشتری کسب خواهید کرد.

ملاحضه میکنید که اسم جدول Sales که ستون در آن قرار دارد بر نام ستون [SalesAmount] مقدم شده است. این به عنوان یک نام کامل شناخته می شود که شامل نام جدول و نام ستون می باشد, که نام جدول بر نام ستون تقدم دارد. برای ستون های دیگری که در این جدول وجود دارند نیازی به ذکر             نام جدول در فرمول نمی باشد. این می تواند فرمول های بزرگی را به وجود آورد که شامل ستون های بسیاری به صورت کوتاه تر و ساده تر باشند. با این حال, تمرین خوبی خواهد بود برای شما که اسم جدول را در فرمول Measure خود وارد کنید, حتی اگر در جدول یکسانی باشند.

نکته مهمی که باید به آن توجه شود این است که اگر نام جدول شامل Space, لغات کلیدی, یا کاراکترهای غیرمجاز باشد, لازم است که نام جدول را داخل Single quotation (‘ ‘)  قرار دهید. هنچنین اگر این نام شامل کاراکترهای خارج از محدوده حروف ANSI باشد, صرف نظر از اینکه سیستم شما از آنها پشتیبانی می کند یا خیر, لازم است نام جدول را نیز داخل quotation mark قرار بدهید.

بسیار اهمییت دارد که فرمول شما syntax درستی داشته باشید. در بسیاری موارد, در صورتی که Syntax درست نباشد, با Syntax Error مواجه می شویم. در موارد دیگر, ممکن است Syntax درست باشد ولی مقادیر آنچه را که شما نیاز دارید را باز نمی گرداند. DAX Editor در Power BI Desktop شامل ویژگی پیشنهاد دادن می باشد, که برای کمک به شما در انتخاب عناصر صحیح و فرمول های درست به لحاظ Syntax استفاده می شود.

اجازه بدهید یک فرمول ساده بنویسیم. این بخش به شما کمک خواهد کرد که Syntax فرمول را بهتر درک کنید و اینکه چطور ویژگی پیشنهاد دادن در نوار فرمول به شما کمک خواهد کرد.

Task: نوشتن یک فرمول Measure

در نمونه دیتای موجود

  • در Report View , در لیست Field ها, بر روی جدول Sales راست کلیک کرده, و سپس بر روی گزینه New Measure کلیک می کنیم.
  • در نوار فرمول باز شده, نام Measure را به Previous Quarter Sales تغییر می دهیم.
  • بعد از = حروف ابتدایی CAL را تایپ می کنیم, سپس بر روی نام Function مورد نظر که قصد استفاده از آن را داریم, دابل کلیک می کنیم. در این فرمول, شما می خواهید از تابع CALCULATE استفاده کنید.

از تابع CALCULATE برای فیلتر مقادیری که میخواهیم با آرگومانی که در تابع Calculate وارد کرده ایم جمع کنیم استفاده می کنیم, تابع Calculate باید حداقل دارای ۲ آرگومان باشد, اولین ستون ستونی است که می خواهیم محاسبه کنیم و دومین ستون ستونی است که قرار است بر روی آن فیلتر شود.

  • بعد از باز کردن پرانتز نیاز هست که آرگومان دیگری را به تابع SUM پاس بدهیم.
  • سپس حروف ابتدایی جدول مورد نظر را تایپ کرده و نام جدول و ستون مورد نظر را انتخاب می کنیم, و سپس پرانتز را می بندیم. این اولین آرگومان تابع Calculate ما می باشد.
  • سپس یک کاما و Space را برای مشخص کردن اولین فیلتر تایپ می کنیم, سپس PREVIOUSQUARTER را تایپ می کنیم این فیلتر ما می باشد.

از تابع PREVIOUSQUARTER برای فیلتر کردن نتایج تابع SUM در فصل اخیر استفاده می کنیم.

  • بعد از پرانتز باز در تابع PREVIOUSQUARTER ستونی را که شامل رنجی از دیتا می باشد را وارد می کنیم که در این مثال نام ستون Calendar[DateKey] می باشد. تابع PREVIOUSQUARTER نیازمند یک آرگومان می باشد.
  • اطمینان حاصل کنید که هر دو آرگومان را در تابع وارد کرده اید, و سپس با دو پرانتز تابع را ببندید.

در نهایت فرمول شما به این صورت خواهد بود:

Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  • سپس در آخر گزینه و یا Enter را برای اعمال تغییرات کلیک میکنیم.

 

پاسخ دهید