فهرست
Calculated Column & Measure & Table
بعد از آنکه روابط بین جداول را تعیین کردید، برای آنکه بتوانید دادهها را دقیقا به جایی برسانید که برای مصورسازی آماده باشد و بتوانید از داده نکات لازم را استخراج کنید میتوانید از DAX (Data Analysis Expression) استفاده کنید.
DAX زبان تحلیلی پاوربیآی است و بر خلاف زبان M که در پاورکوئری استفاده میشود و زبان نسبتا نوظهوری است، DAX در پاوربیآی برای تحلیل و محاسبات مورد استفاده قرار میگیرد و برعکس زبان M به بزرگ یا کوچک بودن حروف حساس نیست.
زبان DAX را میتوانید در قالب سه ویژگی پاوربیآی استفاده کنید. یعنی اگر بخواهید تحلیلی بر روی داده انجام دهید باید از سه طریق این کار را انجام دهید: ۱- یا یک Measure بسازید ۲- یا Calculated Column استفاده کنید و یا ۳- یک Calculated Table بسازید. تفاوت این سه در چیست؟
مفهوم Calculated Table همانطور که نام آن پیداست ساختن یک جدول جدید برساخته از جداول موجود و یا حتی با دادههای جدید است. در این صورت یک جدول به بقیهی جدولها اضافه میشود که تنها تفاوت با بقیه در رنگ آبی آیکون آن خواهد بود.
تشخیص تفاوت بین Measure و Calculated Column ظرافت بیشتری لازم دارد.
Calculated Column یک ستون مانند سایر ستونهای یک جدول است که با استفاده از زبان DAX محاسباتی را به ازای هر ردیف انجام میدهد و در یک ستون جدید ذخیره میکند. این سطر به سطر محاسبه کردن (Row by Row Calculation)، ویژگی مهم Calculated Column است که با نام Row Context شناخته میشود و درواقع میتوان گفت Calculated Column یک فیلتر ذاتی در خود دارد. Calculated Column مانند بقیهی ستونها در حافظهی سیستم ذخیره میشود و برای هربار رفرش کردن فایل به ازای هر سطر یا ردیف محاسبه صورت میگیرد.
Measure حالت کلیتری دارد و به ازای هر ردیف محاسبه نمیشود بلکه ممکن است برای یک یا چند جدول با هم محاسباتی را انجام دهد. Measure را نمیتوان در جدول مشاهده کرد و برای دیدن مقادیر بدست آمده از Measure باید از ویژالیزیشنها در گزارش استفاده کرد. اگر در گزارش فیلترینگی انجام نشده باشد Measure معمولا عدد کل را نشان میدهد. Measure براساس فیلترهایی که در گزارش وجود دارد، محاسبه میشود (Filter Context) و به همین خاطر فرآیند محاسبهی آن با توجه به این فیلترها تغییر میکند. Measure در حافظه ذخیره نمیشود و به همین باعث افزایش حجم فایل نمیشود ولی بدلیل Filter Context از CPU برای محاسبه استفاده میشود.
برای جمعبندی تفاوت بین Measure و Calculated Column جدول زیر را ببینید:
Calculated Column | Measure |
در حافظه ذخیره میشود | در حافظه ذخیره نمیشود |
با هر بار رفرش کردن محاسبه انجام میشود | با هر تغییر در فیلترینگ دوباره محاسبه میشود |
حافظه را مصرف میکند | CPU را مصرف میکند |
برای محاسبات سطر به سطر استفاده میشود | برای محاسبات تجمیعی معمولا استفاده میشود |
مقادیر محاسبه شده در جدول و در قسمت Data قابل مشاهده است | مقادیر محاسبه با استفاده از ویژوالها قابل مشاهده است |
قابل جایگزین شدن با Custom Column در پاور کوئری است | بهترین گزینه برای استفاده از DAX است. |
با توجه به ویژگیهای گفته شده بهتر است در بیشتر مواقع از Measure استفاده شود و فقط در مواقع لزوم از Calculated Column استفاده شود، زیرا حجمی که مصرف میکند موجب میشود تا سرعت پردازش کم شود. البته اگر تعداد زیادی Measure پیچیده هم وجود داشته باشد راندمان CPU کم میشود ولی در حالت عادی استفاده از Measure توصیه میشود. در صورتی که ملزم به ساخت ستون هستید، اگر ستونی که میسازید از نوع آمادهسازی داده است بهتر است که با زبان M و در پاورکوئری صورت بگیرد، زیرا در این صورت قبل از لود شدن دیتا این اقدامات انجام میشود و در این صورت سرعت پردازش گزارش نهایی افزایش پیدا میکند. Calculated Column در پاورکوئری قابل مشاهده نخواهد بود.
باید توجه داشته باشید دستورهایی که در Measure استفاده میکنید با Calculated Columnمتفاوت خواهند شد به دلیل همان تفاوت ذاتی محاسبه کلی Measure و سطر به سطر Calculated Column. یعنی اگر یک موضوع را بخواهید هم در ستون و هم در Measure محاسبه کنید، فرمول DAX که استفاده میکنید متفاوت خواهد بود.
ساختن Measure و Calculated Column
از دو طریق میتوانید این دو را بسازید، اولین مسیر از طریق تب Modeling است:
Modeling -> Calculation -> New Measure/Column/Table
و دومین مسیر از طریق کلیک راست در Fields Pane است که گزینههای اول و دوم آن برای ایجاد Measure و Calculated Column است.
زمانی که هرکدام را انتخاب میکنید نوار فرمول بالای صفحهی گزارش پدیدار میشود که روی آن نام Measure و Calculated Column نوشته شده است و امکان تایپ کردن فرمول را به شما میدهد.
زمانی که شروع کنید به تایپ کردن فرمول توسط IntelliSense با زدن حروف توابع DAX و یا فیلدهایی که در جدول وجود دارد را پیشنهاد میدهد و شما میتوانید کامل تایپ نکنید و با زدن دکمهی Tab روی کیبورد میتوانید تابع یا فیلد موردنظرتان را انتخاب کنید.
آشنایی با DAX
DAX زبان تحلیل در پاوربیآی است که ماکروسافت شبیه آن را در ابزارهای دیگر مانند اکسل استفاده میکند. این زبان توابع زیادی را شامل میشود، توابع فرمولهای از پیش تعریف شدهای هستند که محاسباتی را بر روی مقادیر مشخصی که Argument نامیده میشود انجام میدهند. هر تابع ساختار متفاوتی دارد که در حقیقت تفاوت در ترتیب argumentهای آن است. برای آشنایی با توابع مختلف DAX میتوانید از لینک زیر استفاده کنید.
توابع DAX را میتوان در دستهبندیهای زیر تقسیمبندی کرد:
۱-توابع زمان و تاریخ: توابعی که برای مشخص کردن مشخصات یک تاریخ خاص استفاده میشود. توابعی مانند:
- CALENDAR
- DATE
- DATEDIFF
- DAY
- NOW
- TODAY
- WEEKDAY
- YEAR
۲- توابع زمانی هوشمند: اینها توابعی هستند که برای محاسبهی مقادیری در یک بازهی مشخص به کار میروند. شما میتوانید بازهی زمانی خودتان را مشخص کنید و دو سناریوی مختلف در گزارش را با یکدیگر مقایسه کنید.
- DATEADD
- DATESBETWEEN
- DATESINPERIOD
- FIRSTDATE
- LASTDATE
- FIRSTNONBLANK
- LASTNONBLANK
۳- توابع اطلاعاتی: اینها توابعی هستند که اطلاعاتی را دربارهی مقادیر یک فیلد در اختیار ما قرار میدهند. مانند اینکه آیا این فیلد Error دارد یا نه.
- CONTAINS
- ISBLANK
- ISERROR
- ISEVEN
- ISNUMBER
- LOOKUPVALUE
۴- توابع منطقی: توابع منطقی برای ارزیابی منطقی یک عبارت یا آرگومان استفاده میشوند و در صورت وجود یا عدم وجود شرط، TRUE یا FALSE را برمیگردانند.
- AND
- OR
- IF
- IN
- NOT
- SWITCH
- IFERROR
- TRUE
۵- توابع ریاضی و مثلثاتی: توابعی که انواع توابع ریاضی را بر روی مقادیر مختلف انجام میدهد.
- ABS
- COS
- ACOS
- ASIN
- ATAN
- CEILING
- FLOOR
- COMBIN
- DIVIDE
- EVEN
۶- توابع آماری: توابع آماری و تجمیعی که بر روی مقادیر انجام میشود.
- AVERAGE
- AVERAGEA
- AVERAGEX
- COUNT
- COUNTA
- COUNTAX
- COUNTX
- DISTINCTCOUNT
- MAX
- MAXA
- MAXX
- MEDIAN
- MEDIANX
- MIN
- MINA
- MINX
۷- توابع متنی: توابعی که عملیاتی را بر روی دادههای متنی انجام میدهد.
- BLANK
- COMBINEVALUES
- CONCATENATE
- EXACT
- FIND
- FORMAT
- LEFT
- RIGHT
- LEN
- SUBSTITUTE
۸- توابع والد-فرزندی: مقادیری که دارای روابط والد فرزندی هستند را میتوان با این توابع مدیریت کرد.
- PATH
- PATHCONTAINS
- PATHLENGTH
۹- توابع جدولی: توابعی که شرایط و عملیاتی را بر روی تمام جدول اعمال میکنند. معمولا خروجی این توابع، ورودی تابع دیگری در DAX هستند.
- FILTER
- ALL
- VALUES
- DISTINCT
- RELATEDTABLE
۱۰- توابع دیگر: توابعی که در دیگر گروهها جای نمیگیرند.
- DATATABLE
- ERROR
- EXCEPT
- GROUPBY
- INTERSECT
- ISEMPTY
- TREATAS
- UNION
- VAR
برای آنکه بتوانید به تمام سوالات خود دربارهی توابع DAX پاسخ دهید، میتوانید از لینک زیر استفاده کنید