زبان DAX چیست؟
در این مطلب قصد داریم به بررسی زبان DAX بپردازیم. می خواهیم بدانیم زبان DAX چیست؟ و در چه مواردی کاربرد دارد؟ در این مطلب به بررسی مفاهیم پایه ای DAX خواهیم پرداخت.
زبان DAX چیست؟
قبل از این که بگوییم زبان DAX چیست؟ باید به معرفی اجمالی این زبان بپردازیم. DAX مخفف عبارت Data Analysis Expression زبان مشترک بین نرم افزار های Power BI، همچنین Excel Power Pivot و SSAS Tabular است. زبان DAX مجموعه ای از توابع، اپراتور ها و محدودیت ها است که می تواند یک یا چند مقدار را به عنوان خروجی تولید کند و به شما کمک کند تا اطلاعات جدیدی از دل داده های خود استخراج کنید.
چرا DAX اهمیت دارد؟
شما به راحتی می توانید داده را در Power BI وارد کنید، داده ها را دستکاری کنید و به شکل و شمایل مناسب و مورد نیاز خود در آورید، بدون نیاز به نوشتن حتی یک خط کد گزارش هایی ایجاد کنید و نیاز های کسب و کار خود را برطرف سازید، اما به محض ایجاد نیازهای جدی تر و پیشرفته تر، بدون استفاده از زبان DAX کاری از پیش نخواهید برد.
زبان DAX این قابلیت را به شما می دهد تا تحلیل های پیشرفته تری ارائه کنید، به استخراج اطلاعات پر اهمیت تری بپردازید و به بینش عمیق تری از کسب و کار خود دست پیدا کنید.
دقت کنید که مقصود ما این نیست که Drag & Drop کردن خوب است یا بد؟ چه بسا این ویژگی یکی از مهم ترین ویژگی های یک نرم افزار هوش تجاری سلف سرویس این است که کاربر بتواند نیازهای اولیه خود را با کمترین زحمت برطرف سازد، اما به این نکته هم توجه کنید که قرار نیست تا ابد مسائل پیش پا افتاده ای در کسب و کار شما پیش آید، پس حتما و حتما نیاز دارید تا خود را به اسلحه قدرتمند DAX مسلح سازید.
مشابهت با اکسل
فرمول نویسی با زبان DAX تا حدی به فرمول نویسی در اکسل شباهت دارد، اما آیا این موضوع به این معنی است که اکسل پیش نیاز یادگیری زبان DAX است؟ قطعا خیر! شما در صورتی که با اکسل کار کرده باشید تا حدی راحت تر می توانید وارد فرمول نویسی با استفاده از زبان DAX شوید.
اما اگر تا به حال اکسل را هم از نزدیک ندیده اید باز هم جای نگرانی نیست! زبان DAX قواعد و قوانین مخصوص به خود را دارد که مستقل از هر زبان دیگری قابل یادگیری و استفاده است.
موارد استفاده از زبان DAX
در Power BI استفاده از زبان DAX برای ایجاد Measure ها، ستون های محاسباتی (Calculated Columns) و جداول محاسباتی (Calculated Tables) به کار برده می شود.
Syntax در زبان DAX
حال که می دانید زبان DAX چیست؟ لازم است که با Syntax فرمول نویسی در زبان DAX آشنا شویم. Syntax در واقع قواعد و قوانین نگارشی یک زبان برنامه نویسی است. در شکل زیر یک نمونه از نحوه فرمول نویسی برای ایجاد مژر در زبان DAX را مشاهده می کنید. همان طور که مشاهده می کنید این کد از اجزای مختلفی تشکیل شده است.
هنگامی که می خواهید مژری ایجاد کنید ابتدا نام آن را انتخاب نموده (1)، سپس علامت مساوی (2) را قرار می دهیم. بعد از آن استفاده از یک تابع مانند SUM ضروری به نظر می رسد (3). حال باید پارامتر های مورد نیاز آن تابع را در پرانتز معرفی نمایید.
همان طور که می دانید پارامتر مورد نیاز تابع SUM یک ستون است. تابع SUM مقادیر موجود در یک ستون را با هم جمع می کند. برای معرفی ستون حتما باید ابتدا نام جدول (4) و سپس نام ستون (5) را درج نمایید.
اگر بخواهیم به زبان ساده بگوییم، مژری به نام TotalSales ایجاد کردیم که مقادیر ستون SalesAmout را جمع نمایید. حال می توانیم این مژر را در گزارش های خود مورد استفاده قرار دهیم. به تصویر زیر توجه کنید.
همان طور که مشاهده می کنید ما از یک مژر (TotalSales) در 4 گزارش استفاده نمودیم. مژر یکسان است اما Context متفاوت! پس نتایج متفاوتی را شاهد هستیم. پس متوجه شدید که مقدار خروجی یک مژر با توجه به Context مشخص می شود و این مهمترین خاصیت مژر است.
آیا همین کار را با Drag & Drop نمی توانستیم انجام دهیم؟ قطعا می توانستیم. کافی بود ستون SalesAmount در قسمت Values قرار دهیم تا یک مژر ایجاد شود. به این نوع از مژر Implicit Measure گفته می شود. در واقع شما تنها Drag & Drop می کنید و در پشت پرده یک مژر ساخته می شود، بدون آنکه شما کار خاصی انجام دهید. این نوع مژر در مقابل Explicit مژر که شخصا آن را می نویسید، قرار می گیرد.
مشکل اینجاست که شما از مژر ضمنی نمی توانید در مژر های دیگر استفاده کنید، پس حتی اگر می توانید با Drag & Drop آن را به راحتی ایجاد کنید، سعی کنید خودتان آن را بنویسید.
در مثال زیر از مژر قبل به عنوان آرگومان در یک مژر جدید استفاده نمودیم. پس خیال خود را از همان ابتدا راحت کنید و همه مژر ها را خودتان بنویسید. این مژر فروش اینترنتی را محاسبه می کند.
بیایید یک قرارداد را بین خودمان تنظیم کنیم و همگی به آن پایبند باشیم. این که همیشه قبل از نام ستون، نام جدول را بنویسیم اما هیچ گاه قبل از مژر نام جدول را ننویسیم. به مثال بالا توجه کنید. TotalSales نام یک مژر است که نام جدول پشت آن نوشته نشده است. اما Channel یک ستون است که نام جدول پشت آن نوشته شده است.
همچنین توجه کنید اگر نام جدول دارای فاصله باشد یا از کلمات رزرو شده یا علائم غیر مجاز استفاده شده باشد باید آن را در single quotation قرار دهیم. به مثال زیر توجه کنید.
Measure
خب بیایید با هم یک مژر بنویسیم. می خواهیم میزان فروش در سال 2013 را به دست آوریم. از تب Home گزینه New Measure را انتخاب کنید.
باکسی برای شما باز می شود که در آن =Measure نوشته شده است. Measure را پاک کنید و نام دلخواه خود را به جای آن تایپ کنید. نام مژر را Sales2013 گذاشتیم. حال شروع به تایپ می کنیم. می خواهیم از تابع CALCUALTE استفاده کنیم. با شروع به تایپ، دست غیب به کمک شما می آید و به شما پیشنهاداتی می دهد.
به تصویر زیر توجه کنید. با شروع به تایپ لیستی از توابع نمایش داده می شود که از این لیست CALCULATE را انتخاب می کنیم. برای انتخاب کافیست با جهت های موجود در کیبورد تابع مورد نظر را انتخاب نموده و کلید Tab را فشار دهید. تابع، نوشته شده، توضیحی درباره آن نمایان می شود و به شما توضیح می دهد چه آرگومان هایی مورد نیاز است.
همان طور که مشاهده می کنید گفته شده می توانید یک expression و چند فیلتر را به عنوان آرگومان به آن معرفی نمایید. ما مژر TotalSales را به عنوان expression و سال 2013 را به عنوان فیلتر معرفی می نماییم.
برای نوشتن مژر براکت باز را تایپ کنید تا لیست مژر ها نمایش داده شود.
بعد از اتمام expression علامت کاما را انتخاب کنید تا آرگومان دوم را بنویسید. همان طور که در تصویر بالا مشاهده می کنید آرگومان اول Bold کرده که به این معنی است که شما باید آرگومان اول را وارد نمایید. به محض تایپ کردن کاما آرگومان دوم Bold خواهد شد. در نهایت با بستن پرانتز فرمول نویسی به اتمام خواهد رسید.
حال می توایند از این مژر در ویژوال های خود استفاده کنید.
Calculated Column
یکی از موارد دیگر استفاده از زبان DAX، ایجاد ستون های محاسباتی است. برای ایجاد ستون های محاسباتی باید در جدول مورد نظر بر روی یکی از ستون ها کلیک راست نموده و گزینه New Column را انتخاب کنید.
دقت کنید که بر خلاف مژر که به صورت فیزیکی ایجاد نمی شود و مهم نیست در چه جدولی ذخیره شود، ستون محاسباتی به صورت فیزیکی در مدل شما ذخیره شده و اشغال فضا و RAM را در پی خواهد داشت و جدول میزبان آن اهمیت دارد.
فرض کنید می خواهیم در جدول فروش تعداد فروش را در قیمت ضرب کنیم. تصویر این عملیات را مشاهده می کنید.
توجه کنید که محاسبه Calculated Column ردیف به ردیف انجام شده و نتیجه در مقابل آن درج می شود. در واقع ردیف به ردیف تعداد در قیمت ضرب شده و نتیجه در ستون LineAmount ذخیره می شود.
Calculated Table
جدول محاسباتی جدولی است که با زبان DAX ایجاد و به مدل اضافه می شود. در این مورد باید از توابعی استفاده کنید که خروجی آن ها یک جدول باشد. مانند توابع:
ALL, VALUES, FILTER, …
کافی است از تب Home، گزینه New Table را انتخاب نموده و دستور خود را وارد نمایید. فرض کنید می خواهیم جدولی ایجاد کنیم که فقط شامل خرید های آنلاین باشد. کافیست به ترتیب زیر عمل کنیم.
به این ترتیب با استفاده از تابع FILTER یک جدول فیزیکی به مدل اضافه می شود که حاوی بخشی از اطلاعات جدول Sales است.
جمع بندی
در این مطلب به معرفی اجمالی از زبان DAX پرداختیم. حال شما می دانید زبان DAX چیست؟ و مفاهیم پایه ای آن کدامند؟ از DAX نترسید و با آن به جنگ مسائل کسب و کار خود بروید.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقی
سلام
مطب آموزشی مفیدی بود.
از آموزشهای خوب شما سپاسگزارم
سلام ممنون از همراهیتون
سلام
ممنونم از آموزش خوبتون
اگه ممکنه دیتای مورد استفاده را برای من ارسال کنید .
https://tahlilgary.com/wp-content/uploads/AdventureWorksDW2012.xlsx
سلام
لینک رو تست کنید
بسیار مفید بود
ممنونم
عالی