• مسابقه Power BI
    • اولین مسابقه Power BI
    • دومین مسابقه Power BI
  • جدیدترین مطالب آموزشی
  • تحلیل داده نرم افزاری (فنّی)
  • تحلیل داده غیرفنّی
  • دوره‌های آفلاین
  • سبد خرید
  • تماس با ما
  • حساب کاربری

سبد خرید شما خالی است.

گروه تحلیلگری
  • مسابقات Power BI
    • اولین مسابقه Power BI ایران
    • دومین مسابقه Power BI ایران
  • مطالب آموزشی
    • تمام مطالب آموزشی
    • Excel
    • Power BI
    • Power Query
    • DAX
  • مسیرهای یادگیری
    • مسیر یادگیری تحلیل داده (فنی)
    • مسیر یادگیری غیرفنّی تحلیلگر داده
  • دوره‌های آموزشی
    • مهارت‌های غیرفنّی تحلیلگر داده
    • اکسل
    • Power BI
    • Power Query
    • SQL
    • تحلیل داده با پایتون
    • سبد خرید
  • ارتباط با ما
    • تماس
    • اینستاگرام
0
حساب کاربری

مقالات

آموزش Power BI صفر تا سکو : قسمت دهم (Table Functions در DAX)

در ادامه آموزش سریالی نرم افزار Power BI به آموزش زبان DAX و توابع جدولی یا همان Table Functions در DAX می پردازیم. توابعی که خروجی آن ها یک جدول است اما در نوشتن Measure ها کاربرد بسیاری دارند.

برای بررسی انواع Table Functions در DAX از پایگاه داده AdventureWorksDW استفاده شده است. نمایی از مدل داده را در تصویر زیر مشاهده می کنید. 4 جدول شامل اطلاعات فروش، کالا، مشتریان و تاریخ در مدل بارگذاری شده است و تشکیل یک مدل ستاره ای را داده است.

Table Functions در Power BI

تابع FILTER

تابع FILTER همان طور که از اسم آن بر می آید وظیفه محدود کردن ردیف های یک جدول را به عهده دارد. این تابع یک جدول به عنوان ورودی دریافت می کند و یک جدول با ردیف های محدود شده را به عنوان خروجی بر می گرداند.

برای مثال فرض کنید که می خواهیم تعداد مشتریان دارای فرزند را استخراج کنیم. برای این منظور به صورت زیر عمل می کنیم. ابتدا جدول مشتریان را بر اساس فیلد Total Children محدود می کنیم، سپس تعداد ردیف های آن را شمارش می کنیم.

Customer With Children
FILTER(DimCustomer, DimCustomer[TotalChildren]>0)

همان طور که می دانید، خروجی این فرمول یک جدول است و تنها با ایجاد یک جدول جدید (New Table) می توان خروجی آن را مشاهده کرد. در صورت انجام این عمل جدول به طور فیزیکی در مدل ایجاد می شود در حالی که ما نیازی به این جدول نداریم.

ما تعداد ردیف های این جدول را می خواهیم نه خود جدول را! پس آن را در قالب یک جدول مجازی به تابع COUNTROWS معرفی می کنیم. تابع COUNTROWS یک جدول را به عنوان ورودی دریافت و ردیف های آن را مورد شمارش قرار می دهد. ما به جای جدول مشتریان، جدول فیلتر شده مشتریان را به این تابع معرفی می کنیم.

بیایید به مقایسه تعداد کل مشتریان با مشتریان دارای فرزند بپردازیم. ابتدا مژری ایجاد می کنیم که تعداد کل مشتریان را به ما نشان دهد.

NumberOfCustomers
NumberOfCustomers = COUNTROWS(DimCustomer)

Table Functions در DAX

حال مژری ایجاد می کنیم که تعداد مشتریان دارای فرزند را برای ما شمارش کند.

CustomerWithChildren
CustomerWithChildren = COUNTROWS ( FILTER ( DimCustomer, DimCustomer[TotalChildren] > 0 ) )

Table Functions در DAX

حال بیایید مژر های ایجاد شده را برای شغل های مختلف مقایسه کنیم.

Table Functions در DAX

ALL

تابع ALL یک تابع بسیار پرکاربرد در DAX به شمار می رود. این تابع می تواند فیلترهای اعمال شده را از سمت یک ستون، جدول یا کلیه جداول را نادیده بگیرد. فرض کنید می خواهیم درصد مشتریان دارای فرزند را به مشتریان هر رده شغلی به دست آوریم.

Pct of With Children
Pct of With Children = [CustomerWithChildren]/[NumberOfCustomers]

Table Functions در DAX

همان طور که مشاهده می کنید در شغل های مدیریت 3075 مشتری وجود دارد که 2610 نفر آن ها دارای فرزند هستند. از تقسیم این 2 عدد به یکدیگر عدد 84.88 درصد به دست می آید که نشان می دهد حدود 85 درصد مدیران دارای فرزند هستند. این مژر به راحتی با تقسیم 2 مژر بر یکدیگر به دست آمد.

حال فرض کنید می خواهیم جدولی داشته باشیم که درصد هر ردیف شغلی را به کل حساب کند. در واقع می خواهید بدانید مشتریان شما در هر رده شغلی چه درصدی از کل مشتریان را تشکیل می دهد. اینجاست که ALL به کمک شما می آید.

در واقع شما باید با تابع ALL فیلترهای اعمال شده از سمت جدول مشتریان را نادیده بگیرید.

Total
Total = COUNTROWS(ALL(DimCustomer))

نتیجه به صورت زیر قابل مشاهده است.

توابع جدولی در DAX

همان طور که مشاهده می کنید تمامی عددها برای این ستون برابرند و جمع کل را نشان می دهند. شاید از خود می پرسید این نتیجه به چه دردی می خورد؟ پاسخ این است که برای به دست آوردن درصد. کافی است شما این دو مژر را بر هم تقسیم کنید.

Pct Of Total
Pct Of Total = [NumberOfCustomers]/[Total]

نتیجه به صورت زیر قابل مشاهده است. به طور مثال شما متوجه می شوید که 16.64 درصد مشتریان شما در مشاغل مدیریتی مشغول به کار هستند.

Table Functions در DAX

VALUES

این تابع لیستی بدون تکرار از یک ستون را برمی گرداند و همان طور که قابل حدس است خروجی این تابع یک جدول است. فرض کنید می خواهیم بدانیم که چند رنگ در کالاهای ما وجود دارد.

Number OF Color
Number OF Color = COUNTX(DimProduct , DimProduct[Color])

Table Functions در DAX

همان طور که قابل مشاهده است 606 رنگ نتیجه نهایی است. نتیجه ای که مد نظر ما نیست. در واقع با این کار ما ردیف های ستون رنگ را شمرده ایم که 606 ردیف بوده است. ما باید هر رنگ را تنها یک بار در شمارش لحاظ کنیم. برای این کار کافیست از تابع VALUES استفاده کنیم.

Number OF Color
Number OF Color = COUNTROWS(VALUES(DimProduct[Color]))

توابع جدولی در DAX

در واقع با استفاده از VALUES لیستی یکتا از رنگ های موجود استخراج کرده و آن را به شمارش در آوردیم.

توجه کنید که ALL نیز رفتاری شبیه VALUES از خود بروز می دهد. در واقع ALL نیز لیستی یکتا از مقادیر یک ستون را بر می گرداند با این تفاوت که فیلتر ها را نادیده می گیرد.

در تصویر زیر می توانید مژر نوشته شده به تابع ALL را نیز مشاهده می کنید.

Number OF Color
Number OF Color With ALL = COUNTROWS(ALL(DimProduct[Color]))

Table Functions در DAX

مقایسه دو مژر نوشته شده با VALUES و ALL قابل مشاهده است. یکی به فیلتر واکنش داده و دیگری خیر! در واقع گروه دوچرخه دارای 5 رنگ است.

Table Functions در DAX

DISTINCT

این تابع نیز مانند VALUES لیستی یکتا از مقادیر یک ستون را بر می گرداند. اما تفاوت های کوچکی دارد که در مطالب بعد به آن اشاره خواهد شد. همان مثال قبل را با استفاده از تابع DISTINCT نیز می توان انجام داد. همان طور که مشاهده می کنید این تابع نیز با فیلتر در تعامل است.

Table Functions در DAX

در این مطلب با بخشی از مبحث توابع جدولی یا همان Table Functions در DAX آشنا شدید. اگر تازه به جمع ما اضافه شدید قسمت های قبلی این آموزش را از دست ندهید.

برچسب ها: Power BI صفر تا سکو
درباره حسین وثوقی

دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...

نوشته های بیشتر از حسین وثوقی
در تلگرام
کانال ما را دنبال کنید!
در اینستاگرام
ما را دنبال کنید!
مطالب زیر را حتما بخوانید
  • داده های نمونه و تمرینی برای یادگیری پاور بی آی | Power BI

    1.66k بازدید

  • تنظیم مقدار پیش فرض اسلایسر تاریخ در Power BI

    772 بازدید

  • دومین مسابقه بزرگ Power BI ایران

    1.3k بازدید

  • نمونه پروژه داده های اقتصادی با Power BI

    1.33k بازدید

  • نمونه پروژه قند مواد غذایی با Power BI

    1.34k بازدید

  • اولین مسابقه طراحی داشبورد با Power BI

    2.42k بازدید

عضویت
به دوستتان خبر دهید.
guest
تعداد ماههای سال به عدد
guest
3 نظر
قدیمی ها
جدید ها بیشترین رای
Inline Feedbacks
View all comments
غلامی فرد
غلامی فرد

سلام مهندس چرا از صفر تا سکو را ادامه نمیدین؟؟؟؟؟ یکی از بهترین مطالب سایتتون بود….. متشکر

0
پاسخ
حسین وثوقی
حسین وثوقی
نویسنده
در پاسخ به  غلامی فرد

سلام … خوشحالم که راضی بودین …
حتما ادامه میدیم
ضمن اینکه یک سری مطلب سریالی دکس هم شروع کردیم

0
پاسخ
صادق پهلوان
صادق پهلوان

ممنون که مطالب مفید رو به این خوبی و راحتی انتقال میدید.

0
پاسخ
جستجو
جستجو برای:
دسته بندی مطالب
  • Charts
  • DAX
  • Excel
  • Power BI
  • Power Query
  • تحلیل داده
  • هوش تجاری
پکیج های آموزشی
  • Data Analysis
  • Excel
  • Power BI
  • Power Query
  • Python
  • SQL
درباره گروه تحلیلگری

معتقدیم آموزش شروع یک تعهد بلند مدت است. این را از مشتریان ما سوال کنید.

اطلاعات تماس
  • تهران، خیابان مطهری، ابتدای خیابان سنایی، کوچه بیست و یکم
  • 42 12 600 - 0919 فقط تلگرام و واتساپ
  • info@tahlilgary.com
پیوندها
  • آموزش رایگان و اصولی اکسل
  • دوره رایگان آموزش Power BI | پاور بی آی
  • آموزش دستورات پایه SQL
  • آمار و تحلیل داده با پایتون
  • دومین مسابقه‌ Power BI ایران
دسته بندی محصولات
Data Analysis Excel Power BI Power Query Python SQL
wpDiscuz

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت