آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

در ادامه آموزش سریالی Power BI، در قسمت ششم سریال به بررسی کاربردهای زبان DAX می پردازیم. اگر قسمت های قبلی سریال را مطالعه نکرده اید حتما مطالب زیر را بررسی کنید.

معرفی DAX

DAX، زبان مشترک در ابزارهای Power BI، SSAS Tabular و همچنین Excel Power Pivot است. در واقع DAX، قلب تپنده این ۳ ابزار است. بدون یادگیری زبان DAX، کارایی شما به عنوان کاربر این ابزارها به نصف و حتی پایین تر تقلیل می یابد.

ممکن است در ابتدا بدون دانش DAX، بتوانید داشبوردهای ابتدایی را توسعه دهید، اما به محض ایجاد نیازمندی های جدید با چالش های عدیده ای روبرو خواهید شد.

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

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

همان طور که می دانید با دانش ابتدایی Power BI می توانید داشبوردهای ابتدایی را ایجاد کنید اما اگر قصد حرفه ای شدن در این زمینه را دارید باید فراگیری DAX را در اولویت قرار دهید. در واقع بدون یادگیری اصولی DAX، تنها قدرت شما به عنوان توسعه دهنده داشبورد Darg & Drop است. ما در این مطلب سعی می کنیم شما را در مسیر یادگیری DAX، قرار دهیم. پس اگر کاربر یکی از ۳ ابزار Power BI یا SSAS Tabular یا Excel Power Pivot هستید این مطالب را از دست ندهید.

DAX مخفف Data Analysis Expression، زبانی مخصوص تحلیل و ساخت داشبوردهای تحلیلی است. قبلا در مورد تفاوت های DAX و M مطلب گفته شده که می توانید برای مطالعه بیشتر به لینک زیر مراجعه کنید.

مطالعه نمایید!

اما به طور کلی DAX زبان بهینه برای تحلیل و ساخت گزارشات تحلیلی است و از سوی دیگر M زبان بهینه برای پاکسازی و تبدیل داده است. شاید خیلی از اعمالی که در Power Query و با زبان M، قابل انجام است در DAX نیز قابل انجام باشد اما تا جای ممکن تمام اعمال مربوط به دستکاری، تمیز کاری و تبدیل داده ار در Power Query انجام دهید و انجام آن ها را به DAX، محول نکنید. برعکس سعی کنید تمام اعمال تحلیلی خود را به DAX بسپارید زیرا این زبان قدرتمند خاص تحلیل است.

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

برای درک این موضوع به مثال زیر توجه کنید. فرض کنید می خواهیم ماه مربوط به هر تاریخ را استخراج کنیم. برای این منظور باید یک ستون محاسباتی (Calculated Column) ایجاد نمایید. همان طور که مشاهده می کنید ابتدا تابع درونی اجرا می شود.

LEFT(‘Date'[Date],7)، ابتدا ۷ کاراکتر از سمت چپ استخراج می کند (به طور مثال برای ردیف اول ۱۳۹۸/۰۱ استخراج می شود) سپس تابع بیرونی از سمت راست ۲ کاراکتر استخراج می کند (۰۱ برای ردیف اول). بدین ترتیب عدد ۰۱ که نشان دهنده ماه فروردین است استخراج می شود.

Screenshot 1058 - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

موارد کاربرد DAX

ایجاد Measure، ستون محاسباتی (Calculated Columns) و جداول محاسباتی (Calculated Tables) 3 مورد از کاربردهای زبان DAX است.

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

یکی از کاربردهای زبان DAX ایجاد ستون محاسباتی است. ستون محاسباتی، ستونی جدید با استفاده از زبان DAX در جدول شما ایجاد می کند. برای ایجاد ستون محاسباتی کافیست از تب Modeling، گزینه New Column را انتخاب کنید. همچنین با راست کلیک کردن بر روی جدول، گزینه New Column در اختیار شما خواهد بود.

Screenshot 1060 - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

توجه کنید که ستون محاسباتی حتما و حتما باید در جدول مورد نظر شما ایجاد شود، چرا که این ستون به صورت فیزیکی به ستونی از جدول شما تبدیل می شود. بعد از انتخاب New Column، مطابق تصویر باکسی برای نوشتن فرمول باز خواهد شد.

Screenshot 1063 - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

قبل از علامت مساوی نام مورد نظر برای ستون را تایپ کنید. بعد از علامت مساوی فرمول مد نظر خود را تایپ کنید. به مثال زیر توجه نمایید. فرض کنید قصد ما استخراج سال از تاریخ است. پس نام مورد نظر خود یعنی Year را به عنوان نام در نظر گرفته و بعد از علامت مساوی شروع به نوشتن فرمول خود می کنیم. با استفاده از تابع LEFT، تعداد ۴ کاراکتر از سمت چپ تاریخ جدا می کنیم.

Screenshot 1064 - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

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

Screenshot 1058 - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

همان طور که مشاهده می کنید در هر ردیف به صورت مجزا محاسبه صورت پذیرفته و محاسبه برای ردیف بعدی آغاز می شود.

Measure

یکی از مهمترین کاربردهای زبان DAX ایحاد Measure است. برای ایجاد مژر از تب Modeling، گزینه New Measure را انتخاب نمایید. در باکس باز شده نام مورد نظر را تایپ نموده و بعد از مساوی کد مورد نظر خود را تایپ نمایید. فرض کنید جدولی مطابق تصویر داریم.

Screenshot 1066 - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

حال می خواهیم یک Measure ایجاد کنیم و جمع تعداد فروش را به دست آوریم. مطابق تصویر عمل می کنیم. همان طور که مشاهده می نمایید Measure ایجاد شده با آیکنی متفاوت در مدل ایجاد شده است. بر خلاف ستون محاسباتی شما نمی توانید نتیجه واحدی از Measure مشاهده نمایید!Screenshot 1065 - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

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

اما برای ایجاد Measure اهمیتی ندارد که در کدام جدول ایجاد شود. به طور مثال ممکن است پس از ایجاد Measure، آن را در مشخصات جدول مشتریان ببینیم که اهمیتی ندارد و هر جایی می توانیم از آن استفاده کنیم. Measure به صورت فیزیکی فضایی در مدل اشغال نمی کند.

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

Screenshot 1067 - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

همان طور که مشاهده می نمایید در Visual سمت راست که از نوع Card است، Context خاصی وجود ندارد و جمع کل ستون Quantiry محاسبه شده است. اما در Visual سمت چپ که از نوع table است نتایج متفاوت است. در واقع در هر ردیف Context متفاوتی در نظر گرفته شده است. در ردیف اول Context، مشتری به نام آرمین قاسمی راد است پس محاسبه فقط برای این فرد صورت پذیرفته است. در ردیف Total، همان طور که مشاهده می نمایید Context خاصی وجود ندارد و جمع کل محاسبه شده است. توجه کنید که در هر دو Visual از یک Measure استفاده شده است و تفاوت تنها در Context است.

حتما و حتما مطلب تفاوت های Measure و Calculated Column را مطالعه نمایید.

Calculated Table

گاهی اوقات می توانید از Table Functions استفاده نمایید که خروجی آن ها یک جدول است. برای این منظور از تب Modeling، گزینه New Table را انتخاب نمایید. بعد از نوشتن کد جدولی به مدل شما اضافه می شود. به مثال زیر توجه کنید. فرض کنید جدولی به صورت زیر در اختیار دارید.

Screenshot 1075 - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

قصد دارید جدول شما تنها حاوی اطلاعات سال ۹۸ باشد. پس باید یک جدول جدید ایجاد کنید. برای ایجاد این جدول از تابع FILTER استفاده نموده ایم که خروجی این تابع یک جدول است. در واقع با این کد جدولی جدید به مدل شما اضافه می شود که تنها اطلاعات سال ۹۸ را در خود خواهد داشت.

Screenshot 1074 - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

در این قسمت به کاربردهای زبان DAX پرداختیم. مروری بر نحوه ایجاد و تفاوت های Calculated Column و Measure و همچنین Calculated Table پرداختیم. این مطالب و همچنین لینک های ارائه شده در مطلب را مطالعه نمایید و در ادامه سریال با ما همراه باشید.




6b77990865d588b48d7f55a013cdd7ec?s=300&d=mm&r=g - آموزش Power BI صفر تا سکو : قسمت ششم (کاربردهای زبان DAX)

حسین وثوقی

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

دیدگاه بگذارید

avatar
  عضویت  
به دوستتان خبر دهید.