تحلیل داده در پاوربی‌آی

فهرست

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 پاسخ دهید، می‌توانید از لینک زیر استفاده کنید

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors