تمرین هوش تجاری
من دلایل زیادی برای به اشتراک گذاری مطالب آنلاین دارم. دلایل اصلی این است که من دوست دارم آنچه را که می دانم به اشتراک بگذارم، اما همچنین می خواهم نحوه تکمیل یک کار را برای مراجع بعدی مستند کنم. مقاله امروز من هر دوی این کادرها را علامت زده است.
چند کارمند بر اساس دوره
من این مقاله را "چند کارمند بر اساس دوره" می نامم. کارکنان به دلایل مختلف می آیند و می روند. در برخی از شرکت ها، تعداد کارکنان می تواند در طول زمان تغییر کند. از اصول استفاده شده در این مقاله می توان در موارد دیگر نیز استفاده کرد. میتواند کارکنانی در حال حرکت به داخل و خارج از بخشها، ورود و خروج پروژهها، و غیره باشند. این تکنیک همچنین میتواند برای تعیین تعداد کارکنان در مرخصی، تعداد مرخصی مرخصی، تعداد بلیط باز شده در صف پشتیبانی استفاده شود. یا هر مفهوم دیگری که دارای تاریخ شروع و پایان در جدول معاملات باشد.
دادههای نمایشی که در اینجا استفاده میکنم برای محاسبه تعداد کل کارکنانی که در هر سال به کار گرفته شدهاند استفاده میشود، اما برای هر دوره زمانی دیگر به همان اندازه خوب کار میکند.
هر بار که در گذشته این مشکل را حل کردهام، از ابتدا شروع کردهام و باید در مورد رفتار فیلترینگ مورد نیاز قبل از نوشتن DAX فکر میکردم. این آخرین باری است که این کار را انجام می دهم :-). در عوض، اکنون میتوانم دوباره اینجا را بررسی کنم تا رفتار فیلترینگ دقیق مورد نیاز را پیدا کنم.
مشکل توضیح داده شد
جدول زیر کارمندان را در نظر بگیرید. توجه داشته باشید که این یک لیست منحصر به فرد از کارمندان است و یک ستون تاریخ شروع (شروع) و پایان (خروج) وجود دارد.
هدف این است که تعداد کارمندان در یک سال معین را پیدا کنید. برای درک بهتر این موضوع، به نوارهای سبز اضافه شده در زیر نگاهی بیندازید. نوارهای سبز بازه زمانی اشتغال را پوشش می دهند.
کارمندان
همانطور که در بالا مشاهده می کنید، در سال 2019 تعداد کارکنان 4 نفر است.
1: Odele در سال 2017 شروع به کار کرد و هنوز هم مشغول به کار است
7: مارجوری در سال 2018 شروع به کار کرد و در اوایل سال 2022 ترک کرد
689: اولریک در سال 2017 آغاز شد و در سال 2020 ترک کرد
762: بلیسیا در سال 2017 شروع به کار کرد و در اوایل سال 2019 ترک کرد. او در سال 2019 شاغل بود زیرا حداقل 1 روز از آن سال آنجا بود، حتی اگر در آن سال آنجا را ترک کرد.
راه حل مشکل او
حل این مشکل با استفاده از روابط ممکن نیست. یک رابطه برای فشار دادن یک فیلتر از یک جدول (در این مورد یک جدول تقویم) به جدول دیگر طراحی شده است. استفاده از روابط در این مورد کارساز نخواهد بود، زیرا لازمه فیلتر کردن محدوده ای از تاریخ ها، بین تاریخ های شروع و پایان است.
بنابراین راه حل این است که تاریخ شروع و پایان دوره (در این مورد سال) را از جدول تقویم «برداشت» کنید و سپس از تاریخ شروع و پایان برای قرار دادن فیلترها بر روی جدول کارمندان با استفاده از فیلترهای مبتنی بر فرمول استفاده کنید – بدون نیاز به رابطه. من قصد ندارم راه حل را گام به گام بنویسم. برای آن باید ویدیو را تماشا کنید اما چیزی که در زیر نشان دادم منطق فیلتر نهایی است که مورد نیاز است و همچنین ساختار فرمول DAX. این کار باعث میشود که بعداً وقتی به راهحلی سریع و صحیح برای مشکل نیاز دارید، به اینجا مراجعه کنید.
Total Employees = VAR LastDateInPeriod = MAX ( 'Calendar'[Date] ) VAR FirstDateInPeriod = MIN ( 'Calendar'[Date] ) VAR Result = CALCULATE ( COUNTROWS ( Employees ), Employees[Commenced] <= LastDateInPeriod, OR ( Employees[Departed] >= FirstDateInPeriod, ISBLANK ( Employees[Departed] ) ) ) RETURN Result
- ۰۱/۰۴/۱۶