Business IntelligenceDAXExcel BISSAS

زبان M یا زبان DAX؟ از کدامیک استفاده کنیم؟

زبان M یا DAX
M یا DAX

M  یا DAX، انتخاب شما کدام است؟

تفاوت اصلی میان M و DAX چیست؟ به چه دلیل ما می توانیم یک ستون محاسباتی را به دو روش مختلف ایجاد نماییم؟ جوانب مثبت و منفی هر کدام چه چیزی است؟ از کدام یک می توان برای ایجاد ستون میزان سود استفاده کرد؟ چرا نمی توان تمام کارها را فقط در یکی از این دو زبان انجام داد؛ چرا ساختارشان تفاوت زیادی با هم دارد؟

اگر انچه گفته شد جزء سؤالات شماست، باید این مطلب را بخوانید، زیرا تفاوت های این دو زبان را خواهیم گفت و توضیح می دهیم چرا، چه زمانی و کجا از آن ها باید استفاده کرد.

M چیست؟

در واقع M، یک زبان اسکریپت‌نویسی در پشت صحنه Query Power است. از طرف دیگرM نام غیر رسمی این زبان است و نام رسمی آن Power Query Formula Language می باشد. همانطور که میبینید این کلمات طولانی هستند و مایکروسافت آن را با نام M  معرفی کرده است. حرف M برای نشان دادن چیزهای زیادی استفاده شده است، اما یکی از رایج ترین آن ها، Mashup می باشد.

این زبان قادر به تلفیق داده ها و انتقال آنها است. M، زبانی کاربردیست. و ساختار آن می تواند مشابه زیر باشد:

مثالی از زبان M
مثالی از زبان M

ساختار زبان M به صورت گام به گام است و معمولاً (نه همیشه)، هر خط در اسکریپت M، یک مرحله از انتقال داده را نشان می دهد و مرحله ی بعدی، از نتیجه ی مرحله ی قبلی استفاده خواهد کرد.

معمولاً دنبال کردن چنین ساختاری برای یک برنامه نویس، کار آسانی به شمار می آید. زیرا بلاک های برنامه نویسی Let و In قابل درک است و برخی از ویژگی های آن نیز مشابه دیگر زبان های برنامه نویسی می باشد.

DAX چیست؟

زبان DAX: (Data Analysis eXpression language) زبان بیان تجزیه و تحلیل داده ها می باشد که در اکسل، SQL Server Analysis Services Tabular ، Power BI و Power Pivot مشترک می باشد.

 DAX، زبان بیان است و برخلاف M بسیار شبیه به توابع اکسل می باشد. هرچند که DAX توانایی های بیشتری نسبت به فرمول های اکسل دارد. در اینجا مثالی از بیان DAX میبینید:

مثالی از زبان DAX
مثالی از زبان DAX

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

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

مثالی از کاربرد M:

در بسیاری از فرایند های تغییر داده ها می توان از M استفاده کرد. به طور مثال می توان از آن برای Pivot یا Unpivot کردن داده و گروه بندی آن بر اساس چندین ستون استفاده کرد. در اینجا نشان داده شده است که چگونه یک Pivot / Unpivot می تواند در Query Power کار کند.

تغییر داده توسط زبان M
تغییر داده توسط زبان M

مثال از کاربرد DAX:

از DAX برای بسیاری از محاسبات آنالیز داده ها استفاده می شود، مانند: محاسبات از ابتدای سال تا امروز، محاسبه ی میانگین 12 ماه اخیر یا هر چیزی که مشابه آنها باشد.

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

استفاده از DAX برای آنالیز داده

دو راهی بر سر ساخت ستون های محاسباتی

سوال اصلی این است که کدام را انتخاب کنیم. شما می توانید بسیاری از ستون های محاسباتی را در هر دو زبان M یا DAX ایجاد کنید. این مساله کمی گیج کننده است و شما با این چالش روبرو هستید که بهترین گزینه برای انجام این کار کدام است و یا چرا دو مکان مختلف برای ساخت آن ها وجود دارد؟  

به عنوان مثال؛ شما می توانید نام کامل یک فرد را از طریف بهم پیوستن ستون های نام و نام خانوادگی در هر دو زبان ایجاد کنید. اما با این سوال رو به رو می شوید: چرا دو مکان مختلف؟ کدام یک استفاده ی بهتری دارد؟ آیا می توانیم همیشه از یک زبان استفاده کنیم؟

برای پاسخ به این سوال، از مثال دیگری استفاده می کنیم؛ در حال حاضر انواع مختلفی از چاقو ها وجود دارند و تقریباً از همه ی آنها می توانید برای برش زدن پنیر استفاده کنید!

همانطور که می بینید تقریباً از تمام چاقو هایی که در تصویر بالا موجود است می توان برای برش پنیر استفاده کرد البته به جز یک مورد! بنابراین چرا چاقوهای زیادی برای این کار وجود دارد ؟!

 پاسخ صحیح این است که همه ی چاقوهای تصویر برای برش پنیر ساخته نشده اند هر چاقو برای یک مورد خاص مناسب می باشد و مورد مصرف خاص خود را دارد.

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

چرا می توانیم ستون محاسباتی همانندی را در DAX یا M ایجاد کنیم؟

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

کدام یک بهتر است؟

در پاسخ باید بگوییم که بستگی به نوع استفاده دارد. اگر قصد ایجاد یک ستون حاصل از بهم پیوستن دو ستون دیگر را دارید، به نظر منPower Query (M)  گزینه بهتری است، زیرا به طور معمول این کار بخشی از فرایند ETL در پروزه های BI است، و شما می توانید به راحتی مدل داده ای خود را به روشی که دوست دارید، بسازید. اما اگر می خواهید چیزی شبیه به محاسبات از ابتدای سال تا کنون(YTD) را ایجاد کنید. بدیهی است که می توانید چنین کاری را در M انجام دهید، اما تعداد خط های کد بیشتری را باید بنویسید و برای رسیدن به یک نتیجه ی صحیح، باید بسیاری از ترکیب های احتمالی را در نظر بگیرید و رسیدگی کنید، در حالی که در DAX می توانید با استفاده از تابع TotalYTD، این کار را به راحتی انجام دهید.

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

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

دو زبان با اهدافی متفاوت:

زبان های برنامه نویسی مختلفی در جهان وجود دارد که هر زبان جنبه های مثبت و منفی خود را دارد. JavaScript، زبان برنامه نویسی وب است که با ASP.NET یا PHP بسیار متفاوت می باشد. وقتی که زبان M  ایجاد شد، زبانی برای تغییر و تبدیل اطلاعات بود و هنوز هم به همان شکل است. DAX نیز برای پاسخ به سؤالات تحلیل گران کسب و کارها ایجاد شده است.

 DAX به چه سوالاتی می تواند پاسخ دهد؟

DAX موتور تحلیلی Power BI است که بهترين زبان براي پاسخ به سؤالات تحليلي به شمار می رود. سوالاتی که پاسخ آن ها براساس فیلتر هایی که در گزارش انتخاب می شود، متفاوت خواهد بود.

مثلا؛ ممکن است که شما بخواهید میانگین فروش 12 ماه گذشته را به ازای هر ماه محاسبه کنید. محاسبه این عدد در زبان M، کار دشواری ایست زیرا باید تماتمی احتمالات مختلف را در نظر بگیرید. (12 ماه برای هر محصول، برای هر مشتری ، یا هر ترکیب دیگر) اما اگر از توابع DAX استفاده کنید، موتور تحلیلی DAX تمام ترکیبات مختلف را در نظر می گیرد و بر اساس فیلتر های انتخاب شده خروجی صحیح را محاسبه می کند.

زبانM  به چه سوالاتی پاسخ می دهد؟

زبان M موتور تغییر و تبدیل داده ها در Power BI است. از M می توانید برای آماده سازی داده قبل از بارگذاری آنها در مدل داده ای استفاده کنید. به طور مثال، به جای انتقال سه جدول DimProduct ، DimProductSubcategory و DimProductCategory، می توانید همه ی آنان را در محیط Power Query با هم ادغام کنید و یک DimProduct واحد ایجاد نمایید که شامل تمام ستون های این جدول ها است. از طرفی باید بدانید که بارگیری همه ی این موارد در مدل خود و استفاده از DAX برای ارتباط شان با یکدیگر، به معنی مصرف حافظه اضافی برای چیزی است که لازم نیست در مدل باشد. در حالی که M به سادگی می تواند سه جدول فوق را با یکدیگر ترکیب کند و موجب ایجاد یک مجموعه داده نهایی شود.

به عنوان یک توسعه دهنده ی Power BI کدام زبان برای یادگیری مهم است؟

بی شک باید گفت که هر دو زبان برای یادگیری مهم هستند، زیرا M زبان ETL است و DAX زبان تحلیلی است.

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

نوشته های مشابه

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

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

دکمه بازگشت به بالا
بستن
بستن