خانه / آموزش Power BI بابازاده / درس پنجاه و هشت – Dax

درس پنجاه و هشت – Dax

Dax

زبان Dax زبان تحلیل اطلاعات و داده ها در مایکروسافت پاور بی آی می باشد. لینک مایکروسافت جهت آموزش زبان Dax عبارت است از Introduction to Dax-Power BI و کتاب Beginning Dax with Power BI جهت مطالعه پیشنهاد میگردد.

Dax مخفف Data Analysis Expressions می باشد. و یک زبان کوئری و functional محسوب می شود. یعنی کدی که می نویسید یک خروجی برمیگرداند، این خروجی ممکن است تک مقدار باشد و یا ممکن است مجموعه ای از رکوردها را به ما برگرداند.

هدف زبانDax  این است که کمک می کند تا فهم بهتری نسبت به اطلاعات داشته باشیم و قدرت آنالیز و گزارشات خود را افزایش دهید.  زبان Dax داخل پاور بی آی در مدل import استفاده می شود و همچنین در مدل Live conection مدل تبولار و مدل direct query هم استفاده می شود. داخل SSAS تبولار هم می توانید از زبان Dax استفاده کنید.

بنابراین زبان Dax در سه جا قابل استفاده می باشد که عبارت است از power bi، power pivot excel و SSASتبولار

زبان Dax یک زبان برنامه نویسی نیست بلکه فقط دیتا را می خواند و تحلیل انجام می دهد و در نهایت نتیجه را برمیگرداند. همانطور که گفتیم یک زبان functional language می باشد یعنی از طریق فراخوانی توابع کار خود را انجام می دهد و خروجی را تولید می کند. این توابع شامل دسته بندی زیر می باشند.

Date Time

Filter

Logical

Info

Mathtrig

ParentChild

Statistical

Text

دقت کنید در زبان Dax فقط باید از توابعی که قلا تعریف شده استفاده کنید. و نمیتوانید خودتان تابع تعریف کنید. مایکروسافت در ارائه ورژن جدید خود گاهی توابع جدیدی معرفی میکند ولی این توابع جدید در SSAS تبولار وجود ندارد.

زبان Dax این امکان را به شما نمی دهد که بتوانید روی فایل اولیه (دیتا سورس) تغییرات بدهید یعنی نمیتواند insert، delete و update کند.

دیتا مدل در زبان Dax شامل Data، Table، Columns، Relationships، Measure می باشد.

برای آموزش مطالب از دیتای AdventureworkDW از اسکیوال سرور استفاده می کنیم و مدل import  را انتخاب می کنیم.

جداول مورد نیاز را انتخاب کرده و به صفحه model view رفته تا ارتباطها را مشاهده کنید. همانطور که گفته شد سعی کنید جداول fact پایین و جداول dimension بالا باشند تا خوانایی بهتر شود. در اسلایسرها همیشه فیلدی از جداول dimenssionها را قرار می دهیم. با توجه به شکل از آنجاییکه دیتا را از database اسکیوال سرور خواندیم خود پاور بی آی ارتباطها را رسم کرده است ولی همیشه این ارتباطها را خودتون بررسی کنید و به پاور بی آی اعتماد نکنید.

relation

همانطور که میبینید بین دو جدول dimdate و factinternetsales سه ارتباط وجود دارد که یکی فعال و مابقی غیرفعال هستند. ارتباط فعال همان تاریخ سررسید فاکتور می باشد برای تغییر این ارتباط بهتر است این ارتباط فعال را delete کرده و ارتباطی که برمبنای orderdatekey می باشد را فعال می کنیم بدین ترتیب که روی ارتباط مورد نظر دوبار کلیک کرده تا صفحه edit باز شود.

edit relationship

بعد از اصلاح کردن ارتباط فعال بین این دو جدول دیتا مدل به شکل زیر می شود.

active relation

بعد از اینکه دیتا مدل را به درستی تعریف کردید می توانید وارد report view شده و از ویژوالها جهت تهیه گزارشات استفاده کنید.

به کمک زبان dax سه نوع محاسبات می توانیم ایجاد کنیم :

Calculated columns یا ستون محاسباتی

Calculated measures یا مژرهای محاسباتی که سنجه آماری هم گفته می شود.

Calculated tables یا جدول محاسباتی

در زبان dax اطلاعات را می خوانیم و تحلیل می کنیم بنابراین باید نام جدول و نام ستون مورد نظر را داشته باشید. که به دو صورت می توانید نام جدول و ستون را تعیین کنید.

اگر نام جدول شما دارای فاصله بود باید آن را داخل ‘  ‘ قرار داده و نام ستون را داخل براکت بنویسید.

dax

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

dax

بنابراین بهتر است همیشه در نام دادن به ستونهای جداول از فاصله استفاده نکنید. در مثال زیر یک ستون محاسباتی ایجاد می کند همانطور که میبینید از جدول sales دو ستون unitprice و quantity را نیاز دارد. از آنجایی که هر دو ستون برای یک جدول است می توانید نام جدول را فقط یکبار بنویسد ولی توصیه می شود همیشه در کنار نام ستون نام جدول را بنویسد.

dax

نکته بسیار مهم : هیچوقت در نامگذاری جداول از فاصله استفاده نکنید. تا حد امکان از اسامی معنادار استفاده کنید.

برای ایجاد ستون محاسباتی وارد صفحه data view شده روی جدول مورد نظر کلیک کرده تا ستونهای آن جدول را نشان دهد. از تب modeling گزینه new column را بزنید. می خواهیم در ایت ستون بعنوان مثال نام و فامیلی مشتری را کنار هم قرار دهیم. ترجیحا سعی کنید نام ستون هم بدون فاصله باشد. فرمول را به شکل زیر می نویسید. ترکیب رشته ها در زبان dax به کمک کارکتر &   انجام می شود.

dax

به این ترتیب یک ستون جدید در این جدول (DimCustomer ) با نام FullName ایجاد شد که شامل firstName و یک فاصله و LastName می باشد.

در جدول FactInternetSales از مشخصات کالا فقط ProductKey را داریم فرض کنید بخواهیم درون این جدول رنگ هر محصول را هم قرار دهیم، بعبارت دیگر می خواهیم در جدول فروش یک ستون بنام productColor ایجاد کنیم.

دقت کنید فیلد ProductColor در یک جدول دیگر قرار دارد. (DimProduct )

وارد صفحه data view شده و روی جدول فروش گزینه new column را بزنید. با توجه به دیتا مدل مشاهده می کنید که جدول dimproduct سمت one و جدول factinternetsales سمت many رابطه می باشد.

 

هدف ما این است که رنگ محصولات را از جدول محصول بیاوریم و داخل جدول فروش قرار دهیم یعنی اطلاعاتی از سمت one می خواهیم بخوانیم و در سمت many قرار دهیم. برای این کار از تابع Related استفاده می کنیم.

تابع related به ما کمک می کند که اطلاعاتی از سمت one ارتباط بیاوریم.

dax

درباره‌ی حمیدرضا بابازاده

تحلیلگر داده و متخصص هوش تجاری در اتریش هستم و تجربه کار بعنوان مشاور و مدرس BI در شرکتهای مختلف رو دارم . بیش از 1300 ساعت سابقه تدریس دوره های Microsoft BI و PowerBI رو در آموزشگاه سماتک و مجتمع فنی تهران دارم .

همچنین ببینید

Schedule refresh

درس هفتاد – Schedule refresh

Schedule refresh فقط برای حالت import در بانکهای رابطه ای استفاده می شود. و برای فایهای اکسل نمی باشد. بدین ترتیب می توانید یک برنامه جهت رفرش اطلاعات تنظیم کنید.

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

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

معادله امنیتی (فقط عدد بنویسید) *