DAX (Data Analysis Expressions)، زبان فرمولنویسی قدرتمندی است که در Power BI و Excel برای ایجاد ستونهای محاسبهشده، اندازهگیریها و محاسبات پیشرفته استفاده میشود. این زبان انعطافپذیر و کارآمد به کاربران امکان میدهد دادهها را بهطور هوشمندانهای دستکاری و جمعآوری کنند تا بینشهای ارزشمندی در زمینه هوش تجاری به دست آورند. در این مقاله، برخی توابع و فرمول DAX پرکاربرد را بررسی میکنیم که مبتدیان میتوانند از آنها برای انجام جمعآوری و ویرایش دادههای پیچیده در Power BI استفاده کنند.
انواع تابع DAX در Power BI
۱- تابع CALCULATE
تابع CALCULATE
یکی از مهمترین توابع DAX است که به شما امکان میدهد فیلترهای مختلفی را برای محاسبات اعمال کنید و رفتار پیشفرض آنها را تغییر دهید.
مثال: فرض کنید یک جدول فروش با ستونهایی برای مقدار فروش، تاریخ و ناحیه فروش دارید. میتوانید از تابع CALCULATE
برای فیلتر کردن مقدار فروش بر اساس تاریخ و ناحیه فروش استفاده کنید. بهعنوان مثال، فرمول DAX زیر کل مبلغ فروش منطقه غربی را در ژانویه ۲۰۲۲ محاسبه میکند:
Total Sales (West Jan 2022) = CALCULATE(
SUM(Sales[Amount]),
Sales[Region] = "West",
Sales[Date].[Month] = 1,
Sales[Date].[Year] = 2022
)
۲- تابع SUM
تابع SUM
مجموع یک ستون یا عبارت مشخص شده را محاسبه میکند. معمولاً برای جمعآوری دادههای عددی استفاده میشود.
مثال: فرض کنید یک جدول با یک ستون برای مبلغ فروش دارید. میتوانید از تابع SUM
برای محاسبه کل مبلغ فروش استفاده کنید:
Total Sales = SUM(Sales[Amount])
۳- تابع AVERAGE
تابع AVERAGE
میانگین یک ستون یا عبارت مشخصشده را محاسبه میکند. برای یافتن مقدار متوسط دادههای عددی مفید است.
مثال: فرض کنید یک جدول با یک ستون برای قیمت محصولات دارید. برای محاسبه میانگین قیمت میتوانید از تابع AVERAGE
استفاده کنید:
Average Price = AVERAGE(Products[Price])
۴- تابع COUNT
تابع COUNT
تعداد سطرهایی که حاوی یک مقدار هستند، را در یک جدول یا ستون میشمارد. برای تعیین تعداد رخدادها مفید است.
مثال: فرض کنید یک جدول با ستونی برای نام محصولات دارید. میتوانید از تابع COUNT
برای شمارش تعداد محصولات استفاده کنید:
Product Count = COUNT(Products[ProductName])
۵- توابع MIN و MAX
توابع MIN
و MAX
به ترتیب مقادیر حداقل و حداکثر را از یک ستون یا عبارت مشخص برمیگردانند.
مثال: فرض کنید یک جدول با یک ستون برای قیمت محصولات دارید. برای یافتن کمترین و بالاترین قیمتها میتوانید از توابع MIN
و MAX
استفاده کنید:
Minimum Price = MIN(Products[Price])
Maximum Price = MAX(Products[Price])
۶- تابع DISTINCT
تابع DISTINCT
یک جدول تکستونی را برمیگرداند که حاوی مقادیر منحصر بهفرد از یک ستون مشخص است. برای حذف مقادیر تکراری مفید است.
مثال: فرض کنید یک جدول با یک ستون برای دستهبندی محصولات دارید. میتوانید از تابع DISTINCT
برای بازیابی لیستی از دستههای منحصر بهفرد استفاده کنید:
Distinct Categories = DISTINCT(Products[Category])
۷- تابع CONCATENATE
تابع CONCATENATE
چندین رشته متن را در یک رشته متنی ترکیب میکند. برای ایجاد فیلدهای به هم پیوسته مفید است.
مثال: فرض کنید یک جدول با ستونهایی برای نام و نام خانوادگی دارید. میتوانید از تابع CONCATENATE
برای ایجاد یک فیلد نام کامل استفاده کنید:
Full Name = CONCATENATE(Customers[FirstName], " ", Customers[LastName])
۸- توابع LEFT و RIGHT
توابع LEFT
و RIGHT
به ترتیب تعداد مشخصی از کاراکترها را از سمت چپ یا راست یک رشته متن استخراج میکنند.
مثال: فرض کنید یک جدول با ستونی برای شماره تلفن دارید. میتوانید از توابع LEFT
و RIGHT
برای استخراج کد منطقه و چهار رقم آخر استفاده کنید:
Area Code = LEFT(Customers[PhoneNumber], 3)
Last Four Digits = RIGHT(Customers[PhoneNumber], 4)
۹- تابع LEN
تابع LEN
تعداد کاراکترهای یک رشته متنی را محاسبه میکند. برای تعیین طول یک رشته مفید است.
مثال: فرض کنید یک جدول با ستونی برای توضیحات محصول دارید. میتوانید از تابع LEN
برای محاسبه طول هر توضیح استفاده کنید:
Description Length = LEN(Products[Description])
۱۰- توابع UPPER، LOWER و PROPER
توابع UPPER
، LOWER
و PROPER
متن را به ترتیب به حروف بزرگ، کوچک و مناسب (با حروف بزرگ هر کلمه) تبدیل میکنند.
مثال: فرض کنید یک جدول با ستونی برای نام مشتریان دارید. میتوانید از توابع UPPER
، LOWER
و PROPER
برای قالببندی نامها استفاده کنید:
Upper Case Name = UPPER(Customers[Name])
Lower Case Name = LOWER(Customers[Name])
Proper Case Name = PROPER(Customers[Name])
۱۱- تابع IF
تابع IF
ارزیابیهای شرطی را انجام میدهد. اگر شرط درست باشد یک مقدار و اگر شرط نادرست باشد مقدار دیگری را برمیگرداند.
مثال: فرض کنید یک جدول با ستونی برای مبالغ فروش دارید. میتوانید از تابع IF
برای دستهبندی فروشها به عنوان بالا یا کم بر اساس یک آستانه استفاده کنید:
Sales Category = IF(Sales[Amount] > 5000, "High", "Low")
۱۲- تابع SWITCH
تابع SWITCH
شبیه تابع IF
است اما به شما امکان میدهد چندین شرایط را ارزیابی کنید و مقادیر مختلف را بر اساس هر شرط برگردانید.
مثال: فرض کنید یک جدول با یک ستون برای رتبهبندی محصولات دارید. میتوانید از تابع SWITCH
برای اختصاص یک دستهبندی بر اساس مقدار رتبهبندی استفاده کنید:
Rating Category = SWITCH(
Products[Rating],
۱, "Poor",
۲, "Average",
۳, "Good",
۴, "Very Good",
۵, "Excellent",
"Unrated"
)
۱۳- تابع ISBLANK
تابع ISBLANK
خالی یا خالی بودن یک مقدار را بررسی میکند. اگر مقدار خالی باشد TRUE
و در غیر این صورت FALSE
را برمیگرداند.
مثال: فرض کنید یک جدول با یک ستون برای تاریخ سفارش دارید. میتوانید از تابع ISBLANK
برای شناسایی سفارشهای با تاریخهای گمشده استفاده کنید:
Missing Order Dates = ISBLANK(Orders[OrderDate])
۱۴- توابع AND و OR
توابع AND
و OR
عملیات منطقی را انجام میدهند. آنها بر اساس شرایط منطقی مشخصشده، TRUE
یا FALSE
را برمیگردانند.
مثال: فرض کنید یک جدول با ستونهایی برای قیمت و مقدار محصول دارید. میتوانید از تابع AND
برای بررسی اینکه آیا قیمت و مقدار هر دو معیارهای خاصی را دارند یا خیر استفاده کنید:
High Price and Low Quantity = AND(Products[Price] > 50, Products[Quantity] < 10)
۱۵- تابع DATE
تابع DATE
یک تاریخ از مقادیر مشخصشده سال، ماه و روز ایجاد میکند. برای کار با محاسبات مربوط به تاریخ مفید است.
مثال: فرض کنید یک جدول با ستونهای سال، ماه و روز دارید. میتوانید از تابع DATE
برای ایجاد فیلد تاریخ استفاده کنید:
Order Date = DATE(Orders[Year], Orders[Month], Orders[Day])
۱۶- توابع YEAR، MONTH و DAY
توابع YEAR
، MONTH
و DAY
به ترتیب اجزای سال، ماه و روز را از یک تاریخ استخراج میکنند.
مثال: فرض کنید یک جدول با یک ستون برای تاریخ سفارش دارید. میتوانید از توابع YEAR
، MONTH
و DAY
برای استخراج اجزای مربوطه استفاده کنید:
Order Year = YEAR(Orders[OrderDate])
Order Month = MONTH(Orders[OrderDate])
Order Day = DAY(Orders[OrderDate])
۱۷- تابع FORMAT
تابع FORMAT
یک مقدار را به یک فرمت مشخص تبدیل میکند. برای قالببندی اعداد، تاریخها و زمانها مفید است.
مثال: فرض کنید یک جدول با ستونی برای مبالغ فروش دارید. میتوانید از تابع FORMAT
برای فرمت مبالغ به عنوان ارز استفاده کنید:
Formatted Sales = FORMAT(Sales[Amount], "Currency")
۱۸- تابع RANKX
تابع RANKX
رتبه یک مقدار را در یک ستون مشخص محاسبه میکند. برای ایجاد رتبهبندی بر اساس معیارهای خاص مفید است.
مثال: فرض کنید یک جدول با یک ستون برای فروش محصول دارید. میتوانید از تابع RANKX
برای رتبهبندی محصولات بر اساس میزان فروش استفاده کنید:
Product Rank = RANKX(ALL(Products), Products[SalesAmount])
۱۹- تابع RELATED
تابع RELATED
یک مقدار را از یک جدول مرتبط بر اساس یک رابطه مشخص شده بازیابی میکند.
مثال: فرض کنید یک جدول با یک ستون برای شناسه مشتری و یک جدول دیگر با نام مشتریان دارید. میتوانید از تابع RELATED
برای بازیابی نام مشتریان مربوطه بر اساس شناسهها استفاده کنید:
Customer Name = RELATED(Customers[Name])
۲۰- تابع CALCULATETABLE
تابع CALCULATETABLE
با اعمال فیلترها بر روی یک جدول یا ستون موجود، یک جدول جدید ایجاد میکند.
مثال: فرض کنید یک جدول با ستونهایی برای مقادیر و مناطق فروش دارید. میتوانید از تابع CALCULATETABLE
برای فیلتر کردن مبالغ فروش بر اساس منطقه استفاده کنید:
West Sales Table = CALCULATETABLE(
Sales,
Sales[Region] = "West"
)
۲۱- توابع FIRSTNONBLANK و LASTNONBLANK
توابع FIRSTNONBLANK
و LASTNONBLANK
به ترتیب اولین یا آخرین مقدار غیر خالی را از یک ستون یا عبارت مشخص شده برمیگردانند.
مثال: فرض کنید یک جدول با یک ستون برای فروش محصول دارید. میتوانید از توابع FIRSTNONBLANK
و LASTNONBLANK
به ترتیب برای بازیابی اولین و آخرین مبالغ فروش غیر خالی استفاده کنید:
First Sale = FIRSTNONBLANK(Sales[Amount], Sales[Amount])
Last Sale = LASTNONBLANK(Sales[Amount], Sales[Amount])
۲۲- تابع DIVIDE
تابع DIVIDE
دو عدد را تقسیم میکند و با برگرداندن یک مقدار جایگزین مشخص، مقادیر صفر یا خالی را به خوبی مدیریت میکند.
مثال: فرض کنید یک جدول با ستونهایی برای فروش و واحدهای فروخته شده دارید. میتوانید از تابع DIVIDE
برای محاسبه فروش در هر واحد استفاده کنید، در صورتی که واحدهای فروخته شده صفر باشد:
Sales per Unit = DIVIDE(Sales[Amount], Sales[UnitsSold], 0)
نکات کلیدی برای استفاده بهتر از DAX
مدل داده قوی، کلید موفقیت در DAX است. قبل از نوشتن فرمولها، روابط بین جداول را به درستی طراحی کنید.
از Measures به جای ستونهای محاسبهشده استفاده کنید تا عملکرد گزارش بهتر شود.
برای تحلیلهای زمانی، جدول تاریخ (Date Table) ایجاد و آن را در Power BI علامتگذاری کنید.
برای دادههای حجیم، بهینهسازی Query Folding و استفاده از SUMMARIZE یا GROUPBY را در نظر بگیرید
نتیجهگیری
در این مقاله تعدادی از قدرتمندترین فرمولها و توابع DAX را در Power BI بررسی کردیم. این توابع DAX پایه و اساس ایجاد ستونهای محاسبهشده، اندازهگیریها و محاسبات پیشرفته را فراهم میکنند و شما را قادر میسازند تا دادهها را ویرایش و جمعآوری کنید تا بینشهای ارزشمندی به دست آورید. با تسلط بر این فرمولها و توابع DAX، میتوانید پتانسیل کامل Power BI را برای تجزیه و تحلیل و تجسم دادهها به طور موثر استفاده کنید.
سوالات متداول (FAQ)
۱. DAX چیست و در کجا استفاده میشود؟
DAX زبان فرمولنویسی مایکروسافت است که در Power BI، Excel Power Pivot و SSAS Tabular برای انجام محاسبات پیشرفته استفاده میشود.
۲. آیا DAX همان Excel Formula است؟
خیر، هرچند شباهتهایی در توابع وجود دارد، اما DAX قدرت پردازش داده در مدلهای چندبعدی و ارتباطی را دارد.
۳. یادگیری DAX چقدر زمان میبرد؟
بسته به سطح تجربه شما، از چند هفته برای مبانی تا چند ماه برای تسلط کامل متغیر است.
۴. بهترین منبع یادگیری DAX چیست؟
آموزشهای عملی همراه با پروژه واقعی، مثل دورههای تخصصی شرکت لاندا، سریعترین مسیر یادگیری است.
۵. آیا میتوانم بدون دانش برنامهنویسی DAX یاد بگیرم؟
بله، اما داشتن درک از منطق داده و مدلسازی، روند یادگیری را بسیار آسانتر میکند.
چرا یادگیری DAX با لاندا؟
شرکت توسعه فناوری اطلاعات لاندا با تخصص در پیادهسازی راهکارهای هوش تجاری (BI)، داشبوردهای تحلیلی و مدلسازی داده، دورههای تخصصی و پروژهمحور DAX را ارائه میدهد.
با تیم لاندا، شما فقط فرمولها را حفظ نمیکنید، بلکه در پروژههای واقعی آنها را پیادهسازی میکنید.
منابع و مقالات
- کتاب “ کتاب مرجع زبان DAX” به قلم روزبه امیرعصامی
- کتاب مرجع زبان فرمول نویسی M در پاور کوئری به قلم روزبه امیرعصامی
- کتاب طراحی داشبوردهای مدیریتی در Microsoft Power BI به قلم روزبه امیرعصامی
تماس و مشاوره
اگر میخواهید گزارشها و داشبوردهای Power BI خود را به سطح حرفهای برسانید، همین حالا با تیم لاندا تماس ✆ بگیرید.
- برگزاری دورههای آموزشی DAX از مبتدی تا پیشرفته
- مشاوره تخصصی در بهینهسازی مدل داده و فرمولها
- پیادهسازی پروژههای هوش تجاری
نظری داده نشده